![](/img/trans.png)
[英]Google Apps Script: how to use data in a spreadsheet to query a external database?
[英]How to access data from an external spreadsheet with Google Apps Script
我有一個電子表格,其中包含一些我想在其他電子表格腳本中使用的數據表。 如何通過 ID 調用此電子表格並訪問數據?\
從文檔中,我知道不允許自定義函數訪問其他電子表格,解決方案是將這個 function 放在菜單中並運行它,因為它會要求用戶授權。 但這不是一個選項,因為我正在使用帶有內置方法onEdit()
的數據。\
此外,我嘗試通過onOpen()
訪問電子表格,因為它不是自定義 function 但仍然沒有成功。 還有其他解決方案嗎?
我的代碼:
function onOpen(){
ss = SpreadsheetApp.getActiveSpreadsheet();
src = SpreadsheetApp.openById("spreadsheetID");
錯誤信息:
Exception: You do not have permission to call SpreadsheetApp.openById. Required permissions: https://www.googleapis.com/auth/spreadsheets
和appscript.json
{
"timeZone": "Europe/Paris",
"dependencies": {
},
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8",
"oauthScopes": [
"https://www.googleapis.com/auth/spreadsheets"
]
}
最后,我還嘗試使用以下代碼創建可安裝觸發器:
function createSpreadsheetOpenTrigger() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
ScriptApp.newTrigger('myFunction')
.forSpreadsheet(ss)
.onOpen()
.create();
}
但是在打開工作表時似乎沒有調用觸發器。
SpreadsheetApp.openById("spreadsheetID");
是這些請求之一
您使用可安裝的觸發器走在正確的軌道上 - 它們可以觸發需要授權的請求的執行
我認為您的問題是可安裝觸發器的正確實現
function createSpreadsheetOpenTrigger
創建一個可安裝的onOpen
觸發器,在工作表打開時調用 function myFunction
myFunction
function createSpreadsheetOpenTrigger()
- 安裝觸發器示例完整代碼:
function createSpreadsheetOpenTrigger() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
ScriptApp.newTrigger('myFunction')
.forSpreadsheet(ss)
.onOpen()
.create();
}
function myFunction(){
ss = SpreadsheetApp.getActiveSpreadsheet();
src = SpreadsheetApp.openById("spreadsheetID");
Logger.log(src.getActiveSheet().getName());
}
筆記:
而不是實現 function createSpreadsheetOpenTrigger()
,您可以通過繼續Edit->My project's triggers
手動安裝觸發器並將所需類型的觸發器綁定到所需的 function,另請參閱手動管理觸發器
首先,在 src = SpreadsheetApp.openById("spreadsheetID"); 您是否將 id 替換為實際的電子表格 ID? 那是 url 末尾的數字。 我假設你做到了,但它並沒有表明你在你的例子中做到了。
其次,只是為了測試,嘗試在常規 function(不是觸發器)中執行此操作以使事情正常工作。 你這樣做了嗎? 然后,您可以專注於電子表格訪問,而不必擔心觸發器是否會導致問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.