テンプレート スプレッドシートをコピーするスクリプト (A) があります。このテンプレート スプレッドシートには、script(B) が含まれています。テンプレート スプレッドシートとスクリプトは、プログラムによって正常にコピーされ、他のユーザーと共有されます。テンプレート スクリプトは、onEdit() トリガーを使用して 3 番目のスプレッドシートを変更する必要があります (テンプレート スプレッドシートのコピーの編集は、3 番目のスプレッドシートに同期されます)。単純なトリガーには、3 番目のスプレッドシートにアクセスする権限がありません。インストール可能なトリガーを使用してみましたが、インストール可能な onEdit トリガーをコピーしたスプレッドシートで機能させることに成功しませんでした。
私が達成したいのは、コピーされたスプレッドシートに、3 番目のスプレッドシートに書き込むための個別の承認を必要としない onEdit トリガーを設定することです。
すべてのスプレッドシートは、1 人のユーザーが所有しています。
スクリプト A で次のコードを使用して、スクリプト B でインストール可能なトリガーを作成できます。
createSpreadsheetEditTrigger(id_of_shared_spreadsheet)
...
...
function createSpreadsheetEditTrigger(idss) {
var ss = SpreadsheetApp.openById(idss);
ScriptApp.newTrigger('myOnEdit')
.forSpreadsheet(ss)
.onEdit()
.create();
}
「myOnEdit」関数はスクリプト B にあり、3 番目のスプレッドシートに同期するコードが含まれています。これは、コピーされたスプレッドシートが編集された場合にはトリガーされません。
単純な onOpen() 関数から呼び出してスクリプト B でインストール可能なトリガーを作成すると、アクセス許可が原因で失敗します。
次のアドバイスに従ってください:実行に失敗しました: getProjectTriggers を呼び出す権限がありません。 インストール可能なトリガーとそれを呼び出すメニュー項目を作成できます。さらに、ユーザーにインストールをクリックしてトリガーを承認するように求めるメッセージ ボックスを作成できます。
ユーザーがトリガーを手動で承認することなく、3 番目のスプレッドシートを編集する権限を持つスプレッドシートをコピーするときに、onEdit トリガーをプログラムでインストールすることは可能ですか?
よろしくお願いします
トレバー・ストー