如何复制电子表格并将其保存到特定文件夹,然后打开副本进行编辑
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.
我有一个代码可以创建母版 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.