簡體   English   中英

GAS - “您無權調用SpreadsheetApp.openById”

[英]GAS - “You do not have permission to call SpreadsheetApp.openById”

我的一個腳本使用SpreadsheetApp.openById(ID)從電子表格中獲取數據。 該腳本已被授予打開該文件的權限,並且該腳本的用戶對該文件具有寫訪問權限。 但是,有時,腳本會返回以下錯誤:

You do not have permission to call SpreadsheetApp.openById. Required permissions: https://www.googleapis.com/auth/spreadsheets at [unknown function](Code:11)

其他時候,沒有問題,腳本運行完美。 有關如何解決此問題的任何想法/幫助?

腳本示例:

var spreadsheet = SpreadsheetApp.openById("1m65QVfk9Xx2zOwUxewdSjWCDK-g_jHj7ETFVFF0rjxY")

function myFunc() {
  sheet = spreadsheet.getActiveSheet()
  prepareHours()
  inputDisplays()
}

您不能“授予腳本打開文件的權限”,因為腳本不是自治的:用戶執行腳本。 如果導致腳本執行的用戶以不提供授權的方式執行此操作 - 例如執行名為onOpenonEdit的函數之類的簡單觸發器 - 那么任何需要授權的調用將失敗並且基於權限像你分享的錯誤。

由於為每個Apps Script實例評估全局變量,因此始終建議避免在全局范圍內調用API / Service調用。 此外,由於對具有編輯文檔權限的任何用戶執行簡單觸發器,因此建議在具有受限AuthMode的情況下避免使用需要用戶權限的方法。

  • 簡單觸發限制
  • 執行用戶
  • 無障礙服務

    警告:運行onOpen(e)函數時,將加載整個腳本並執行任何全局語句。 這些語句在與onOpen(e)相同的授權模式下執行,如果模式禁止它們則失敗。 這可以防止onOpen(e)運行。 如果您發布的加載項無法添加其菜單項,請在瀏覽器的JavaScript控制台中查看是否拋出錯誤,然后檢查您的腳本以查看onOpen(e)函數或全局變量是否調用不允許的服務在AuthMode.NONE

  • AuthMode

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM