我正在尝试创建这样的过程:打开电子表格,并在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)
}
请寻求有关我所缺少或误解的建议。 谢谢!
答案 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)
}
我已通过以下步骤使其起作用:
onOpen
被设置为LIMITED
授权,因此不确定是否可以用于尚未从IDE中执行onOpenTrigger
的其他用户。
另外,您正在File
内部传递spreadsheet
对象而不是setActiveSpreadsheet(spreadsheet)
对象,因此一种解决方案是先使用SpreadsheetApp.open(file)
参考