如何复制电子表格并将其保存到特定文件夹,然后打开副本进行编辑

How do I make copy of spreadsheet and save it to particular folder then open the copy for edit

我有一个代码可以创建母版 sheet 的副本并将其保存在特定文件夹中。

这样做的原因是访问 sheet 的人不会弄乱主 sheet 而是编辑他们自己的副本。

我的代码只创建副本,但在用户需要打开他们保存的副本并进行编辑时不知所措。这应该在主 sheet 打开时自动发生。我将不胜感激。

这是我的代码:

function onOpen(e){
 var Book = SpreadsheetApp.openById(PCDF_sheet_id);
 var Tab = Book.getSheetByName(PCDF_tab_name);
 var PCDF_Data = Tab.getDataRange().getValues(); 
 var user = Session.getEffectiveUser().getUsername(); 
 var dest = DriveApp.getFolderById(Copy_Folder_id); 
 var name =  Book.getName()+ user + " Copy ";
 var newfile = DriveApp.getFileById(Book.getId()).makeCopy(name,dest);
 var newSpreadsheet = SpreadsheetApp.open(newfile);
 SpreadsheetApp.setActiveSpreadsheet(newSpreadsheet)
}

以下将自动打开带有 url 的新标签页(或 window,具体取决于浏览器设置)。您只需要四处游玩,确保您调用的是正确的 url。将 SpreadsheetApp.setActiveSpreadsheet(newSpreadsheet) 替换为:

var url = newSpreadsheet.getUrl()
var html = "<script>window.open('" + url + "');google.script.host.close();</script>";
var userInterface = HtmlService.createHtmlOutput(html);
SpreadsheetApp.getUi().showModalDialog(userInterface, "Opening copy");

我知道你说它应该自动发生。我认为不可能自动完成。 onOpen 以受限模式运行,无法创建 HTML 输出,这是我所知道的打开 link 的唯一方法。您将需要为他们添加一个菜单以用于启动该过程。

我能想到的唯一其他可能性是使用 onOpen 并将 url 写入单元格。然后他们可以单击 url 打开复制的电子表格,您可以通过编程方式删除 link.