1. ホーム
  2. google-apps-script

[解決済み] Google Apps Script Error - そのアクションを実行するには認証が必要です。

2022-02-11 17:26:57

質問

Google Docのトークンを置き換えるApps Scriptを作成しました。このアプリスクリプトは、API実行ファイルとしてデプロイされています。アプリスクリプトのエディターで関数を実行すると、認証エラーが発生しない。しかし、私のJavaウェブアプリケーションから呼び出されたとき、認証エラーで失敗することがあります。次のようなエラーが発生します。

{
  "name": "replaceTokensInDoc",
  "done": true,
  "error": {
    "code": 3,
    "message": "ScriptError",
    "details": [
      {
        "@type": "type.googleapis.com/google.apps.script.v1.ExecutionError",
        "errorMessage": "Authorization is required to perform that action.",
        "errorType": "ScriptError"
      }
    ]
  }
}

この問題を解決するには、スクリプトエディターで関数を実行し、パーミッションを与えるだけでよいと複数の場所で読みましたが、私の場合、それは役に立ちませんでした。エディターで関数を実行すると、承認ダイアログさえ表示されないので、必要なパーミッションがすべて揃っていることになります。 たまにしか失敗しない。 どなたか、この不思議な動作の理由を教えてください。

解決方法を教えてください。

このエラーの原因は、Google Apps Script が、アクセストークン expires_in の時間が6分未満である。Apps Scriptの実行可能時間は最大6分なので、Apps Scriptの実行中にトークンが期限切れにならないようにしたいのです。これは、本番環境では大きな問題である。これは 大胆 をドキュメントに追加しました。

Google Issue Trackerにすでに作成された問題があります。同じ問題に直面している場合は、スターを付けてください。

https://issuetracker.google.com/issues/36762863

この問題が解決されるまでの回避策として、トークンの有効期限が360秒未満の場合は、トークンをリフレッシュしてください。

if (credential.getExpiresInSeconds() <= 360) {
    credential.refreshToken();
}