使用者必須授權指令碼專案存取自己的資料,或代為執行操作。當使用者首次執行需要授權的指令碼時,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 範圍附加規定。