Bonjour à tous,

Je ne sais pas si c'est le meilleur endroit du forum pour poster ma question mais je me lance.

Je travail actuellement sur une Spreadsheet google (format tableau excel). Explication :

Visuel :
  • j'ai un tableau avec 5 colonnes et 1 ligne (pour faire simple) ;
  • dans les 3 premières colonnes je veux des dates (en-têtes des colonnes : "date de début"; "date de revue"; "date de validation") ;
  • dans les colonnes 4 et 5 il y aurait 2 "boutons" nommés "Promote" (colonne 4) et "Demote" (colonne 5) ;


Mécanisme :
  • à l'état 0, les colonnes 1 à 3 sont vides ;
  • à la date d'aujourd'hui par exemple, je commence la rédaction d'un document, je clique donc sur le "bouton" Promote et je souhaite que la date d'aujourd'hui s'affiche dans la colonne 1 (la 2 et 3 restent vides) ;
  • admettons que je termine la rédaction du document et que je l'envoi en correction une semaine plus tard, je clique sur le "Promote" et je souhaite que la date d'aujourd'hui (soit celle dans une semaine) s'affiche dans la colonne 2 sans modifier la colonne 1 ;
  • enfin, une fois que le document est validé, je souhaite que la date du jour (soit celle ou le document est validé) remplisse la colonne 3 (sans modifier les dates de la colonne 1 et 2) ;
  • le bouton "Demote" permettrait de supprimer les dates des colonnes 3 vers 1 de façon décroissante. Je m'explique, si les colonnes 1 à 3 ont des dates, le fait de cliquer sur le bouton va supprimer dans un premier temps la date de la colonne 3, puis sur un second clique, supprimer la date de la colonne 2 et enfin sur un troisième clique la date de la colonne 1.


J'ai réussi à faire cela :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function Promote() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var colonne1 = sheet.getRange(2,5).getValue();
  var colonne2 = sheet.getRange(2,6).getValue();
  var colonne3 = sheet.getRange(2,7).getValue();
  var todayDate = new Date();
  var to1 = sheet.getRange(2,5);
  var to2 = sheet.getRange(2,6);
  var to3 = sheet.getRange(2,7);
 
  if (colonne1 == "") {to1.setValue(new Date());}
  else if (colonne1 != "") {to2.setValue(new Date());}
  if (colonne1 != "" && colonne2 != "") {to3.setValue(new Date());}
}
Dans un second temps, je voudrais savoir comment généraliser à plusieurs lignes sans avoir à ré-écrire X fois le script ? (sheet.getRange(3,5), sheet.getRange(4......)

Je vous remercie d'avance pour votre aide !!!