在触发器上复制电子表格-onOpen

时间:2018-10-22 12:39:00

标签: google-apps-script

我正在尝试创建这样的过程:打开电子表格,并在onOpen触发时,我想将该电子表格复制到用户驱动器中。我不知道为什么下面的代码没有做到这一点,我尝试了

  spread = SpreadsheetApp.getActive()

但还是不能正常工作

function onOpen(e){
 var spread = e.source
 var dest = DriveApp.getRootFolder();  
 var name = "NEW NEW spreadsheet test"
 var newfile = DriveApp.getFileById(spread.getId()).makeCopy(name,dest);
 Browser.msgBox('File will appear on your Drive in a moment');
 SpreadsheetApp.setActiveSpreadsheet(newfile)
}

请寻求有关我所缺少或误解的建议。 谢谢!

1 个答案:

答案 0 :(得分:0)

尝试:

function onOpenTrigger(){
 var spread = SpreadsheetApp.getActiveSpreadsheet();
 var dest = DriveApp.getRootFolder();  
 var name = "NEW_NEW_spreadsheet_test"
 var newfile = DriveApp.getFileById(spread.getId()).makeCopy(name,dest);
 var newSpreadsheet = SpreadsheetApp.open(newfile);
 Browser.msgBox('File will appear on your Drive in a moment');
 SpreadsheetApp.setActiveSpreadsheet(newSpreadsheet)
}

我已通过以下步骤使其起作用:

  1. 将onOpen重命名为另一个名称,此处为onTriggerOpen
  2. 手动创建一个在文档打开时运行的触发器
  3. 首先执行google App IDE中的功能,以允许用户执行操作

onOpen被设置为LIMITED授权,因此不确定是否可以用于尚未从IDE中执行onOpenTrigger的其他用户。

另外,您正在File内部传递spreadsheet对象而不是setActiveSpreadsheet(spreadsheet)对象,因此一种解决方案是先使用SpreadsheetApp.open(file)

参考

Open()

setActiveSpreadsheet()

Triggers