Déclencheur trigger automatiser sript

Bonjour à tous,
ça fait plusieurs semaines que je rame pour terminer ce Google Sheets.

Je cherche à automatiser un script.
Il doit prendre la valeur de la cellule E1 de toutes les feuilles du google Sheets. Si le contenu de cette cellule vaut "Clôturez semaine" alors il faut démarrer le script "Protection modif student" (c'est un script qui protège de toute modification. Il est déjà opérationnel).
RMQ : il n'y a qu'une seule feuille avec une cellule E1 sur l'ensemble de classeur qui contient "Clôturez semaine" => le script peut s'arrêter.
Voici un fichier test (les données sont factices) : https://docs.google.com/spreadsheets/d/1ObpHc-2mZOJN7OiRmISdTx4lay_s3oau53jqQBhgqWY/edit?usp=sharing

Autre info, le script doit se lancer le jeudi à 3h du matin.

Bonjour,

function cloture() {
  var ss = SpreadsheetApp.getActiveSpreadsheet()
  ss.getSheets().forEach(sh => {
    Logger.log(sh.getName() + " ... " + sh.getRange('E1').getValue())
    if (sh.getRange('E1').getValue()=='Clôturez la semaine'){
      sh.activate()
      SpreadsheetApp.flush();
      // CloturerSemaine()
    }
  })
}

fais un essai en supprimant les //

Voici mon code qui clôture :

function CloturerSemaine() {
  //Affichage d'un box Yes/No
  const ui = SpreadsheetApp.getUi();
  const clic = ui.alert('Votre horaire sous Plato est terminé :', 'Voulez-vous empécher toute modification de cette feuille par les  étudiants ?', ui.ButtonSet.YES_NO);
  if (clic == ui.Button.YES) {
  //Fin du box Yes/No

  // Activation bas de page semaine en rouge + cadenas;
  var spreadsheet = SpreadsheetApp;
  var feuille = spreadsheet.getActiveSpreadsheet().getActiveSheet();
  var cellule = feuille.getRange(3, 2).getValue();
  spreadsheet.getActiveSheet().setTabColor('#ff0000');
  spreadsheet.getActiveSheet().setName('⛔ Sem. '+ cellule);  

  //Activation de la cellule rouge "Clôturé"
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('E1').activate();
  spreadsheet.getActiveRangeList().setBackground('#ff0000')
  .setFontColor('#ffffff');
  spreadsheet.getCurrentCell().setRichTextValue(SpreadsheetApp.newRichTextValue()
  .setText('Horaire clôturé')
  .setTextStyle(0, 15, SpreadsheetApp.newTextStyle()
  .setFontSize(14)
  .setItalic(false)
  .build())
  .build());

  // + cellules student en rouge
  spreadsheet.getRange('F5:K45').activate();
  spreadsheet.getActiveRangeList().setBackground('#f4cccc');

  //Full protection contre les students
   var ss = SpreadsheetApp.getActiveSpreadsheet();
   var range = ss.getRange('F5:K45');
   var protectSs = range.protect().setDescription('Full Protect Student');  
   var me = Session.getEffectiveUser();
   protectSs.addEditor(me);
   protectSs.removeEditors(protectSs.getEditors());
   if (protectSs.canDomainEdit()) {
     protectSs.setDomainEdit(false); 
  }

  // Ajout un utilisateur en édition
  const SS = SpreadsheetApp.getActiveSpreadsheet();
  const EDITOR = "ADRESSE MAIL DE L'UTILISATEUR QUI PEUT ENCORE AVOIR ACCES A UNE PAGE BLOQUEE";
  SS.addEditor(EDITOR);
  // Fin Ajout utlisateur en édition
  }

}

Super, je teste ça ce soir.
Je vais bien entendu retirer le message box du début de mon script.

Merci.

Voici mon code qui clôture :

oui j'avais vu, mais comme tu m'as dit

(c'est un script qui protège de toute modification. Il est déjà opérationnel).

je n'ai pas voulu y toucher

par contre, comme justement il y a un dialogue avec l'utilisateur, j'ai dû ajouter un activate() et un flush()

une fois le script épuré, on pourra enlever cela et le faire tourner via un déclencheur à ~3h du mat'

Super,
ça fonctionne parfaitement.
Ce soir, je test avec un déclencheur.
Je vais donc mettre le script que tu as fait dans un déclencheur basé sur un jour (chaque jeudi) et sur l'heure (3h).

Je te tiens au courant & merci ;)

hello,

Super, ça marche impeccablement bien.
Je vais mettre sur un autre post chacun des besoins, ça peut ainsi aider d'autres participants.

Encore merci pour ton aide.

Rechercher des sujets similaires à "declencheur trigger automatiser sript"