
[英]How to copy a row from one google spreadsheet to another google spreadsheet using google apps script?
[英]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.