ALL Apps Scripts

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

Il fut un temps où Google permettait à l’utilisateur d’être notifié lors d’un changement dans une cellule d’un Google Tableur. Depuis quelques années, avec la nouvelle version de GSheets, cette fonctionnalité pourtant très demandée a disparu du menu Outils> Règles de notification.

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 !

A propos de l'auteur

Jean-Paul JOURDAN

Consultant formateur certifié Google Apps

1 commentaire

  • 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);

    }
    }

Laisser un commentaire