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.
- Envoyer un email lors de la modification d'une valeur dans une cellule. (Valeur = Terminé).
- Compiler que les lignes de données dans l'e-mail. Voir le format dans le code ci-dessous.
- Invite l'utilisateur à des fins de confirmation de l'info.
- Si OUI, envoyez un courriel à l'utilisateur active ainsi que le preset utilisateurs dans le code ci-dessous.
- 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/> <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);
}
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.
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
Vous devez vous connecter pour publier un commentaire.
Je peux vous aider à démarrer:
Selon developers.google.com/apps-script/guides/triggers/#restrictions, "Ils ne peuvent pas accéder à des services qui nécessitent une autorisation. Par exemple, un simple déclencheur ne peut pas envoyer un e-mail parce que le service Gmail nécessite une autorisation, mais un simple déclencheur peut traduire une phrase avec la Langue de service, qui est anonyme."
C'est exact, mais ce que vous pouvez faire est de créer un installable, pré-autorisé "à modifier" trigger (et de l'appeler ce que vous voulez, probablement pas onEdit() pour éviter la confusion).
OriginalL'auteur Andrew Roberts
Je viens d'écrire un script qui fait ce genre de chose, mais je voulais garder un œil sur tous les changements dans la feuille, mais envoyer un message une seule fois toutes les heures pour éviter de spammer ma boîte aux lettres.
Le script a 2 fonctions, celle qui recueille les modifications et les enregistre dans le format de texte et un deuxième qui envoie des e-mail si des changements ont eu lieu dans la dernière heure.
La première fonction est appelée grabData et doit être déclenché par un onEdit installable déclencheur et qui va comme ceci :
L'autre de la fonction de la minuterie de déclenchement, je l'ai mis à feu toutes les heures, mais vous pouvez le modifier à votre meilleur ajustement.
après un mail a été envoyé, les données enregistrées sont supprimées. Aucun courrier n'est envoyé que si aucun changement n'a été enregistré.
Vous pouvez également remarquer que j'ai 2 utilisateurs différents et 2 différents lieux de stockage, de sorte que chacun d'eux peut voir ce que fait l'autre sans être informé de ses propres modifications.
Depuis la fois fonction de l'utilisation installable déclenche, cela fonctionnera sur votre compte, donc attention à ne pas exploser votre quotas si vous réglez la minuterie pour une période très courte.
Salut Serge, j'ai juste édité ma question de départ pour avoir une meilleure explication de ce que je suis de regarder à atteindre.
OriginalL'auteur Serge insas