![](/img/trans.png)
[英]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.