簡體   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