使用者必須授權指令碼專案存取自己的資料,或代為執行操作。當使用者首次執行需要授權的指令碼時,UI 會顯示提示,要求使用者開始授權流程。
在這個流程中,UI 會告知使用者指令碼想要執行的操作。例如,指令碼可能會要求讀取使用者的電子郵件訊息,或在日曆中建立活動。指令碼專案會將這些個別權限定義為 OAuth 範圍。
對於多數指令碼,Apps Script 會自動偵測所需的範圍;您隨時可以查看指令碼使用的範圍。您也可以使用網址字串,在manifest中明確設定範圍。對於外掛程式等特定應用程式,有時需要明確設定範圍,因為已發布的應用程式應一律使用最狹隘的範圍。
在授權流程中,Apps Script 會向使用者顯示必要範圍的說明,讓使用者能輕鬆閱讀。舉例來說,如果指令碼需要對試算表擁有唯讀存取權,資訊清單的範圍可能會是 https://www.googleapis.com/auth/spreadsheets.readonly
。在授權流程中,含有此範圍的指令碼會要求使用者允許這個應用程式「查看您的 Google 試算表」。
某些範圍包含其他範圍。例如,授權範圍 https://www.googleapis.com/auth/spreadsheets
允許讀取和寫入試算表。
查看範圍
如要查看指令碼專案目前需要的範圍,請按照下列步驟操作:
- 開啟指令碼專案。
- 按一下左側的「總覽」 。
- 查看「Project OAuth Scopes」下方的範圍。
設定明確範圍
Apps Script 會掃描程式碼,找出需要函式呼叫的範圍,自動判斷指令碼需要哪些範圍。對大部分的指令碼來說,這就足夠了,可節省您的時間,但對於已發布的外掛程式、網頁應用程式、Google Chat 應用程式和呼叫 Google Chat API 的呼叫,您必須更直接地控制範圍的範圍。
Apps Script 有時會自動為專案指派非常寬鬆的範圍。這可能表示指令碼要求使用者提供超出需求的資訊,這並非正確做法。以已發布的指令碼來說,您必須將廣泛範圍替換為數量較少、足以滿足指令碼需求的限制範圍。
您可以編輯指令碼專案的manifest檔案,明確設定指令碼專案使用的範圍。資訊清單欄位 oauthScopes
是專案使用的所有範圍陣列。如要設定專案的範圍,請按照下列步驟操作:
- 開啟指令碼專案。
- 按一下左側的「專案設定」圖示 。
- 勾選「在編輯器中顯示『appsscript.json』資訊清單檔案」核取方塊。
- 按一下左側的「編輯器」圖示 。
- 按一下左側的
appsscript.json
檔案。 - 找出標示為
oauthScopes
的頂層欄位。如果沒有,您可以新增。 oauthScopes
欄位會指定字串陣列。如要設定專案使用的範圍,請將這個陣列的內容替換為您要使用的範圍。例如:{ ... "oauthScopes": [ "https://www.googleapis.com/auth/spreadsheets.readonly", "https://www.googleapis.com/auth/userinfo.email" ], ... }
- 按一下頂端的「 」。
OAuth 驗證
某些 OAuth 範圍屬於機密範圍,因為這些範圍可存取 Google 使用者資料。如果指令碼專案使用可存取使用者資料的範圍,則必須先讓專案通過 OAuth 用戶端驗證,才能公開發布為網路應用程式或外掛程式。詳情請參閱下列指南:
受限制的範圍
除了敏感範圍之外,某些範圍也歸類為受限制,並須遵守其他有助於保護使用者資料的規則。如果您打算發布使用一或多個受限制範圍的網頁應用程式或外掛程式,則應用程式必須符合所有指定的限制才能發布。
請先查看受限制範圍的完整清單,再嘗試發布。如果您的應用程式使用其中任何一項,則必須在發布前遵守特定 API 範圍附加規定。