繁体   English   中英

在 Google Apps 脚本中从另一个电子表格编辑一个电子表格

[英]Editing one Spreadsheet from another Spreadsheet in Google Apps Script

问题

如何从一个由 onEdit 命令触发的连接脚本编辑两个不同的电子表格?

我的情况

我正在尝试创建一个主电子表格,将信息发送和删除到另外两个电子表格。 我有一个 onEdit function ,一旦选中了一个复选框,它就会将指定的信息发送到另一个工作表。

我试过的

要打开另一个电子表格,我首先尝试了 openByID function 但通过一些研究,我不相信可以通过绑定到电子表格的脚本来编辑另一个电子表格。 所以我创建了一个独立的脚本(名为 MasterF),我将它部署为一个库来存储我的 function 以便我以后可以调用它。 我将库添加到主电子表格中,并使用它来调用 function,但它一直抛出错误消息:“您无权调用 SpreadsheetApp.openById。” 我所有的应用程序脚本都具有编辑、删除等的完全权限。我还从绑定到我要连接的其他电子表格的脚本中创建了库,并将这些库添加到 MasterF 库中,看看是否有帮助。 尽管尝试使用独立脚本,但在编辑 function 时,我仍然收到相同的错误消息。 也许我错过了一些东西,或者我完全有可能无法做我想做的事情。

脚本

这是我创建的自定义 function 的开始。 本质上,当触发 onEdit function 时,“提交”表中的电子表格 1 中的数据将传输到“仪表板”表中的电子表格 2。

 function DataSend() { var app = SpreadsheetApp; var ss = app.getActiveSpreadsheet(); var submit = ss.getSheetByName("Submit"); var selldata = submit.getRange('E23:I23').getValues(); //@NotOnlyCurrentDoc var dash = app.openById(<sheetid>).getSheetByName("Dashboard");

这是绑定到电子表格 1(不是 MasterF 库的直接一部分)的脚本中的 onEdit Function,它触发保存在 MasterF 库中的数据发送 function。

 function onEdit(e) { var sheetName = "Submit" var range = e.range; if (range.getSheet().getSheetName() == sheetName && range.getA1Notation() == 'K23' && range.isChecked()) { MasterF.DataSend(); } }

要从一个由 onEdit 命令触发的连接脚本编辑两个不同的电子表格,您需要安装触发器。 简单触发器没有编辑多个电子表格所需的权限。 参考 在我的问题中,我试图使用一个独立的脚本和多个库。 这是不必要的。 从单个脚本编辑多个电子表格所需的只是一个可安装的触发器。

就我而言,我使用以下 function 创建可安装触发器:

 function EditTrigger() { var ss = SpreadsheetApp.getActiveSpreadsheet(); ScriptApp.newTrigger('Edit').forSpreadsheet(ss).onEdit().create(); }

'Edit' 是我用来检测第一个电子表格中所做更改的 onEdit function 的名称。 如果 onEdit function 中的 If 语句为真,则它运行一个单独的 function 来编辑两个不同的电子表格。 编写 EditTrigger() function 后,在应用程序脚本中手动运行它并在必要时接受权限。 现在,当 onEdit function ('Edit') 被触发时,它应该能够编辑多个电子表格。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM