时间触发器不适用于Google电子表格中的CopyTo

时间:2013-12-14 23:33:01

标签: google-apps-script google-sheets

我在google电子表格中使用此代码,当我通过交互式执行运行它时效果很好:

var originalSpreadsheet = SpreadsheetApp.getActive();
var original = originalSpreadsheet.getSheetByName("Sheet1");
var newSpreadsheet = SpreadsheetApp.create("New");
original.copyTo(newSpreadsheet);

但如果我使用时间触发器运行它,它会正确创建“新”电子表格,但copyTo命令不会复制原始电子表格中的任何内容。

我犯了一些错误吗?

我使用Mac OS X Lion 10.7.5和Chrome。

1 个答案:

答案 0 :(得分:0)

如上面的评论所述,工作表副本有一个新名称,因为创建电子表格时默认情况下Sheet1存在。您可以通过对代码进行少量更改来避免这种情况。见下面的代码

function test(){
  var originalSpreadsheet = SpreadsheetApp.getActive();
  var original = originalSpreadsheet.getSheetByName("Sheet1");
  var newSpreadsheet = SpreadsheetApp.create("New");
  var defaultSheet = newSpreadsheet.getSheetByName('Sheet1').setName('xxx');
  original.copyTo(newSpreadsheet).setName('Sheet1');
  newSpreadsheet.deleteSheet(defaultSheet);
}

或者更简单地说,您也可以直接复制电子表格本身(如果您想复制原始电子表格的全部内容)

function test(){
  var originalSpreadsheet = SpreadsheetApp.getActive();
  var newSpreadsheet = originalSpreadsheet.copy('new')      
}

此选项也会复制脚本,副本是原始文件的“克隆”。