2016-12-20 3 views
0

Frage 1.Script umbenennen und neu anordnen Blätter basierend auf dem Tisch

Ich versuche, ein Skript zu schreiben, umbenennen und Neuordnungs Blätter in einer Kalkulationstabelle Google basiert auf einem Tisch auf einem der Blätter. Ich habe Stunden lang verschiedene Methoden ausprobiert, um es vergebens zum Laufen zu bringen. (Ich versuche immer noch, den Dreh von Schleifen zu bekommen)

Dieses Skript wird in einem Blatt sein, das ich mit anderen Leuten teilen werde, die versehentlich ein Blatt neu ordnen oder möglicherweise umbenennen können.

Ich habe den aktuellen Code und eine Beispieldatei enthalten.

HINWEIS: Die Blattnamen sind völlig unterschiedlich und können nicht alphabetisch sortiert werden.

function OnOpen(){ 

var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheets = ss.getSheets(); 

for(var i in sheets) 
    if(sheets[i].getSheetId() == '978626951'){ 
    var sheet = ss.getSheets()[i]; 
    break; 
} 

var sheetData = sheet.getRange(2,1,11,3).getValues(); 

     for (var a = 0; a < sheetData.length; a++) { 
      for (var b = 0; a < sheetData.length; b++){ 

    var find = sheetData[a][0]; Logger.log(sheets[a].getSheetName());     

     if(find == sheets[a].getSheetId()) {   
    var temp = ss.getSheets()[a].activate(); 
       ss.moveActiveSheet(sheetData[a][2]); 

    } 
    } 
    } 
} 

Link Tabelle mit Skript zu probieren.

Frage No. 2

Nach W3schools, ist es möglich, eine Schleife aus dem Inneren der Schleife zu erhöhen. (Codeform W3)

var i = 0; 
var len = cars.length; 
for (; i < len;) { 
    text += cars[i] + "<br>"; 
    i++; 
} 

Allerdings, wenn ich versuche, dies der Debugger hängt in Google Script zu tun, und ich habe zu aktualisieren. Ist das in Google Script nicht möglich?

Jede Hilfe wäre sehr gut geeignet.

+0

Frage 1: Nicht ganz sicher, was Sie fragen. Hast du es geschafft, es funktioniert, aber stoßen Sie auf Probleme? Frage 2: Ihr Browser hängt möglicherweise wegen einer Endlosschleife. Verwenden Sie console.log(), um den Wert der Variablen i zu verfolgen. – noogui

Antwort

0

ich modifizierte Code ein wenig, und es scheint jetzt zu funktionieren:

function onOpen(){ 

    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheets = ss.getSheets(); 

    for(var i in sheets) 
    if(sheets[i].getSheetId() == '978626951'){ 
     var sheet = sheets[i]; // reuse the var sheets 
     break; 
    } 


    //I USED COMMENTED CODE BELOW SINCE I NEEDED TO FIND THE SET OF SHEET IDS FOR MY TEST SPREADSHEET; SO ITS NOT REQUIRED TO RUN ONCE IDs ARE FOUND 
    //sheet.appendRow(['-']) 
    // for(var x in sheets) 
    // sheet.appendRow([sheets[x].getSheetId(), sheets[x].getSheetName() ]); 
    // 


    var sheetData = sheet.getRange(2,1,11,3).getValues(); 

    for (var a = 0; a < sheetData.length; a++) {  
    var find = sheetData[a][0]; 

    for(var b = 0 ; b < sheets.length; b++){ 
     if(find == sheets[b].getSheetId()) { 
     Logger.log(sheets[b].getName()); 

     sheets[b].activate(); // not : ss.getSheets()[a] 
     ss.moveActiveSheet(sheetData[a][2]); 
     sheets[b].setName(sheetData[a][1]); // I added this rename bit 

     } 
    } 
    } 
} 

(aber beachten Sie, dass für mich Ich muss auch noch die ss (dh F5 im Browser aktualisieren), nachdem das Blatt geöffnet haben - es scheint, als ob das Skript die Änderungen an die Tabelle macht, aber sie sind nicht auf der Seite angezeigt, bis ich refresh)

ich den Code in dieser Tabelle versucht: https://docs.google.com/spreadsheets/d/1W7IiEQgsHlWFm7EThyN3lcY6duKh9EW2sQDYFqbwID8/edit?usp=sharing

Ihre Q2: das funktioniert gut in Google App s Script:

function myFunction() { 
    var cars = 'cars', text = ''; 
    var i = 0; 
    var len = cars.length; 
    for (; i < len;) { 
    text += cars[i] + "<br>"; 
    i++; 
    } 
    Logger.log(text) 
} 
+0

Danke David. Es hat funktioniert und ich denke, ich habe mich an die Arbeit gemacht, bevor ich die Frage gepostet habe, die ich brauchte, um das ss zu aktualisieren (was ich nicht tat), um zu sehen, dass das Skript funktionierte. –

Verwandte Themen