1

その例に従って、Google Apps スクリプトで Pingdom APIにアクセスしようとしています: https://developers.google.com/apps-script/external_apis

query = 'credits';
var username = 'foo';
var password = 'bar';
var credentials = username+':'+password;
var url = 'https://'+credentials+'@api.pingdom.com/api/2.0/'+encodeURIComponent(query);
var headers = {
  "App-Key": "abcd",
};
var options = {
    "method": "get",
    "headers": headers,
    'validateHttpsCertificates':false
};
Logger.log(url);
var response = UrlFetchApp.fetch(url);

コードの実行は、次のエラーで中断します。

予期しないエラー: https://foo:bar@api.pingdom.com/api/2.0/credits (17 行目、ファイル「コード」) 却下

上記の URL をコピーしてブラウザーに貼り付けると機能します (つまり、適切に提供されたユーザー名とパスワードを確認する pingdom API から「Missing application key」を取得しています。そうしないと、無効な資格情報エラーが発生します)。encodeURIComponentonの有無にかかわらず試してみましcredentialsたが、同じエラーが発生します。'muteHttpExceptions':trueどちらも役に立ちません。

エラーの原因は何ですか?

4

2 に答える 2

5

URL にログイン情報を含めると、UrlFetchApp でエラーが発生しているようです。Issue Trackerにバグを報告してください。それまでの間、ログイン情報を Authorization ヘッダーに入れれば、正しく機能するはずです。

var response = UrlFetchApp.fetch(url, {
  headers: {
    'Authorization': 'Basic ' + Utilities.base64Encode(username + ':' + password)
  }
});
于 2013-06-05T00:13:01.983 に答える