web-dev-qa-db-fra.com

Script pour ajouter une protection et supprimer l'utilisateur qui l'exécute?

Nous avons une feuille de travail qui aura plusieurs feuilles, une dans laquelle elles seront éditées et les autres que nous voulons protéger. Il s’agit d’un constructeur de factures et de devis. Ainsi, chaque fois qu’ils en auront un nouveau, ils en feront une copie. Il est évident que la protection ne se poursuit pas, nous essayons donc d’utiliser Script Editor pour supprimer tous les utilisateurs sauf moi et un autre.

Je ne pouvais pas faire fonctionner onOpen (), alors j’ajoute un bouton dans le menu sur lequel ils devront cliquer (nous leur faisons confiance à chaque fois), qui exécutera une fonction, voici où nous en sommes:

function onOpen() {
      var ui = SpreadsheetApp.getUi();
      ui.createMenu('Custom Menu')
          .addItem('First item', 'testProtect')
          .addToUi();
}


function testProtect(){
      var sheet = SpreadsheetApp.getActiveSheet();
      var protection = sheet.protect().setDescription('Test');
      protection.removeEditor("[email protected]");
      protection.removeEditor("[email protected]");
      protection.addEditor("[email protected]");

      var ui = SpreadsheetApp.getUi();
      ui.alert("Permissions Set");
}

Function s'exécute et fera tout SAUF supprimer l'utilisateur qui l'exécute. J'ai essayé de trouver un utilisateur actif et de le supprimer de cette manière, ainsi que de lui envoyer son courrier électronique exact (nous n'avons que huit employés qui pourraient le toucher, alors je peux très bien ajouter/supprimer chaque ligne par ligne si nécessaire).

En plus de cela, nous devrons simplement avoir confiance qu'ils ne toucheront à rien qu'ils ne sont pas supposés LOL, mais nous savons comment cela se passe parfois ...

1
Chris Weems

Bien qu'il soit compréhensible que le propriétaire du tableur ne puisse pas être bloqué, il semblerait raisonnable de bloquer l'utilisateur actuel. Mais étant donné qu'un utilisateur ne peut pas se bloquer en utilisant l'interface graphique, le script ne peut pas non plus.

Cependant, si vous ne vous inquiétez que des modifications accidentelles, vous pouvez utiliser:

protection.setWarningOnly(true);

Cela s'applique à tous les utilisateurs, y compris le propriétaire. Malheureusement, il n’existe aucun moyen de régler le texte d’avertissement sur quelque chose de plus utile et l’utilisateur peut choisir de l’ignorer.

La suggestion importrange est également bonne.

2
Leo Noy