Ich versuche, ein monatliches Blatt beim Öffnen der Tabelle zu aktivieren, je nach dem aktuellen Monat.Ein Blatt konnte nicht mit dem Namen aktiviert werden
Das Problem liegt am Ende des Skripts, wenn das Blatt nicht ausgewählt werden kann. Es scheint, dass getSheetByName()
einen null
Wert erhält, der von setActiveSheet()
nicht akzeptiert wird.
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);
}
Nun ist dies der endgültige Code, das funktioniert:
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();
}
Also im Grunde schlagen Sie vor, die Sheed-ID (eine vordefinierte Ganzzahl) anstelle des Blattnamens zu verwenden. Der Grund, warum ich das nicht versucht habe, ist, dass die Datei von einer anderen Person erstellt wurde und die Blätter neu geordnet wurden. Darüber hinaus ist die Datei eine Vorlage, die 500 Mal repliziert wird. Ich weiß nicht, ob es tatsächlich möglich ist, eine Änderung in den Blatt-IDs zu erzwingen; Wenn es so wäre, würde ich das tun, mit Ihrem Code. Ich werde den zweiten Weg versuchen: die Namen in einer Liste zu ordnen. DANKE SEHR VIEL –
Nun, ich habe versucht und das gleiche Problem ist immer noch da: "var mysheet = ss.getSheetByName (Blattnamen [Monat])" gibt einen Null-Wert zurück, so dass späteres Blatt nicht mehr funktionieren kann. Ich habe die vorherigen Werte protokolliert und bin OK. Ich werde versuchen, eine Liste mit Ganzzahlen zu erstellen, die Blatt-IDs "neu zu ordnen". –
Wenn Sie die Namen absolut sicher wissen wollen, können Sie die erste Version ausprobieren und tatsächlich die Blattnamen sehen ... dann können Sie es in der letzten Version ohne Zweifel über die Rechtschreibung oder unsichtbare Leerzeichen verwenden, die da sein könnten ... benutze den Logger: Logger.log (sheetNames) –