Envoyer un message lorsque les changements de la valeur dans la feuille de calcul Google

Je suis en train d'essayer de comprendre comment effectuer les opérations suivantes dans la feuille de calcul Google.

  1. Envoyer un email lors de la modification d'une valeur dans une cellule. (Valeur = Terminé).
  2. Compiler que les lignes de données dans l'e-mail. Voir le format dans le code ci-dessous.
  3. Invite l'utilisateur à des fins de confirmation de l'info.
  4. Si OUI, envoyez un courriel à l'utilisateur active ainsi que le preset utilisateurs dans le code ci-dessous.
  5. C'est facultatif: mise à Jour de fiche en ligne sur la colonne (P) 16 avec l'e-Mail Envoyé + timestamp.

Salut Serge,

Essayer de mettre en œuvre le code que vous avez fourni, mais je ne pouvais pas faire des têtes ou queues sur ce qu'il faut modifier pour l'adapter à ce que je devais faire.

Laissez-moi vous expliquer nouveau avec ci-dessous de flux de travail.

Envoyer un e-mail lors de la modification de la valeur de la colonne K.

Partielle, un Exemple de code pour regarder la colonne 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

L'e-mail contient les valeurs spécifiées de cette ligne spécifique. Ex. Les valeurs dans les colonnes 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/>&nbsp;<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/>&nbsp;<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);
}

Ce flux de travail s'appliquent aux colonnes K, L, M, N, O. Email sera envoyé à la présélection des adresses de courriel dans le code. J'espère qu'il explique un peu mieux. Je vous remercie encore pour votre temps et votre aide.

J'aimerais vous donner un code complet, mais il est certainement trop de travail pour créer une feuille de calcul à partir de zéro avec toutes les valeurs nécessaires dans les il pour tester le résultat... pourriez-vous peut-être partager un SS, que je(nous) a pu tester un code ?
Ici, le test de la feuille. docs.google.com/spreadsheet/...
Je serai de retour en ligne, dimanche, pour travailler sur cette question avec vous.

OriginalL'auteur WallyG | 2014-03-13