Envoie Automatique mail, lorsque cellule > à une valeur
Bonjour, je suis un novice en google Sheets, en apprentissage, on me demande de réaliser des taches que je ne maitrise pas, je dois donc improviser, en consultant divers forums, et topic sur la programmation java script pour m'en sortir.
Mon problème, j'ai un googlé forme qui envoie les réponses sur un google sheet, mon travail est d'envoyer un mail à mes supérieurs à chaque nouvelle réponse inscrite dans googler Sheets,, pour qu'il "valide la demande"
En me baladant sur le forum j'ai trouvé un sujet que j'ai essayé d'adapter a mon propre travail, je considére ça comme du bricolage, car je n'ai pas les notions pour développer un tel sujet en si peu de temps.Ce que je fais:
Je compte le nombre de colonnes correspondant à une réponse au formulaire, et lorsque le nombre de colonnes dépasse 1, le mail est envoyé, l'idée c'est que le nombre de colonnes sera toujours supérieur à 1 vu que le google sheet va constamment s'incrémenter avec le temps;
N'étant pas sur du fonctionnement de google sheet, ma théorie est que pour chaque nouvelle réponse inscrite dans mon google sheet, le nombre de réponses va augmenter, étant forcement supérieur à 1,la java script va se synchroniser car il va détecter que ma cellule réponse est > 1, est donc enverra un mail au destinataire
Lorsque j'exécute le script en mode RUN, je reçois le mail! mais lorsque je test en temps réel, en mettant la cellule réponse à 2, ou 3 ou 4,je ne reçois pas de mail.
Est-ce que ya une méthode particulière pour assigner le script à son google sheet, ou cela ce fait automatiquement, car peut-être que le problème vient de la
Merci d'avance!
Bonjour bigbig et bienvenue
Si les données viennent d'un google form, tu peux utiliser onFormSubmit plutôt que onEdit
Mais il faudra aussi définir le déclencheur pour la fonction onFormSubmit
Voici un script qui enverra le paquet d'informations reçues, je te le fais complet complet y compris la programmation du déclencheur
const adresseEmail = 'xxxxxxxxxxxx@gmail.com'
const sujet = 'Nouvelle entrée ...'
const message = `
Bonjour,<br><br>
bla bla bla
` ; // ne pas effacer cette ligne avec un "accent grave"
function onFormSubmit(e) {
var responses = e.namedValues;
getData(eval(responses))
MailApp.sendEmail({
to: adresseEmail,
subject: sujet,
htmlBody: message + '<br><br><table>' + result + '</table>',
});
var d = Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "dd MMM yyyy hh:mm a");
var sheet = SpreadsheetApp.getActiveSheet();
var row = sheet.getActiveRange().getRow();
var column = e.values.length + 1;
sheet.getRange(row, column).setValue('Envoyé : ' + d);
}
let result = ''
let rubrique = ''
function getData(obj) {
for (let p in obj) {
if (obj[p]!=null){
if (typeof obj[p] != 'object' && typeof obj[p] != 'function'){
result += rubrique + '<tr><td>'+ obj[p] + '</td></tr>';
}
if (typeof obj[p] == 'object') {
if (obj[p].length){
rubrique = '<tr><td><u>'+ p + '</u></td></tr>';
}
getData(obj[p]);
}
}
}
}ou bien tu fais le déclencheur à la main, ou bien tu utilises
function myTriggerSetup() {
if(!isTrigger('onFormSubmit')) {
ScriptApp.newTrigger('onFormSubmit')
.forSpreadsheet(SpreadsheetApp.getActive())
.onFormSubmit()
.create();
}
}
function isTrigger(funcName) {
var r=false;
if(funcName) {
var allTriggers=ScriptApp.getProjectTriggers();
var allHandlers=[];
for(var i=0;i<allTriggers.length;i++) {
allHandlers.push(allTriggers[i].getHandlerFunction());
}
if(allHandlers.indexOf(funcName)>-1) {
r=true;
}
}
return r;
}Tu es un vrai crack, je pars en week end, je te fais un retour lundi matin, merci beaucoup pour ton aide, ca fait depuis ce matin que je me casse la tête dessus.
Je vous souhaite un bon week end!