web-dev-qa-db-fra.com

Comment faire en sorte que Google Sheet accède à la colonne d'aujourd'hui lorsqu'il est ouvert?

J'essaie d'ajuster ce code afin de pouvoir passer à la date d'aujourd'hui, qui se trouve sur la ligne 2 de ma feuille de calcul.

function onOpen() {
 var ss = SpreadsheetApp.getActiveSpreadsheet();
 var sheet = ss.getActiveSheet();
 var range = sheet.getRange("A:A");
 var values = range.getValues();  
 var day = 24*3600*1000;  
 var today = parseInt((new Date().setHours(0,0,0,0))/day);  
 var ssdate; 
 for (var i=0; i<values.length; i++) {
   try {
     ssdate = values[i][0].getTime()/day;
   }
   catch(e) {
   }
   if (ssdate && Math.floor(ssdate) == today) {
     sheet.setActiveRange(range.offset(i,0,1,1));
     break;
   }    
 }
}

cette réponse vient de Guimauve

J'ai essayé de changer sheet.getRange("A:A") en sheet.getRange("2:2") et sheet.getRange("C2:PB2") mais aucun des deux ne fonctionne.

3
London Rabbit

essayez ce code:

function onOpen() {
 var ss = SpreadsheetApp.getActiveSpreadsheet();
 var sheet = ss.getActiveSheet();
 var range = sheet.getRange("2:2");

 var values = range.getValues(); 
 values = values[0];
 var day = 24*3600*1000;  
 var today = parseInt((new Date().setHours(0,0,0,0))/day);  
 Logger.log(today);
 var ssdate; 
 for (var i=0; i<values.length; i++) {
   try {
     ssdate = values[i].getTime()/day;
   }
   catch(e) {
   }
   if (ssdate && Math.floor(ssdate) == today) {
     sheet.setActiveRange(range.offset(0,i,1,1));
     break;
   }    
 }

}

Qu'est-ce qui a changé:

  1. sheet.getRange("2:2"); comme vous l'avez fait
  2. values = values[0]; obtenir la première ligne de données
  3. sheet.setActiveRange(range.offset(0,i,1,1)); offset sur les colonnes
5
Max Makhrov

Si vos dates figurent dans la colonne A et que vous souhaitez que votre fichier soit ouvert à la ligne d'aujourd'hui:

  1. Dans votre feuille Google: ajoutez ceci dans la cellule A1: =match(TODAY();A2:A;0)+1 Elle renverra le numéro de ligne contenant la date du jour (ex: ligne 154).

  2. Dans l'éditeur de script, écrivez ce code qui placera automatiquement votre curseur sur la cellule A154:

    function onOpen() {
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var s = ss.getSheetByName("Sheet1"); // change to sheet containing dates
      var r = s.getRange("A1").getValue(); //change A1 to cell containing =match formula
      s.setActiveSelection(s.getRange("A" + r )); 
    }

Cette méthode simple évite beaucoup d’analyses et de conversions de dates (Toute la gloire à GimelC )

3
JinSnow