前提・実現したいこと
GASのopenByUrlのパーミッションエラーを解決したいです。
openByUrlの関数でスプレッドシートAのデータを加工して、スプレッドシートBに書き込めるようにしたいです。
GASのソースコードはスプレッドシートBに紐づいている状況で、Bで「=fetchSheets(スプレッドシートURL)」を呼ぶと下記のエラーが出ます。
GAS上ではスプレッドシートAのデータが取れていますが、スプレッドシートBで関数を呼ぶとエラーになるんですよね。
発生している問題・エラーメッセージ
Exception: You do not have permission to call SpreadsheetApp.openByUrl. Required permissions: https://www.googleapis.com/auth/spreadsheets(行 81)が発生しました。
該当のソースコード
js
1const URL = 'スプレッドシートURL'; 2const URL_ID = 'スプレッドシートURLのID'; 3function fetchSheets(URL) { 4 const ss = SpreadsheetApp.openByUrl(URL); 5 return sheets = ss.getSheets(); 6} 7 8 9function onEditCell(e){ 10 // SpreadsheetAppを使って他のSpreadsheetを参照する処理 11 var ss = SpreadsheetApp.openById(URL_ID); 12 } 13 14 function createEditTrigger() { 15 var ss = SpreadsheetApp.getActive(); 16 ScriptApp.newTrigger('onEditCell') // 先ほどのメソッド名を指定 17 .forSpreadsheet(ss) 18 .onEdit() // 変更時のトリガーに設定(目的に応じてonOpenなどに変更) 19 .create(); 20 }
スプレッドシートB
=fetchSheets("スプレッドシートURL")
appscript.json
{ "timeZone": "Etc/GMT-9", "dependencies": { }, "webapp": { "access": "ANYONE", "executeAs": "USER_DEPLOYING" }, "exceptionLogging": "STACKDRIVER", "oauthScopes": [ "https://www.googleapis.com/auth/spreadsheets.currentonly", "https://www.googleapis.com/auth/spreadsheets" ], "runtimeVersion": "V8" }
試したこと
- マニフェストのoauthScopesを追加してアクセス承認しても解決されず。
- createEditTriggerトリガーで無理やり承認させる方法?を試しても解決されず。
トリガー設定 実行関数: createEditTrigger デプロイ時に実行: Head イベントソースの選択: スプレッドシートから イベントの種類を選択: 変更時
参考URL
https://unity-yuji.xyz/spreadsheetapp-openbyid-create-not-permission-auth/
補足情報(FW/ツールのバージョンなど)
Google App Script
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/17 09:38