Senden Sie E-Mail, wenn value-änderungen in der Google-Tabelle
Ich versuche herauszufinden, ist, wie die folgenden in Google Spreadsheet.
- E-Mail senden, wenn ein Wert geändert wird, in eine Zelle. (Wert = Abgeschlossen).
- Kompilieren, dass Zeilen, die Daten in der E-Mail. Siehe format im code unten.
- Auffordern Benutzer zur Bestätigung der info.
- Wenn JA, senden Sie E-Mail für aktive Benutzer, sowie die Voreinstellung der Benutzer im code unten.
- Dies ist optional: Update-Blatt in der Zeile auf Spalte (P) 16 mit E-Mail Gesendet + Zeitstempel.
Hallo Serge,
Versuchen zu implementieren Sie den code, den Sie, aber ich könnte nicht machen, Kopf oder Zahl, was zu ändern, um zu passen, was ich brauchte getan.
Lassen Sie mich das mal erklären mit unter-workflow.
Senden Sie eine E-Mail, wenn ändert sich der Wert für die Spalte K.
Teilweise Beispielcode zu beobachten, Spalte K
var sheetNameToWatch = "Active Discs";
var columnNumberToWatch = 14; //column A = 1, B = 2, etc.
var valueToWatch1 = "Completed";
var valueToWatch2 = "in progress";
try{
var ss = e.source;
var sheet = ss.getActiveSheet();
var range = e.range;
if (sheet.getName() == sheetNameToWatch && range.columnStart ==
columnNumberToWatch && e.value == valueToWatch)
var confirm = Browser.msgBox
('Email will be sent Team X. Do you want to sent this email?', Browser.Buttons.YES_NO);
if(confirm!='yes'){return};
//if user click NO then exit the function, else move data
Die E-Mail wird enthalten den angegebenen Werten der jeweiligen Zeile. Ex. Die Werte in den Spalten A, B, C, D, E, F, G, H, I, J.
//Email to be sent if **Inprogess** value is a match:
Var sendEmailTeamA(){
var ProjectName = e.values[0];
var ProjectId = e.values[1];
var ProjectManager = e.values[3];
var Sales = e.values[4];
var Client = e.values[5];
var DiscType = e.values[6];
var DVDFlash = e.values[7];
var Phase = e.values[8];
var Encryption = e.values[9];
var Qty = e.values[11];
var DueDate = e.values[12];
var SpecialInstructions = e.values[13];
var emailAddress = '';
var subject = "DVD Request - " + ProjectName + " " + ProjectId;
var emailBody = "Hi Venue Colombo Team,"
"\n\nThe following data room(s) will need a disc creation. Please begin bulk save data room and create ISO to upload to the FTP site: " +
"\nProject Name: " + ProjectName +
"\nProject ID: " + ProjectId +
"\nProject Manager: " + ProjectManager +
"\nPhase: " + Phase +
"\nDisc Type: " + DiscType +
"\nEncryption: " + Encryption +
"\nQuantity: " + Qty +
"\nClient Due Date: " + DueDate +
"\nSpecialInstructions: " + SpecialInstructions;
var htmlBody = "Thank you for your <b>Club Ambassador Program</b> report submitted on <i>" + timestamp +
"</i><br/> <br/>Person Show Submitted this email: " +
"<br/><font color=\"red\">Your Name:</font> " + activeSessionuser +
"<br/>Your Email: " + toAddress;
var optAdvancedArgs = {name: "Club Ambassador Program", htmlBody: htmlBody};
MailApp.sendEmail(emailAddress, subject, emailBody, optAdvancedArgs);
}
//Email to be sent if **“Completed”** value is a match:
Var sendEmailTeamB() {
var ProjectName = e.values[0];
var ProjectId = e.values[1];
var ProjectManager = e.values[3];
var Sales = e.values[4];
var Client = e.values[5];
var DiscType = e.values[6];
var DVDFlash = e.values[7];
var Phase = e.values[8];
var Encryption = e.values[9];
var Qty = e.values[11];
var DueDate = e.values[12];
var SpecialInstructions = e.values[13];
var emailAddress = '';
var subject = "DVD Request - " + ProjectName + " " + ProjectId;
var emailBody = "Hi Venue Colombo Team,"
"\n\nThe following data room(s) will need a disc creation. Please begin bulk save data room and create ISO to upload to the FTP site: " +
"\nProject Name: " + ProjectName +
"\nProject ID: " + ProjectId +
"\nProject Manager: " + ProjectManager +
"\nPhase: " + Phase +
"\nDisc Type: " + DiscType +
"\nEncryption: " + Encryption +
"\nQuantity: " + Qty +
"\nClient Due Date: " + DueDate +
"\nSpecialInstructions: " + SpecialInstructions;
var htmlBody = "Thank you for your <b>Club Ambassador Program</b> report submitted on <i>" + timestamp +
"</i><br/> <br/>Person Show Submitted this email: " +
"<br/><font color=\"red\">Your Name:</font> " + activeSessionuser +
"<br/>Your Email: " + toAddress;
var optAdvancedArgs = {name: "Club Ambassador Program", htmlBody: htmlBody};
MailApp.sendEmail(emailAddress, subject, emailBody, optAdvancedArgs);
}
Dieser workflow gilt für die Spalten K, L, M, N, O. E-Mail wird an die voreingestellte E-Mail-Adressen im code. Ich hoffe das erklärt es ein bisschen besser. Ich danke Ihnen nochmals für Ihre Zeit und Hilfe.
- Ich würde gerne, um Ihnen einen vollständigen code, aber es ist definitiv zu viel Arbeit, eine Tabelle zu erstellen von Grund auf mit allen notwendigen Werte, um das Ergebnis testen... könnte man vielleicht teilen SS, auf die ich(wir) testen kann code ?
- Hier der eigentliche test Blatt. docs.google.com/spreadsheet/...
- Ich werde wieder online sein am Sonntag, um auf diese Arbeit mit Ihnen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kann ich für den Einstieg:
Ich habe gerade ein script geschrieben, das diese Art der Sache, aber ich wollte es halten Sie ein Auge auf alle änderungen in der Platte, aber das senden einer Nachricht nur einmal pro Stunde zur Vermeidung von Spam mein Postfach.
Das Skript hat 2 Funktionen, eine, die speichert die änderungen und speichert im text-format und eine zweite, die sendet E-Mail, wenn jede änderung aufgetreten ist in der letzten Stunde.
Die erste Funktion wird aufgerufen, grabData und muss ausgelöst werden durch eine onEdit installierbare auslösen und wie das geht :
Andere Funktion hat einen timer auslösen, ich legen Sie es auf Feuer, jede Stunde, aber Sie können es ändern, um die beste Passform.
nachdem eine mail verschickt wurde, werden die gespeicherten Daten gelöscht. Keine E-mail wird gesendet, wenn keine Veränderung zu verzeichnen war.
Können Sie auch feststellen, dass ich 2 verschiedene Benutzer und 2 verschiedene Speicher-Plätze, so dass jeder von Ihnen sehen kann, was der andere tut, ohne Kenntnis für eigene Modifikationen.
Da beide Funktion verwenden installierbare löst, wird dies führen Sie auf Ihrem Konto, so vorsichtig, nicht zu explodieren, Ihre Quoten wenn Sie den timer auf eine sehr kurze Zeit.