2017-11-08 12 views
0

Google Apps Scriptを使用して複数のGoogleスプレッドシートに時間ベースのトリガーをインストールしたいと考えています。これらはUIを通じて追加できることはわかっていますが、私はこれを行うためのプログラム的な方法を見つけたいと考えていました。私はこのコードを試してみました:Googleスプレッドシートで時間ベースのトリガーを作成する方法

function initializeTrigger(sheetID){ 
    var sheet = SpreadsheetApp.openById(sheetID); 
    ScriptApp.newTrigger('myLibrary.myFunction') 
    .forSpreadsheet(sheet) 
    .timeBased() 
    .atHour(9) 
    .everyDays(1) 
    .create(); 
} 

function installMultipleTriggers(){ 
    var sheetList = [sheetID1, sheetID2, sheetID3]; 

    for (var i = 0; i < sheetList.length; i++) 
    { 
    initializeTrigger(sheetList[i]); 
    } 
} 

をしかし、私はこれを実行すると、私はエラーが表示さ:documentationによると、SpreadsheetTriggerBuilderクラスが持っていないため、

TypeError: Cannot find function timeBased in object SpreadsheetTriggerBuilder.

私は推測理にかなっていますtimeBased()という名前のメソッド...誰かが時間ベースのトリガーを複数のGoogleスプレッドシートに追加する方法を知っていますか?

答えて

0

スプレッドシートを作成します。だから私はここでの問題は、あなたがスプレッドシートにトリガを結びたいということだと思い、プログラムで

トリガします。私はそれを行う唯一の方法は、スプレッドシートに含まれているプロジェクトからトリガーを作成することであり、ClockTriggerBuilderを使うことができると信じています。

+0

このコードは現在のスプレッドシートにトリガーを作成しますが、複数のスプレッドシートにトリガーをインストールしようとしています。 –

2

時間ベースのトリガーは、シートベースのトリガーとは独立しています。シートベースのトリガーは、シート上で発生するイベントに応答します(たとえば、セルを編集した場合)。

あなたの問題を解決するはずのコードスニペットでforSpreadsheet呼び出しを削除します。

+0

これはコードを実行させるでしょうが、トリガは現在のスプレッドシートにのみ適用されます。私は複数のスプレッドシートにトリガを適用したいと思います。 –

+0

@PatrickDoyle変更したいシートを配列に集めてループオーバーする必要があります。時間ベースのトリガーを段階的に追加する必要があります。 ArraysとForループを調べる必要があります。 –

関連する問題