webdevqa.jp.net

GmailアドオンでUrlFetchAppを使用した権限エラー

新しいGmailアドオンを作成しようとしていますが、次のエラーメッセージが表示されます。

「フェッチを呼び出す権限がありません」

これは、スクリプトエディターでアドオンをテストするとき、およびGmail内にデプロイするときに発生します。コードのサンプルは次のとおりです。

function getContextualAddOn(e) {
    var API_KEY = 'TESTKEY';
    var URL = 'https://[REDACTED]';
    var options = {
        'method' : 'post',
        'contentType': 'application/json',
        'headers': {
            'x-api-key': API_KEY
        },
        'payload' : JSON.stringify({ 'foo': 'bar' })
    };

    var response = UrlFetchApp.fetch(URL, options);

    [more code that builds a card] 
}

ご覧のとおり、これはUrlFetchApp.fetchの非常に簡単な使用法です。私はAppsScriptを初めて使用するため、マニフェストにいくつかのアクセス許可宣言またはスコープがない可能性があります。 UrlFetchApp.getRequestを使用してさらに簡単な例を試しましたが、"getRequestを呼び出す権限がありません"でも失敗しました。

アドオンのマニフェストは、例と同じです。

{
  "timeZone": "America/New_York",
  "dependencies": {
  },
  "exceptionLogging": "STACKDRIVER",

  "oauthScopes": [
    "https://www.googleapis.com/auth/gmail.addons.execute",
    "https://www.googleapis.com/auth/gmail.addons.current.message.readonly",
    "https://www.googleapis.com/auth/userinfo.email"
  ],
  "urlFetchWhitelist": [
    "https://[REDACTED]"
  ],
  "gmail": {
    "name": "Test Add-On",
    "logoUrl": "some url",
    "primaryColor": "#4285F4",
    "secondaryColor": "#4285F4",
    "contextualTriggers": [{
      "unconditional": {},
      "onTriggerFunction": "getContextualAddOn"
    }],
    "version": "TRUSTED_TESTER_V2"
  }
}

UrlFetchAppはGmailアドオン内で許可されることになっていますか、それともこれは単なるバグですか?マニフェストに何かを追加したり、スクリプトエディタで他のオプションを有効にしたりする必要がありますか?

11
Andrew Goldberg

UrlFetchAppサービスには、追加のスコープhttps://www.googleapis.com/auth/script.external_requestが必要です。スコープのリストに追加すると、コードが機能するはずです。

各AppsScriptメソッドに必要なスコープは、リファレンスドキュメントの「承認」セクションに記載されています( )。または、マニフェストのoauthScopesセクションを一時的に削除し、ファイル>プロジェクトプロパティ>でコードの自動決定されたスコープを表示することで、スクリプトに必要なスコープを見つけることができます。スコープ。 (マニフェストでスコープを定義すると、Apps Scriptの「スコープの自動検出」動作が無効になります。)

参考文献

21
Eric Koleda