Script sur google sheet
dossulli04
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
dossulli04 Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
dossulli04 Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
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.
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:
- Script impression google sheet
- Google maps satellite - Guide
- Dns google - Guide
- Google maps - Guide
- Google photo - Télécharger - Albums photo
- Créer un compte google - Guide
2 réponses
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
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! }
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);
}
}
ç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);
}
}