Meine Firma hat ein Google Form-Formular erstellt, um einen unserer Prozesse erheblich zu vereinfachen. Das Google-Formular basiert auf der Master-Tabelle, die alle vom Formular eingegebenen Daten enthält. Diese Tabelle filtert dann die Formularübergabe heraus und sendet die Daten an die Tabelle jeder Abteilung, die, wie zuvor erwähnt, alle Informationen aus der "Master-Tabelle" erhält.Senden von E-Mail-Benachrichtigungen Google Sheets
Wir hatten es zuvor eingerichtet, also würden Mitarbeiter, die diese Anfragen in ihre Tabellenkalkulation aufnehmen oder ablehnen oder bestätigen, eine E-Mail-Benachrichtigung erhalten, wenn jemand "Genehmigt" oder "Verweigert" eingegeben hat. Kürzlich haben wir es so geändert, dass, wenn eine bestimmte Person eine Anfrage für einen Kunden eingereicht hat, diese automatisch genehmigt wird, aber wenn wir dies getan haben, funktioniert die E-Mail-Benachrichtigung nicht mehr, weil niemand manuell für diese Anfragen "Genehmigt" oder "Verweigert" eingibt. Es funktioniert immer noch, wenn es manuell eingegeben wird, aber wenn die Zelle automatisch ausgefüllt wird, funktioniert die sendNotification nicht.
Da in die einzelnen Abteilungsdatenblätter keine tatsächlichen Daten eingegeben werden, wollten wir den Benachrichtigungstrigger auf das "Master Sheet" setzen, aber wir haben eine Menge Zeit, die E-Mail-Benachrichtigung zu senden. Grundsätzlich wollen wir es so, wenn irgendeine Zelle in "Spalte F" eine bestimmte Liste von E-Mail-Adressen enthält, wird sie eine E-Mail an eine dritte Partei senden, die sie darüber informiert, dass sie tatsächlich fortfahren und die Änderungen vornehmen soll.
Hier ist, was wir bisher haben. Beachten Sie, dass dies der Code ist, der ursprünglich funktioniert hat. Ich habe viele verschiedene Variationen der Dinge ausprobiert und haben überhaupt kein Glück gehabt, aber ich bin nicht der gebildetsten Coder:
function sendNotification() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Form Responses 3");
//Get Active cell
var mycell = ss.getActiveSelection();
var cellcol = mycell.getColumn();
var cellrow = mycell.getRow();
var cellValue = mycell.getValue();
var activeUser = Session.getActiveUser();
var recipients = "[email protected]";
var subject = "Update to "+ss.getName();
var body = activeUser + " has marked row " + cellrow + " \"" + cellValue + "\" in \"" + ss.getName() + "\". Visit " + ss.getUrl() + " to view the changes.";
if (cellcol == 2) {
if (cellValue.indexOf('[email protected]') >= 0) {
var subject = "Lunch Is Served";
Logger.log('Sending approval notification of row ' + cellrow + ' to ' + recipients);
MailApp.sendEmail(recipients, subject, body);
}
}
}
Bitte beachten Sie, dass wir lastRowNumber nicht (zumindest verwenden kann ich didn‘ Ich denke, wir könnten) weil wir bereits mehr als tausend Zeilen aufgelistet haben, so dass die Informationen automatisch in das Array einfließen. Schließlich ist unser aktueller Trigger auf "On Form Submission" gesetzt, weil wir wollen, dass diese E-Mails wie die Formulare eintreffen eingereicht.
Ich habe eine Beispiel-Tabelle für Sie Jungs enthalten, um zu sehen. Bitte verwenden Sie [email protected] als Ihre E-Mail-Adresse, wenn Sie das Formular ausfüllen.
Das Google Blatt kann auf der folgenden Website zu finden: Test Sheet!
Vielen Dank und ich freuen uns auf Ihre Antworten auf das Lesen!
Vielen Dank für Antwort @Sandy Gut. Die einzige Sache ist, dass, wenn ich versuche, diesen Code auszuführen, es mir diese Fehlermeldung gibt: "TypeError: Kann Eigenschaft" -Werte nicht von undefined lesen. (Zeile 8, Datei "Code") "Haben Sie irgendwelche Empfehlungen zu diesem Thema ? Ich habe übrigens ein neues Skript unter Ihrem Namen auf dem Blatt erstellt, wenn Sie es noch einmal ansehen wollten. Wäre es nicht e.values [5] statt [4], da es sich um die fünfte Frage handelt, die auf dem Formular gestellt wird? Es tut mir leid, dass ich in diesem Zeug noch ganz neu bin. – dhjeffery89
Noch eine Sache, wir haben unser normales Blatt eingerichtet, um automatisch Ihren Benutzernamen zu protokollieren, was "Spalte B" in unserer tatsächlichen Tabelle ausfüllt und was wir in unserer E-Mail-Benachrichtigung verwenden wollten. Ich habe es eingerichtet, um die Frage auf dem Blatt so zu stellen, weil es mich nicht eine Option wählen ließ, um den Benutzernamen automatisch zu loggen. Nochmals vielen Dank, dass du mir geholfen hast. – dhjeffery89
Das Objekt 'e' ist nicht definiert, wenn Sie den Code im Code-Editor ausführen. Die einzige Möglichkeit, mit der ein Objekt an ein Objekt "e" übergeben wird, ist das Senden des Formulars, und diese Funktion ist die Funktion für den Trigger "Einreichen". Die Werte im Array haben einen auf Null basierenden Index. Der erste Wert hat einen Index von Null. –