Google Sheets : un script pour être notifié de la modif d’une cellule.

285 4

Je vous ai donc préparé un petit script en puissant dans les forums et ressources des experts développeurs de Stack Overflow, un forum rassemblant bon nombre de questions résolues sur les scripts.

Voici donc le script qui vous permettra d’activer la notification par email lors de la modification d’une cellule (ou d’une plage) de votre feuille de calcul préférée.Le petit + de cette version : vous pouvez choisir l’email du destinataire de la notification.

Le lien vers le script est ici : https://goo.gl/htGOLp

Les explications sont dans la vidéo.

Le code à copier dans l’éditeur de script d’une feuille de calcul :

var email =”monemail@gmail.com”;

var range = “A10:B20”;

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 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 objet = ‘Modification de ‘+sheet.getName();

 var body = sheet.getName() + ‘ a été modifié . Suivre ‘ + ss.getUrl() + ‘ pour voir la modification de la cellule : «’ + range + ‘». Nouvelle saisie: «’ + editRange.getValue() + ‘».’;

 MailApp.sendEmail(email, objet, body);

 }

}

 
Il est certain que Google doit remettre cette fonction en standard !

Notez cette information
[Total: 1 Average: 3]
Jean-Paul JOURDAN

Jean-Paul JOURDAN

Consultant formateur certifié Google Apps

4 comments

  1. Bonjour,

    dans le même ordre d’idée dans la cellule B1 un commentaire indiquant la dernière cellule ayant été modifiée et par qui
    😉

    function onEdit(e){
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    // Met un commentaire sur la cellule B1 pour indiquer quand le fichier a été modifié et par qui.
    var sh = ss.getActiveSheet();
    var range = sh.getRange(“B1”);
    var addr = ss.getActiveCell().getA1Notation();
    var userName = Session.getActiveUser().getUsername();
    if (userName == “”){ userName = “inconnu”}
    range.setNote(‘La cellule ‘ + addr + ‘ a été modifiée le : ‘ + Utilities.formatDate(new Date(), “GMT+2”, “EEE dd/MM/YYYY à HH:mm:ss”)+” par “+ userName);

    }
    }

  2. Bonjour
    Ce script est super!!!!

    Par contre des qu’il y a une modification qui n’est pas faite avec le compte Google d’origine
    Ça ne fonctionne pas.
    Comment faire pour qu’il fonctionne quand on partage le tableur et que certains le modifie sans compte Google

    Merci beaucoup

  3. Bonjour
    J’utilise cette fonction pour le suivi des modifications d’un planning mais depuis peu la fonction présente des bug, en effet le contenu de la cellule avant modification revient “undefined” pour certains utilisateurs alors que parfois elle comportait une valeur
    Ce souci ne survient pas pour tous les utilisateurs et étrangement j’en fais partie (et cette page est sur mon compte Google)
    J’ai essayé sur Firefox et sur Edge sans différence notoire
    Avant cela fonctionnait sans souci pour tous
    Des idées?
    Merci de votre retour

    1. Après test, ça marche sur mon téléphone via l’application “sheet” et pas sur mes ordis.. Peut être une histoire de navigateur?

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Share This

Share This

Share this post with your friends!