2012-10-31 248 views
0

我正在寻找一些有关这种情况的帮助。我有一个电子表格,我创建一个新工作表,我重新命名它,一旦完成,我也会像其他10个电子表格一样执行相同的操作,但我想知道如何实现for或while循环,以便我没有重复键入10次。我的代码如下,任何帮助将非常感激。我在另一个文档中有键,所以基本上我需要知道如何能够读取变量中的键,然后能够读取每个键,因为它们在垂直列中。如何在这种情况下循环

function create(){ 
var ss0 = SpreadsheetApp.getActiveSpreadsheet(); 
ss0.setActiveSheet(ss0.getSheetByName("old")); 
ss0.setActiveSheet(ss0.duplicateActiveSheet()); 
ss0.renameActiveSheet("main"); 
var ss0 = SpreadsheetApp.getActiveSpreadsheet(); 
ss0.getRange("A4:I500").clearContent(); 


    //repeated code key 1 
var ss0 = SpreadsheetApp.getActiveSheet(); 
var master = SpreadsheetApp.openById("key1"); 
ss0.copyTo(master); 
var ss0 = SpreadsheetApp.getActiveSpreadsheet(); 
master.setActiveSheet(master.getSheetByName("Copy of main")); 
master.renameActiveSheet("main"); 


    // key 2 
var ss0 = SpreadsheetApp.getActiveSheet(); 
var master = SpreadsheetApp.openById("key2"); 
ss0.copyTo(master); 
var ss0 = SpreadsheetApp.getActiveSpreadsheet(); 
master.setActiveSheet(master.getSheetByName("Copy of main")); 
master.renameActiveSheet("main"); 

} 

回答

2

您需要获取数组中的密钥并遍历该数组。

这里是一个轮廓

function myFunction() { 
    //get the keys in an array 
    //say, they are in column A in a spreadsheet from A1:A10 
    var keyArray = SpreadsheetApp.openById("ID of the ss with key").getSheetByName("name of the sheet with key") 
     .getRange("A1:A10").getValues(); 

    var ss0 = SpreadsheetApp.getActiveSheet(); 

    //loop for all the spreadsheets 
    for(var i in keyArray){ 
    var ss = SpreadsheetApp.openById(keyArray[i][0]); 
    ss0.copyTo(ss); 
    ss.getSheetByName("Copy of main").setName("main") 
    } 
} 
+0

完美!我试过这段代码,它正是我想要做的!谢谢Waqar艾哈迈德! –

+0

我很高兴它帮助你。 –