スクリプトエディタでスクリプトを作成し、「API実行可能ファイルとしてデプロイ」として公開しました。このスクリプト内で、シートにdoc_idを提供し、そのシートからデータを取得する関数を定義しました。
次に、 https://developers.google.com/apps-script/execution/rest/v1/scripts/run にアクセスして実行APIをテストしました。スコープを追加し、アプリを承認して試してみました。次のエラーメッセージが表示されます。
"error": {
"code": 403,
"message": "The caller does not have permission",
"status": "PERMISSION_DENIED"
}
誰かが私が間違っていることを教えてもらえますか?
アプリスクリプトが正しい開発コンソールプロジェクトに関連付けられていることを確認してください。
スクリプトは、OAuth 2.0クライアントIDを使用)に対応する開発コンソールプロジェクトIDに関連付ける必要があります(この開発コンソールプロジェクトでは、「Apps ScriptExecutionAPI」も有効にする必要があります)。
アプリスクリプトの開発者コンソールプロジェクトを変更するには、次のメニュー項目を選択します。リソース>開発者コンソールプロジェクト...
この画面で、開発コンソールのプロジェクト番号を入力します。
すべてが正常であっても、"devMode":true
によってそのエラーを取得できます。このおかげで、他のユーザーのために展開しようとしたときに半日を無駄にしました。
将来の参考のために。
プロジェクトのエディターとしてサービスアカウントユーザーを追加するだけです
追加するサービスアカウントからのメールは次のようになります{project-name}@{project-name}.iam.gserviceaccount.com
私はあなたの提案をすべて混ぜ合わせました。さらに、プロジェクトの「廃止されていない」IDを使用する必要がありました。スクリプトを公開すると、所有者がルーチンを実行している限り、Google Chrome(Edgeで試してみると失敗します)内でのみ使用していたIDが表示されます。公開して別のユーザーで試してみると、機能しなくなります。スクリプトを開き、ファイル/プロジェクトのプロパティに移動して、代わりに長いスクリプトIDをコピーします。ルーチンはどのユーザーでも機能し始めます。次の画像では、赤で下線を引いています。開発者だけで機能するキー、および緑色ですべてのユーザーで機能するキー(目的に応じてカットされており、私の環境はスペイン語であるため、実際の翻訳オプションは異なる場合があります、申し訳ありません)
要約する価値があると思います。
基本的に、これらは、スクリプトを起動して実行するために従う必要のあるすべての必要な手順です。それが役に立てば幸い。最後に、失敗したときと成功したときに私が見たものを見てほしい:
ありがとうございました!
私もエラーに直面し、すべてが一致して関連付けられていました...しばらく調査した後、シートはリンクで共有する必要がありますであることがわかりました。これはgoogleapisv4の制限です。
同じ権限の問題があり、Googleスプレッドシートのステータスを公開に変更することで解決しました。これで、GETメソッドを使用してデータを読み取ることができます