Script sur google sheet

dossulli04
Messages postés
2
Date d'inscription
mardi 21 septembre 2021
Statut
Membre
Dernière intervention
21 septembre 2021
- 21 sept. 2021 à 10:01
dossulli04
Messages postés
2
Date d'inscription
mardi 21 septembre 2021
Statut
Membre
Dernière intervention
21 septembre 2021
- 21 sept. 2021 à 14:11
Bonjour à tous,

J'espère poster au bon endroit, désolé si ce n'est pas le cas.
J'ai souhaite faire quelque chose sur google sheet, n'étant pas du tout dans le domaine, j'ai réussi grâce à internet à parvenir à le faire sur un fichier google sheet.

Je vous explique mon problème :

Sur une feuille de calcul google sheet, j'ai créé (copié/collé/modifié en réalité ) un script avec un déclencheur qui me notifie par email de la modification d'une cellule, ça fonctionne très bien.
Mon problème est que lorsque je créé une copie de cette feuille, la nouvelle feuille contient bien le script mais pas le déclencheur, du coup ça ne fonctionne pas, il faudrait recréer le déclencheur à chaque copie pour recevoir l'email.

J'ai besoin de faire plusieurs copies du fichier initial par jour, et donc la manipulation serait fastidieuse.
Si quelqu'un pourrait me dire si c'est possible de faire ce que j'ai besoin, et comment le faire le cas échéant, ça serait top car là je sèche.

2 réponses

jordane45
Messages postés
35767
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
1 juillet 2022
4 200
21 sept. 2021 à 11:23
Bonjour,

Visiblement, il est possible de créer/supprimer des "trigger" via du code
https://developers.google.com/apps-script/guides/triggers/installable

par exemple
function createOnEditTrigger(){
  ScriptApp.newTrigger("sendEmailReport") // Run the sendEmailReport function.
    .forSpreadsheet(SpreadsheetApp.getActive()) // Create the trigger in this spreadsheet.
    .onEdit() // We want to set up an Edit trigger.
    .create(); // Create it!
}

0
dossulli04
Messages postés
2
Date d'inscription
mardi 21 septembre 2021
Statut
Membre
Dernière intervention
21 septembre 2021

Modifié le 21 sept. 2021 à 14:13
Merci Jordane,

ça à l'air pas mal tout ça, alors désolé par contre je suis un peu perdu, pas du tout l'habitude de coder quoi que ce soit.
Donc si je comprend bien, j'ouvre mon fichier google sheet initial, j'ouvre l'éditeur de script, je retrouve mon script qui fonctionne bien, je l'édite en y ajoutant à la suite les 5 / 6 lignes que tu m'indiques et j'enregistre.
Si ça fonctionne en supprimant mon déclencheur manuel, c'est que je peux faire des copies de ce fichiers et ça fonctionnera aussi ?

Mon déclencheur manuel est paramétrer comme ceci : "notification", "sur la feuille de calcul", "lors d'une modification", "immédiatement".

Mon script actuel est :

<code>var email ="xxxxxx@gmail.com";
var range = "E8:H8";


function onOpen(){
var ss = SpreadsheetApp.getActiveSpreadsheet();

var Sousmenu = [];

Sousmenu.push({name: "Notif cellule", functionName: "Message"});

ss.addMenu("Info Notif", Sousmenu);
}

function Message(){
Browser.msgBox ('Cellule programmée : '+range +'. Email programmé :' +email);
}

function get_cell_value(sheet, col, row) {
var cellAsRange = sheet.getRange(row, col);
var valuesInArray = cellAsRange.getValues();
return valuesInArray[0][0];

}
function Notification(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = SpreadsheetApp.getActiveSheet();
var editRange = sheet.getActiveRange();
var editRow = editRange.getRow();
var editCol = editRange.getColumn();
var testrange = sheet.getRange(range);
var rangeRowStart = testrange.getRow();
var rangeRowEnd = rangeRowStart + testrange.getHeight()-1;
var rangeColStart = testrange.getColumn();
var rangeColEnd = rangeColStart + testrange.getWidth()-1;
if (editRow >= rangeRowStart && editRow <= rangeRowEnd
&& editCol >= rangeColStart && editCol <= rangeColEnd)
{
var valeurAGauche = get_cell_value(sheet, editCol -1, editRow);
var nomclient = get_cell_value(sheet, 2, 4);
var objet = 'Modification fiche atelier '+ valeurAGauche +' - ' + nomclient;
var body = 'Le dossier ' + valeurAGauche +' - ' + nomclient +' a été mis à jour : << ' + editRange.getValue() + ' >>' + ' URL de la fiche : ' + ss.getUrl();
MailApp.sendEmail(email, objet, body);
}
}
0