3

私はちょうどアドオン新しい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": "https://www.gstatic.com/images/icons/material/system/1x/receipt_black_24dp.png", 
    "primaryColor": "#4285F4", 
    "secondaryColor": "#4285F4", 
    "contextualTriggers": [{ 
     "unconditional": {}, 
     "onTriggerFunction": "getContextualAddOn" 
    }], 
    "version": "TRUSTED_TESTER_V2" 
    } 
} 

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

+0

onOpenやonEditのような[Simple Trigger](https://developers.google.com/apps-script/guides/triggers/)内でURLフェッチをトリガーしてみてください。この回避策は、この[SO投稿](https://stackoverflow.com/questions/20457847/urlfetch-in-an-event-failing) – noogui

+0

で動作していたようです。どのようにGmailのアドオンを設定するのですか?コンテキスト・トリガーしかないと思う。 –

答えて

9

UrlFetchAppサービスには、追加の有効範囲(https://www.googleapis.com/auth/script.external_request)が必要です。スコープのリストに追加してください。コードが機能するはずです。現時点では、サービスからスコープへのマッピングは十分に文書化されていませんが、ファイル>プロジェクトのプロパティ>スコープでマニフェストのoauthScopesセクションを一時的に削除し、コードの自動決定スコープを表示することで発見できます。

+1

ありがとう!これはまさに欠けていたものです。 –

関連する問題