2016-05-18 2 views
3

Ich habe ein Skript, das Fehlerberichtdaten aus unserem CMS extrahiert, ein monatliches Archivblatt erstellt und es als neues Tab an ein anderes Google-Blatt anfügt. Der Blattname der neuen Arbeitsmappe lautet "Blatt1" und die neuen Registerkarten, die erstellt werden, sind März, April, Mai usw. Ich muss unser Team beraten, wenn am 1. jedes Monats ein neues Blatt hinzugefügt wird (ich weiß, dass es jeder weiß) der erste des Monats, aber sie daran zu erinnern, sich das neue Blatt anzusehen, ist sehr schwer!).Senden Sie eine E-Mail, wenn ein neues Blatt zu einer Google-Arbeitsmappe hinzugefügt wird

Ich kam in diesem Skript: How do I set up notifications for when a new sheet is added in Google Sheets?

Ich habe das Blatt Namenszeile geändert; var Blatt = ss.getSheetByName ('Sheet1'); und die E-Mail-Adresse. Das Skript funktioniert, wenn ich es manuell ausführe. Zelle A1 erhöht sich jedes Mal um eins und ich erhalte eine E-Mail. Wenn ich jedoch das Skript im CMS-Fehlerbericht aktualisiere, erstellt es die neue Registerkarte mit dem Namen des Monats, löst jedoch nicht die Funktion "Benachrichtigen" aus. Ich habe nur den einen Auslöser: benachrichtigen/aus der Tabelle/Bei Änderung.

Ich glaube, ich muss etwas auf dem Blatt Namensgebung verpasst haben, kann aber nicht sehen, was es ist.

Antwort

0

Auslöser werden durch Benutzeraktionen ausgelöst. Skriptaktivität feuert sie nicht ab. Sie können dies mit dem folgenden Testskript sehen, wobei "doSomething" ein Blatt einfügt und displayEvent die Ereignisse in einer Browsernachricht anzeigt. Legen Sie einen onChange-Trigger für displayEvent fest: das manuelle Einfügen eines Blattes löst das aus, aber "doSomething" wird nicht ausgeführt.

function doSomething() { SpreadsheetApp.getActiveSpreadsheet().insertSheet(); } 
function displayEvent(e) { Browser.msgBox(JSON.stringify(e)); } 

Als Abhilfe können Sie das Skript festgelegt in einigen Zeitintervallen zu laufen, anstatt durch einen Trigger (15 Minuten, zum Beispiel). Übrigens, anstatt die Zelle A1 zu verwenden, um die Anzahl der Blätter zu speichern, kann diese Nummer in den Skripteigenschaften gespeichert werden. Hier ist wie:

function notify() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var scriptProperties = PropertiesService.getScriptProperties(); 
    var numSheets = scriptProperties.getProperty('Sheets'); 
    if (numSheets > 0 && ss.getSheets().length > numSheets) { 
    MailApp.sendMail('someone', 'subject', 'new sheet') 
    } 
    scriptProperties.setProperty('Sheets', ss.getSheets().length); 
} 
Verwandte Themen