2017-11-08 1 views
0

Ich möchte einen zeitbasierten Auslöser für mehrere Google Tabellen mithilfe von Google Apps-Skripts installieren und kann nicht herausfinden, wie dies geschieht. Ich weiß, dass diese über die Benutzeroberfläche hinzugefügt werden können, aber ich habe gehofft, einen programmatischen Weg zu finden, dies zu tun. Ich habe diesen Code versucht:So erstellen Sie zeitbasierte Auslöser in Google Tabellen

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]); 
    } 
} 

Aber wenn ich diese laufen erhalte ich die Fehlermeldung:

TypeError: Cannot find function timeBased in object SpreadsheetTriggerBuilder.

was Sinn macht, glaube ich, weil nach dem documentation, wird die SpreadsheetTriggerBuilder Klasse nicht haben Methode namens timeBased() ... Weiß jemand, wie man zeitbasierte Auslöser zu mehreren Google Tabellen hinzufügt?

Antwort

0

Kalkulationstabellen erstellen Trigger Programatically

Also ich denke, das Problem hier ist, dass Sie möchten, die Auslöser in eine Tabelle binden. Ich glaube, dass dies nur möglich ist, indem Sie die Trigger aus einem Projekt erstellen, das in der Tabelle enthalten ist, und Sie können einfach ClockTriggerBuilder verwenden.

+0

Dieser Code erstellt einen Trigger für meine aktuelle Tabelle, aber ich versuche, einen Trigger für mehrere Tabellen zu installieren. –

2

Ein zeitbasierter Trigger ist unabhängig von einem tabellenbasierten Trigger. Blattbasierte Trigger reagieren auf Ereignisse, die auf dem Blatt auftreten, z. B. wenn Sie eine Zelle bearbeiten.

Ich würde den Aufruf von forSpreadsheet in Ihrem Code-Snippet eliminieren, das Ihr Problem lösen sollte.

+0

Damit würde der Code ausgeführt, aber der Trigger würde nur für die aktuelle Tabelle gelten. Ich möchte den Trigger auf mehrere Tabellen anwenden. –

+0

@PatrickDoyle Sie müssen die Blätter, die Sie ändern möchten, in einem Array sammeln und dann über sie hinweglaufen lassen, wobei Sie inkrementell weitere zeitbasierte Trigger hinzufügen. Sie sollten in Arrays und For-Schleifen schauen. –

Verwandte Themen