8

Google Apps Scriptを介して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を試しましたが、機能しませんでした。間違って実行していた可能性があります。この問題をどのように克服できるかについての提案はありますか?
ありがとう。

4

2 に答える 2

8

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."}
于 2012-12-07T03:18:32.163 に答える
5

これは私にとってはうまくいきました、基本的にはこの行を追加するだけです:

var urlEncoded = encodeURI(url);

その後、電話します

UrlFetchApp.fetch(urlEncoded);

于 2019-03-05T11:23:16.757 に答える