Script sur google sheet

Fermé
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.
A voir également:

2 réponses

jordane45 Messages postés 38175 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 13 mai 2024 4 667
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