3

テンプレート スプレッドシートをコピーするスクリプト (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 トリガーをプログラムでインストールすることは可能ですか?

よろしくお願いします

トレバー・ストー

4

1 に答える 1

0

私はこれと同じ種類の取引を行ったところです。承認なしでこれを実現する「簡単な」方法はないと確信しています。

「createSpreadsheetEditTrigger」スクリプトをボタンに割り当てて、トリガーをインストールするだけですべてを同時に承認することができますが、3 クリックと 5 秒で、意図したとおりに機能します。

于 2015-06-25T14:50:29.897 に答える