2017-01-11 1 views
0

Ich habe ein Google-Blatt, das eine automatische Aktualisierung der IMPORTXML-Funktion auf einem zeitgesteuerten Trigger hat und versuche, ein Skript zu schreiben, das automatisch eine Benachrichtigungswarnung sendet, wenn eine Zeile mit einem " HILFE "Nachrichtentyp.onChange Trigger funktioniert nicht wie erwartet

Ich kompilierte dieses Skript anhand einiger Beispiele, die ich gefunden habe. Ich habe es getestet und es funktioniert gut mit manuell eingegebenen Daten mit einem installierbaren onEdit-Trigger, aber von meinen Tests (und basierend auf Forschung) muss ich den onChange-Trigger verwenden, damit das IMPORTXML das Skript auslöst.

Wenn ich jedoch das Skript auf einen installierbaren onChange-Trigger einstelle, scheint das Skript nicht automatisch mit den IMPORTXML-Ladedaten ausgeführt zu werden oder manuell auf dem Blatt einzugeben.

Bin ich eine Einschränkung von Good Apps Script? Dies ist mein erstes Mal mit (und JavaScript)

function helpAlertEmail(e) 
{ 
    if (e.range.columnStart !== 5 || e.value !== 'HELP' && e.value !== 'HELP-CANCEL') return; 
    var ss = e.source.getActiveSheet() 
    var details = ss.getRange(e.range.rowStart, 1, 1,11).getValues()[0]; 
    var headers = ss.getRange(1, 1, 1, 11).getValues()[0]; 
    var subject = "SPOT BEACON ALERT: " + details[2] + " Sent a " + details[4] + " Message at " + details[9]; 
    var body = "SPOT Beacon " + details[2] + " (" + details[1] + ") Sent a " + details[4] + " Message at " + details[9] + "\n\n"; 
    var email = "[email protected]"; 
    var cols = [0, 4, 5, 6, 9, 10]; 

    for (var i = 0; i < details.length; i++) 
    { 
    if (cols.indexOf(i) === -1) continue; 
    body += headers[i] + ": " + details[i] + "\n" 
    } 

    body += "\n\n\n Please do not respond to this email as it is automatically generated by an account that is not checked."; 
    MailApp.sendEmail(email, subject, body, {noReply:true}); 
} 

Antwort

1

Von was ich von Ihrer Erklärung über den Anwendungsfall zu verstehen, würde Ich mag Dich, dies wissen:

1) onEdit - Gibt ein Auslöser, der ausgelöst wird, wenn die Tabelle bearbeitet wird.

2) onChange - Gibt einen Trigger an, der ausgelöst wird, wenn der Inhalt oder die Struktur des Arbeitsblatts geändert wird.

Dies sind die von Google angegebenen Bedingungen.

Nun, was es uns nicht sagt, ist:

1) Die bearbeiten muss sein Handbuch

Nun sagen Sie, Sie sowohl manuell als auch versucht, aber der Auslöser nicht Feuer. Ein möglicher Grund dafür ist, dass Sie die Daten möglicherweise von irgendwo kopiert und dann dort eingefügt haben, wo Sie möchten. Sie können also in diesem Fall nicht erwarten, dass der Auslöser ausgelöst wird.

2) Die Bearbeitung kann keine Form der Automatisierung sein (es kann nicht mit einer Tabellenkalkulationsformel oder mit einem Skript durchgeführt werden). Auch in diesem Fall würde der Auslöser nicht ausgelöst werden.

Also, in allem, was Sie vor Augen haben, ist keine Konsequenz der Einschränkungen von Google angegeben. Leider ist es das, was es ist.

Was Sie tun müssen, ist, denken Sie an einen anderen Weg, um zu gehen, was Sie versuchen zu erreichen, die, verwenden Sie etwas anderes außer dem onChange und die onEdit Auslöser ist.

Verwandte Themen