2017-05-11 3 views
2

nennen Ich habe das schon Codierung:Typeerror: Die Methode kann nicht „getName“ undefinierter

function deleteSheets(){ 
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheets = ss.getSheets(); 


    for(var i = 0; i<=sheets.length; i++){ 

    var name = sheets[i].getName(); 

    if (name == "aux"){ 
     ss.deleteSheet(sheets[i]); 
    }else if(name == "nulos"){ 

     ss.deleteSheet(sheets[i]); 

     } 



    /* switch(sheets[i].getName()){ 

     case sheets[i].getName() == "aux": 
     ss.deleteSheet(sheets[i]); 
     break; 

     case sheets[i].getName() == "nulos": 
     ss.deleteSheet(sheets[i]); 
     break; 

     case name == "aux": 
     ss.deleteSheet(sheets[i]); 
     break; 
    } 

    */ 

} 

} 

Versucht ein einfaches „deleteSheet“ mit dem Schalter zu tun, was nicht funktioniert hat, dann eine mit, wenn nur Siehe den gleichen Fehler:

TypeError: Cannot call method "getName" of undefined. (line 8, file "Code")

Was fehlt mir? Ziemlich sicher, ich habe bereits eine ähnliche Sache gemacht, bevor ... (Wenn es offensichtlich ist, tut mir leid, ich bin noob)

Antwort

1

Sie machen einen Fehler auf Ihrer for-Anweisung.

Sie schrieb:

for(var i = 0; i<=sheets.length; i++){} 

aber wenn i = sheets.length, du bist aus dem Array, so dass Sie versuchen getName() nichts zu nennen. Sie haben sollten

for(var i = 0; i<sheets.length; i++){} 

Um Fehler wie dies zu vermeiden, beachten Sie bitte

var i = 0 
for(i in sheets){} 

mit dem i automatisch erhöht wird. Hier ein paar mehr Details über for/in statement

+0

Alter, wieder hast du meine Probleme gelöst, du rockst! Ich fange von jetzt an damit für diesen Weg zu verwenden .... War verrückt nach diesem hahaha. Vielen Dank! –

Verwandte Themen