2016-03-30 21 views
0

Was Skript tun soll. Ermitteln Sie zuerst die Blattnamen aus dem Bereich in Blattliste_1. Verwenden Sie dann dieses Array von Namen, und legen Sie nur einige Daten auf diese Blätter. https://docs.google.com/spreadsheets/d/1Xdws6Vr6YVXuj19mvpOvkpJokOfY2T7Sh1aMpous_Xw/edit#gid=0So erhalten Sie die Nummer des Blattes aus der Liste

function VList() { 

var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheets = ss.getSheets(); 
var sheetNames = ss.getSheetByName("List_1"); 
var rangeNames = sheetNames.getRange("B3:B5").getValues(); 

    for (var sheetId = 0; sheetId<sheets.length; sheetId++){ 
    if(sheets[sheetId].getSheetName() == rangeNames) { 
    ss.getRange("C1").setValue("done"); 
    } 
    } 
} 

Problem. Wenn das Skript startet, passiert nichts. Wie bekomme ich die Nummer des Blattes und vlookup nur auf sie? Vielleicht existiert eine Funktion wie "getSheetId", die die Nummer des Blattes bekommen kann.

Gelöst, dank Bruce.

Antwort

2

getValues ​​() gibt ein zweidimensionales Array zurück, das Sie dann mit einem String-Wert vergleichen - damit wird das nie wahr sein.

Sobald Sie das beheben, werden Sie immer noch die gleiche Zelle aktualisieren, C1 mit 'done' mehrmals - ss Punkte auf der Liste_1 Blatt - ich nehme an, Sie wollen das Blatt aktualisieren, dessen Name in der Liste ist.

Warum nicht einfach die Liste in b3: b5 verwenden, um einfach jedes Blatt mit Namen zu erhalten und zu aktualisieren? Es ist nicht nötig, die Blätterliste durchzugehen, da Sie ihre Namen bereits kennen.

so etwas wie

ss.getSheetByName("List_1").getRange("b3:b5").getValues() 
.forEach(function(row) { 
    var sheet = ss.getSheetByName (row[0]); 
    if (!sheet) throw 'missing sheet ' + row[0]; 
    sheet.getRange("c1").setValue ("done"); 
}); 
+0

Dank bruce, jetzt funktioniert es! Niemals forEach verwenden, so seine neue Erfahrung für mich) – Twil

+0

np - viel Glück beim Lernen Apps Script – bruce

Verwandte Themen