我在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。
答案 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')
}
此选项也会复制脚本,副本是原始文件的“克隆”。