2014-12-13 70 views
0

正如您可能会从我的下面尝试中意识到的那样,Google脚本不是我最大的优势。

我们所有的学校奖励/制裁目前都进入谷歌表格。在每学期结束时,我想将许多这些表格归档到新的工作簿/电子表格中。发生这种情况时,他们只需要评估副本。

我可以得到这个代码适用于任何单个工作表,但对于for循环不是很熟悉,所以无法将所有四个工作表合并到一起。
感谢您的专家可能提供的任何帮助!
`将Google表格粘贴到新电子表格

> function copySheetValues() 
 
{ 
 
  var source = SpreadsheetApp.getActiveSpreadsheet(); 
 
    var sheetname = ['tally', 'commendations', 'detentions', 'omegas']; 
 
    for (var i=0, i<3, i++) 
 
    var sheet = source.getSheetByName(sheetname[i]); 
 
    sheet.activate(); 
 
  var sourcename = sheet.getSheetName(); 
 
  var sourceDataRange = sheet.getDataRange(); 
 
  var sourceSheetValues = sourceDataRange.getValues(); 
 
  var sourceRows = sourceDataRange.getNumRows(); 
 
    var sourceColumns = sourceDataRange.getNumColumns(); 
 
    var ssNew = SpreadsheetApp.create('Archive'); 
 
    var url = (ssNew.getUrl()); 
 
    var destination = SpreadsheetApp.openByUrl(url); 
 
    
 

 
    destination.insertSheet(sourcename, 0); 
 
    destination.getDataRange().offset(0, 0, sourceRows, sourceColumns).setValues(sourceSheetValues); 
 
}

`

回答

0

采用不同的方法,你可以看到,如果这对你的作品?

function backup() { 

var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var bs = SpreadsheetApp.openById(ss.copy('Archive').getId()); 
var sheets = ['tally', 'commendations', 'detentions', 'omegas']; 
SpreadsheetApp.flush(); 
var bsl = bs.getSheets().forEach(function (s) { 
if(sheets.indexOf(s.getName()) !== -1) { 
s.getDataRange().copyTo(s.getDataRange(), { 
      contentsOnly: true 
     }); 
} else { 
bs.setActiveSheet(s); 
bs.deleteActiveSheet(); 
} 
}); 
} 
相关问题