【问题标题】:Invalid Argument with UrlFetchUrlFetch 的参数无效
【发布时间】:2012-12-07 02:05:24
【问题描述】:

我正在尝试通过 Google Apps 脚本运行 MongoLab(基于 REST 的 MongoDB 访问)查询。从记录器生成的 URL 如下所示
https://api.mongolab.com/api/1/databases/abcd/collections/efgh?apiKey=XXXXXXXXXXXXXXXX&q={"created_on":{"$gte":"Thu Dec 06 00:00:00 PST 2012","$lt":"Thu Dec 06 23 :59:59 PST 2012"}}
当我在浏览器中键入它时,它会起作用并得到我正在寻找的响应。但是通过 UrlFetchApp 运行它会出现“无效参数”错误。我看到有几篇相同的帖子,但没有找到适合我的答案。 Javascript代码如下

//start and end are JS date objects  
var query = { created_on : {'$gte': start, '$lt' : end} };
var url = MONGO_LAB_URLS.MAIN + "&q=" + Utilities.jsonStringify(query);  
Logger.log("Query URL : " + url);  
var response = UrlFetchApp.fetch(url);  

我尝试了 encodeURIComponent,但它不起作用 - 可能是我做错了。关于如何克服这个问题的任何建议?
谢谢。

【问题讨论】:

    标签: google-apps-script urlfetch


    【解决方案1】:

    出现无效参数,因为您在 URL 参数中发送了无效字符。您应该先对参数进行编码。

    我修改了您的代码并尝试运行。但它仍然失败,因为无效的 API 密钥很明显。您可以使用有效的 API 密钥尝试此代码。

    //start and end are JS date objects
      MONGO_LAB_URLS = 'https://api.mongolab.com/api/1/databases/abcd/collections/efgh?apiKey=XXXXXXXXXXXXXXXX&q=';
      var start = 'Thu Dec 06 00:00:00 PST 2012';
      var end = 'Thu Dec 06 23:59:59 PST 2012';
    
      var query = { created_on : {'$gte': start, '$lt' : end} };
      var url = MONGO_LAB_URLS + encodeURIComponent(Utilities.jsonStringify(query));  
      Logger.log("Query URL : " + url);  
      var response = UrlFetchApp.fetch(url);
      Logger.log(response);
    

    我得到的回应是

    Request failed for https://api.mongolab.com/api/1/databases/abcd/collections/efgh?apiKey=XXXXXXXXXXXXXXXX&q=%7B%22created_on%22%3A%7B%22%24gte%22%3A%22Thu%20Dec%2006%2000%3A00%3A00%20PST%202012%22%2C%22%24lt%22%3A%22Thu%20Dec%2006%2023%3A59%3A59%20PST%202012%22%7D%7D returned code 400. Server response: { "message" : "Please provide a valid API key."}
    

    【讨论】:

      【解决方案2】:

      This 为我工作,基本上只需添加这一行:

      var urlEncoded = encodeURI(url);

      然后调用

      UrlFetchApp.fetch(urlEncoded);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-07-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多