【问题标题】:How do I make copy of spreadsheet and save it to particular folder then open the copy for edit如何制作电子表格的副本并将其保存到特定文件夹,然后打开副本进行编辑
【发布时间】:2021-03-17 11:54:00
【问题描述】:

我有一个代码可以创建主工作表的副本并将其保存在特定文件夹中。

这样做的原因是访问工作表的人不会弄乱主工作表,而是编辑自己的副本。

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

这是我的代码:

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)
}

【问题讨论】:

  • 这非常相关:stackoverflow.com/q/11315521/11225291 我认为这是重定向到页面(在本例中为电子表格页面)的唯一方法。
  • @Mario,感谢您回复马里奥。实际上,我可以重定向。我的挑战是如何确保在重定向时选择创建的副本。
  • 代码究竟是如何重定向的?重定向是什么意思? setActiveSpreadsheet 打开电子表格,它在脚本中激活。
  • 用户类中没有getUsername()方法
  • 您是否尝试过使用getUrl 方法?你是否也有重定向功能,如果有,它是什么样子的? @Just

标签: javascript arrays google-apps-script google-sheets google-drive-api


【解决方案1】:

以下内容将自动打开一个带有 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 输出,这是我知道的打开链接的唯一方法。您将需要为他们添加一个菜单以用于启动该过程。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多