ALL Apps Scripts Google Sheets

GScript : un journal pour le suivi des modifications

Ecrit par Thierry

Besoin de connaître qui a modifié quelle cellule dans Google Sheets ? gilbert ROINEL vous a préparé un petit script qui vous permet dans un onglet « Journal » d’avoir tout le détail (cellule modifiée, date de modif, utilisateur  et modif réalisée).

Voici l’aperçu de cet onglet.

Voici le lien du script de Gilbert ROINEL que vous pouvez copier coller et installer dans votre feuille de calcul. Vous pouvez aussi dans le tableur récupéré le script. Attention à ne pas le modifier sur ce fichier.

Je vous invite à tester ce fichier et écrire dans la feuille 1 ou 3.

Le script :

function onOpen() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var Sousmenu = [];
Sousmenu.push({name:  » effacer le journal « , functionName: « efface »});
Sousmenu.push({name:  » Test Utilisateur « , functionName: « utilisateurtest »});
ss.addMenu( » 🔔 Mon Menu 🔔 « , Sousmenu);

}
function efface(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var journal = ss.getSheetByName(« journal »);
var derligne = journal.getLastRow()-1;
var effcol =journal.deleteRows(1, derligne); //getRange(« a1:a »).clearContent();
}

//Script pour actualiser les données après une modif
function onEdit(e){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet =ss.getActiveSheet();
var nSh = sheet.getName();
if (nSh== »journal »){}else{
var journal = ss.getSheetByName(« journal »);
var derligne = journal.getLastRow()+1;
var jrange = journal.getRange(derligne,1);
// ajoute une ligne dans la feuille journal pour indiquer quand la feuille 1 a été modifiée et par qui.
var addr = sheet.getActiveCell().getA1Notation();
var Oldvalue =e.oldValue;
var myValue = e.value; //sheet.getActiveCell().getValue();
var userName
if (getUserEmail()== »gilbert@gmail.com »){ userName = getUserEmail()} //à modifier suivant le propriétaire
else{ userName = getUserEmail()}
if (userName == «  »){ userName = « inconnu »}
// var userName = Session.getActiveUser().getUsername();
userName=userName.split(« @ »,1);
//Browser.msgBox(Oldvalue)
if (Oldvalue == undefined){Oldvalue =  » cellule vide « }
jrange.setValue(‘La cellule ‘ + addr + ‘ de la feuille ‘ +nSh +’ a été modifiée le : ‘ + Utilities.formatDate(new Date(), « GMT+2 », « EEE dd/MM/YYYY à HH:mm:ss »)+ » par « + userName +  » elle est passée de  » + Oldvalue +  » à  » + myValue);
}
}

function utilisateurtest()
{
var ss = SpreadsheetApp.getActiveSpreadsheet();
var user
if (getUserEmail()== »gilbert@gmail.com »){ user = ‘du propriétaire ‘}
else{ user = « de l’utilisateur »}
//SpreadsheetApp.getUi().alert(« Le courrier électronique  » + user +  » est :  » + getUserEmail());
var userName = getUserEmail();
userName = userName.split(« @ »,1)
ss.toast(« Le nom  » + user +  » est :  » + userName, »Test »);
}

function getUserEmail() {
var userEmail = PropertiesService.getUserProperties().getProperty(« userEmail »);
if(!userEmail) {
var protection = SpreadsheetApp.getActive().getRange(« A1 »).protect();
// truc: le propriétaire et l’utilisateur ne peuvent pas être visibles ensembles
protection.removeEditors(protection.getEditors());
var editors = protection.getEditors();
if(editors.length === 2) {
var owner = SpreadsheetApp.getActive().getOwner();
editors.splice(editors.indexOf(owner),1); // Supprimer le propriétaire, prendre l’utilisateur

}
userEmail = editors[0];
protection.remove();
// sauvegarde pour une meilleure performance
PropertiesService.getUserProperties().setProperty(« userEmail »,userEmail);

}
return userEmail;
}

 

Notez cette information
[Total: 0 Average: 0]

A propos de l'auteur

Thierry

Thierry VANOFFE, consultant, formateur, coach G Suite.
Passionné et fasciné par Google, ce blog me permet de partager cette passion et distiller tutos, trucs, astuces, guides sur les outils Google.
N'hésitez pas à me solliciter pour vos formations en ligne ou en présentiel.

12 commentaires

  • Bonjour.
    Ce script est vraiment très sympa et optimise efficacement le suivi des modifications en collaboration.
    Je n’ai pas vraiment compris ce que fait la fonction ‘test utilisateur’ ?
    Dans le cas de multiples onglets, il pourrait être très intéressant que le script puisse cibler l’onglet ou les onglets pour lesquels le suivi des modifications est applicable. Peut-être une amélioration de +Gilbert ROINEL ?

  • Bonjour,

    Merci pour le partage.

    Pourriez vous expliquer comment l’intégrer , quelles sont les modif à faire sur le script.

    Pour info: lorsque je fait des modifs cela mets toujours le nom du propriétaire du document.

    Encore merci.

    • Bonjour,

      oui c’est faisable, il suffit d’ajouter ces conditions dans le programme
      comme var addr = sheet.getActiveCell().getA1Notation();
      si addr = « A16 » ou si addr = « u215 » alors j’execute sinon je ne fais rien

      • Bonjour,

        Je me bas depuis ce midi mais cela ne marche pas où dois-je mettre la formule ?
        (je veux suivre seulement les cellules de A16 à U215, le reste, je ne veux pas de suivi)

        function onEdit(e){
        var ss = SpreadsheetApp.getActiveSpreadsheet();
        var sheet =ss.getActiveSheet();
        var nSh = sheet.getName();
        if (nSh== »journal »){}else{
        var journal = ss.getSheetByName(« journal »);
        var derligne = journal.getLastRow()+1;
        var jrange = journal.getRange(derligne,1);
        // ajoute une ligne dans la feuille journal pour indiquer quand la feuille 1 a été modifiée et par qui.
        var addr = sheet.getActiveCell().getA1Notation();
        var Oldvalue =e.oldValue;
        var myValue = e.value; //sheet.getActiveCell().getValue();
        var userName

  • Bonjour
    J’ai copié le code et ajouté d’autres lignes (pour une autre fonction d’envoie par mail ciblé la modification de cellule), mais j’ai 2 « bugs »: Le texte s’écrit 2 fois et a chaque fois c’est le nom du propriétaire qui s’inscrit..
    Des idées? Merci
    PS: fil actif sur la communauté également
    Patrice

Laisser un commentaire

Abonnez-vous à la newsletter hebdo du lundi.

Recevez chaque lundi les 7 news, trucs et astuces sur G Suite.

L'abonnement à la newsletter a été réalisé avec succès !

Share This

Share This

Share this post with your friends!