Protection des plages à une heure précise
Bonjour à toutes et tous,
Je cherche un script pour protéger des cellules sur un document en fonction de l'heure.
Il s'agit d'un fichier de pronostiques sportifs. J'ai déjà mis des protections sur la feuille pour que chaque concurrent ne puisse modifier que sa ligne de pronostiques et pas celles des autres. Maintenant, j'aimerai pourvoir programmer une protection par colonnes, qui permettrait, par exemple dans le cadre des pronostiques des matchs de foot, d'empêcher les concurrents de modifier leur pronostique après le début du match.
J'ai trouvé un script sur le web, qui fonctionne parfaitement mais uniquement lorsque je l'exécute à la main. Si je mets un déclencheur horaire dessus, cela ne déclenche pas.
Si quelqu'un peut m'aider sur ce coup là, ce serait super :D
Voici le code qui fonctionne :
function HEURE()
{const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const range = sheet.getRange("B:U");
const protection = range.protect().setDescription("Sample Protection");
protection.removeEditors(protection.getEditors());}Et le lien vers mon doc
Bonjour,
Il faut un script qui se déclenche toutes les minutes (intervalle minimum sur Sheets).
Qu'il vérifie les plages des heures et si l'heure du début = actuelle ou passée, applique les protection.
Je ne vous toutefois nul par dans ton fichier où sont les dates / heures.
+ Le script que tu as partagé semble appliquer une protection qu'importe la temporalité, il sélectionne juste une plage et la protège.
Bonjour Pierre, et merci pour ta réponse !
Entre temps j'ai trouvé une solution qui fonctionne pour mon utilité. J'ai modifié la formule et j'ai pu mettre un déclencheur de script avec la date et l'heure précise et cela fonctionne.
Voici la formule que j'ai appliqué
function J1bonus() { const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName("J1"); // à changer par le nom de la feuille à protéger
var plageAVerrouiller = sheet.getRange("BF6:BN30"); // à changer par la plage que vous souhaitez verrouiller
const range = sheet.getRange("BF6:BN30");
const protection = range.protect().setDescription("Sample Protection");
protection.removeEditors(protection.getEditors());
plageAVerrouiller.protect();}En déclencheur je mets le nom du script, ici "J1bonus", et je mets les conditions horaires et journalières pour le déclenchement. Le but est un déclenchement unique à cette heure et jour précis, et cela fonctionne.