将Google表格粘贴到新的电子表格中

时间:2014-12-13 17:47:29

标签: google-apps-script google-sheets

正如您在下面的尝试中所知,谷歌脚本不是我最大的优势。

我们所有的学校奖励/制裁目前都进入谷歌表。在每个学期结束时,我想将这些工作表中的一些存档到新的工作簿/电子表格中。发生这种情况时,他们只需要重复复印件。

我可以让这个代码适用于任何单个工作表,但对for循环不太熟悉,因此无法将所有四个工作表实现这一点。
感谢专家们提供的任何帮助!
`



> 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);
}
&#13;
&#13;
&#13;

`

1 个答案:

答案 0 :(得分: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();
}
});
}