Próbuję aktywować arkusz miesięczny po otwarciu arkusza kalkulacyjnego, zgodnie z bieżącym miesiącem.Nie można aktywować arkusza według nazwy
Problem występuje na końcu skryptu, gdy nie można wybrać arkusza. Wydaje się, że getSheetByName()
otrzymuje wartość null
, która nie jest akceptowana przez 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);
}
Więc jest to ostateczny kod, który działa:
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();
}
Zasadniczo sugerujesz, aby zamiast nazwy arkusza użyć id etykiety (predefiniowanej liczby całkowitej). Powodem, dla którego nie wypróbowałem w ten sposób, jest to, że plik został utworzony przez inną osobę, a arkusze zostały zmienione; co więcej, plik będzie szablonem, który będzie replikowany 500 razy. Nie wiem, czy faktycznie można wymusić zmianę w identyfikatorach arkuszy; gdyby tak było, zrobiłbym to, używając twojego kodu. Spróbuję drugi sposób: zamawiać nazwiska na liście. DZIĘKUJEMY BARDZO DUŻO –
Cóż, próbowałem i ten sam problem nadal istnieje: "var mysheet = ss.getSheetByName (sheetNames [miesiąc])" zwraca wartość pustą, więc setactiveheet nie może działać później. Zarejestrowałem poprzednie wartości i są OK. Spróbuję spróbować stworzyć listę z liczbami całkowitymi, "zmieniając kolejność" identyfikatorów arkuszy. –
Jeśli chcesz mieć całkowitą pewność, że nazwy są takie, możesz wypróbować pierwszą wersję i zobaczyć nazwy arkuszy ... to możesz użyć jej w ostatniej wersji bez żadnych wątpliwości, że może tam być pisownia lub niewidoczne miejsca ... użyj rejestratora: Logger.log (sheetNames) –