Sto tentando di attivare un foglio mensile all'apertura del foglio di calcolo, in base al mese corrente.Impossibile attivare un foglio per nome
Il problema è alla fine dello script, quando fallisce selezione del foglio. Sembra che getSheetByName()
abbia un valore null
, che non è accettato da setActiveSheet()
.
function selectmonth(){
var now= new Date();
var month= now.getMonth()+1;
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheetname="";
switch (month){
case 1:
sheetname="urtarrila01"; //english=january01
break;
case 2:
sheetname="otsaila02"; //english=february02 and so on...
break;
case 3:
sheetname="martxoa03";
break;
case 4:
sheetname="apirila04";
break;
case 5:
sheetname="maiatza05";
break;
case 6:
sheetname="ekaina06";
break;
case 9:
sheetname="iraila09";
break;
case 10:
etiketaizena="urria10";
break;
case 11:
sheetname="azaroa11";
break;
case 12:
sheetname="abendua12";
break;
default:
sheetname="LABURPENA-resumen";
}
//HERE mysheet gets null value, although the sheet exist, named "sheetname)
var mysheet=ss.getSheetByName(sheetname);
//AN HERE THE SCRIPT FAILS, ERROR MESSAGE=invalid argument on next line
ss.setActiveSheet(mysheet);
}
Ebbene questo è il codice finale che funziona:
enter code here
function hileHonetan(){
var now= new Date();
var month= now.getMonth();
var mysheetname="";
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheetNames= ['urtarrila01', 'otsaila02', 'martxoa03', 'apirila04', 'maiatza05', 'ekaina06', 'ekaina06', 'ekaina06', 'iraila09', 'urria10', 'azaroa11' , 'abendua12']
mysheetname= sheetNames[month];
var mysheet=ss.getSheetByName(mysheetname);
mysheet.activate();
}
Quindi, in pratica, si suggerisce di utilizzare l'id sheed (un numero intero predefinito), anziché il nome del foglio. La ragione per cui non ho provato in questo modo è che il file è stato creato da un'altra persona ei fogli sono stati riordinati; inoltre, il file sarà un modello da replicare 500 volte. Non so se sia effettivamente possibile applicare una modifica ai fogli ID; se lo fosse, lo farei usando il tuo codice. Proverò il secondo modo: ordinare i nomi in una lista. GRAZIE MOLTO –
Bene, ho provato e lo stesso problema è ancora lì: "var mysheet = ss.getSheetByName (sheetNames [mese])" restituisce un valore nullo, quindi setactivesheet non può funzionare in seguito. Ho registrato i valori precedenti e sono OK. Proverò il tuo trucco di creare una lista con numeri interi, "riordinando" gli ID dei fogli. –
Se vuoi essere assolutamente sicuro dei nomi puoi provare la prima versione e vedere effettivamente i nomi dei fogli ... quindi puoi usarlo nell'ultima versione senza alcun dubbio sull'ortografia o sugli spazi invisibili che potrebbero esserci ... usa il logger: Logger.log (sheetNames) –