範圍

使用者必須授權外掛程式和其他應用程式存取自己的資料或代為執行動作。使用者首次執行外掛程式時,外掛程式 UI 會顯示授權提示,以啟動授權流程。

在這個流程中,提示會告知使用者應用程式需要哪些權限。舉例來說,外掛程式可能需要讀取使用者電子郵件訊息或在日曆中建立活動的權限。外掛程式的指令碼專案會將這些個別權限定義為 OAuth 範圍

您可以使用網址字串,在資訊清單中宣告範圍。在授權流程中,Apps Script 會向使用者顯示範圍的易讀說明。舉例來說,Google Workspace 外掛程式可能會使用「讀取目前郵件」範圍,這會在資訊清單中寫成 https://www.googleapis.com/auth/gmail.addons.current.message.readonly。在授權流程中,具有這項範圍的外掛程式會要求使用者允許外掛程式:在外掛程式執行期間查看您的電子郵件訊息

Apps Script 用於各項服務的範圍與相關 API 使用的範圍重疊。舉例來說,Apps Script 的 日曆服務Calendar API 使用許多相同的範圍。如要查詢特定 Apps Script 服務方法所需的範圍,請參閱 Apps Script 參考說明文件

查看範圍

如要查看指令碼專案目前需要的範圍,請按照下列步驟操作:

  1. 開啟指令碼專案。
  2. 按一下左側的「總覽」
  3. 查看「專案 OAuth 範圍」下方的範圍。

您也可以在專案資訊清單的 oauthScopes 欄位下方,查看指令碼專案的目前範圍,但前提是您已明確設定這些範圍。

設定明確範圍

Apps Script 會掃描程式碼中需要範圍的函式呼叫,自動判斷指令碼需要哪些範圍。對大多數指令碼而言,這樣就已足夠,可節省您的時間,但如果是已發布的外掛程式,您應更直接地控管範圍。

舉例來說,Apps Script 可能會預設為外掛程式指令碼專案提供非常寬鬆的 https://mail.google.com 範圍。如果使用者授權具有這項範圍的指令碼專案,該專案就能完整存取使用者的 Gmail 帳戶。如果是已發布的增益集,您必須將這個範圍替換為更受限制的範圍,涵蓋增益集的需求即可。

您可以編輯指令碼專案的資訊清單檔案,明確設定專案使用的範圍。資訊清單欄位 oauthScopes 是外掛程式使用的所有範圍陣列。如要設定專案的範圍,請按照下列步驟操作:

  1. 查看外掛程式使用的範圍。 判斷需要進行哪些變更,例如縮小範圍。
  2. 開啟外掛程式的資訊清單檔案
  3. 找到標示為 oauthScopes 的頂層欄位。如果沒有,可以自行新增。
  4. oauthScopes 欄位會指定字串陣列。如要設定專案使用的範圍,請將這個陣列的內容替換為您要使用的範圍。舉例來說,如果是擴充 Gmail 的 Google Workspace 外掛程式,您可能會看到以下內容:

     {
       ...
       "oauthScopes": [
         "https://www.googleapis.com/auth/gmail.addons.current.message.metadata",
         "https://www.googleapis.com/auth/userinfo.email"
       ],
       ...
     }
    
  5. 儲存資訊清單檔案變更。

OAuth 驗證

使用特定敏感 OAuth 範圍時,外掛程式可能需要先通過 OAuth 用戶端驗證,才能發布。如需詳細資訊,請參閱下列指南:

受限制範圍

部分範圍受到限制,且須遵守額外規則,以協助保護使用者資料。如果您打算發布使用一或多個受限範圍的 Gmail 或 Google 編輯器外掛程式,該外掛程式必須遵守所有指定限制,才能發布。

嘗試發布前,請先參閱受限範圍的完整清單。如果外掛程式使用任何這類範圍,您必須在發布前遵守特定 API 範圍的附加規定

Visual Studio Code 適用的 Google Workspace 開發人員工具擴充功能,可提供所有範圍的診斷資訊,包括範圍說明,以及範圍是否屬於機密或受限。

選擇 Google Workspace 外掛程式的範圍

以下各節提供 Google Workspace 外掛程式常用的範圍。

編輯者範圍

Google Workspace 外掛程式的下列常用範圍可擴充 Google 文件、Google 試算表和 Google 簡報。

範圍
目前的文件檔案存取權 https://www.googleapis.com/auth/documents.currentonly

如果外掛程式會存取 Google Apps Script 文件 API,則必須提供這項資訊。 授予開放文件內容的臨時存取權。

目前試算表檔案的存取權 https://www.googleapis.com/auth/spreadsheets.currentonly

如果外掛程式會存取 Apps Script Sheets API,則必須提供這項資訊。 授予開放式試算表內容的臨時存取權。

目前存取 Google 簡報檔案的方式 https://www.googleapis.com/auth/presentations.currentonly

如果外掛程式會存取 Apps Script Slides API,則為必要項目。 授予開放存取簡報內容的臨時存取權。

檔案存取權 https://www.googleapis.com/auth/drive.file

外掛程式必須使用, onFileScopeGrantedTrigger 且外掛程式會存取 文件、試算表、 簡報或 Drive API。 使用 Apps Script 進階 Google 雲端硬碟服務,授予應用程式對所建立或開啟檔案的存取權。這項設定不允許使用基本 Google 雲端硬碟服務執行類似動作。檔案授權是依檔案授予,使用者取消授權應用程式時,授權就會撤銷。

Gmail

Google Workspace 外掛程式專用的範圍可協助保護使用者 Gmail 資料。請在外掛程式資訊清單中明確新增這些範圍,以及任何其他必要範圍。

下表列出 Google Workspace 外掛程式常用的範圍,這些外掛程式會擴充 Gmail 功能。如果外掛程式會擴充 Gmail 功能,您必須將標示為「必要」的任何範圍新增至 Google Workspace 外掛程式資訊清單。

將範圍廣泛的 https://mail.google.com 範圍,替換為一組範圍較窄的範圍,允許外掛程式所需的互動。

範圍
建立新草稿 https://www.googleapis.com/auth/gmail.addons.current.action.compose

如果外掛程式使用 撰寫動作觸發條件,則必須提供這項資訊。 允許外掛程式暫時建立新的草稿郵件和回覆。詳情請參閱「 撰寫草稿郵件」一文;這個範圍通常會與 [撰寫動作](https://developers.google.com/workspace/add-ons/gmail/extending-compose-ui)搭配使用。需要存取權杖。

讀取開啟的訊息中繼資料 https://www.googleapis.com/auth/gmail.addons.current.message.metadata

授予開啟郵件中繼資料的暫時存取權 (例如主旨或收件者)。不允許讀取郵件內容,且需要存取權杖。

如果外掛程式在撰寫動作觸發程序中使用中繼資料,則必須提供這項資訊。如要撰寫動作,如果撰寫觸發程序需要存取中繼資料,則必須具備這個範圍。實際上,這個範圍可讓撰寫觸發程序存取回覆郵件草稿的收件者清單 (收件者、副本和密件副本)。

讀取開啟的訊息內容 https://www.googleapis.com/auth/gmail.addons.current.message.action

在使用者互動時授予存取權,例如選取外掛程式選單項目時。需要存取權杖。

閱讀開放討論串內容 https://www.googleapis.com/auth/gmail.addons.current.message.readonly

授予開放訊息的中繼資料和內容臨時存取權。 並授予存取開啟討論串中其他訊息內容的權限。需要存取權杖。

讀取任何訊息內容和中繼資料 https://www.googleapis.com/auth/gmail.readonly

讀取任何電子郵件中繼資料和內容,包括開啟的郵件。如需讀取其他郵件的相關資訊 (例如執行搜尋查詢或讀取整個郵件討論串),則必須提供這項權限。

Google 日曆範圍

下表列出 Google Workspace 外掛程式常用的範圍,這些外掛程式會擴充 Google 日曆功能。

範圍
存取事件中繼資料 https://www.googleapis.com/auth/calendar.addons.execute

如果外掛程式會存取日曆活動中繼資料,則必須提供這項權限。允許外掛程式存取活動中繼資料。

讀取使用者產生的事件資料 https://www.googleapis.com/auth/calendar.addons.current.event.read

如果外掛程式需要讀取使用者產生的事件資料,則為必填。允許外掛程式存取使用者產生的事件資料。只有在 addOns.calendar.eventAccess 資訊清單欄位設為 READREAD_WRITE 時,才能取得這項資料。

寫入使用者產生的事件資料 https://www.googleapis.com/auth/calendar.addons.current.event.write

如果外掛程式需要寫入使用者產生的事件資料,則為必填。允許外掛程式編輯使用者產生的事件資料。只有在 addOns.calendar.eventAccess 資訊清單欄位設為 WRITEREAD_WRITE 時,才能取得這項資料。

Google Chat 範圍

如要呼叫 Google Chat API,請以 Google Chat 使用者Google Chat 應用程式的身分進行驗證。每種驗證類型都需要不同的範圍,且並非所有 Chat API 方法都支援應用程式驗證。

如要進一步瞭解 Chat 範圍和驗證類型,請參閱 Chat API 的「驗證和授權總覽」。

下表列出根據支援的驗證類型,經常使用的 Chat API 方法和範圍:

方法 支援使用者驗證 支援應用程式驗證 支援的授權範圍
傳送訊息 有了使用者驗證
  • chat.messages.create
  • chat.messages
  • chat.import
使用應用程式驗證
  • chat.bot
建立聊天室 有了使用者驗證
  • chat.spaces.create
  • chat.spaces
  • chat.import
透過應用程式驗證管理員核准 (適用於 開發人員預覽版):
  • chat.app.spaces.create
  • chat.app.spaces
建立聊天室並新增成員 有了使用者驗證
  • chat.spaces.create
  • chat.spaces
在聊天室中新增使用者 有了使用者驗證
  • chat.memberships
  • chat.memberships.app
  • chat.import
透過應用程式驗證管理員核准 (適用於 開發人員預覽版):
  • chat.app.memberships
列出 Chat 聊天室的活動或事件 使用「使用者驗證」時,您必須為要求中包含的每個 事件類型使用範圍:
  • 訊息相關事件:
    • chat.messages
    • chat.messages.readonly
  • 表情符號回應相關事件:
    • chat.messages.reactions
    • chat.messages.reactions.readonly
    • chat.messages
    • chat.messages.readonly
  • 會員相關活動:
    • chat.memberships
    • chat.memberships.readonly
  • 與空間相關的活動:
    • chat.spaces
    • chat.spaces.readonly

Google 雲端硬碟範圍

下表列出 Google Workspace 外掛程式常用的範圍,這些外掛程式會擴充 Google 雲端硬碟。

範圍
讀取所選項目中繼資料 https://www.googleapis.com/auth/drive.addons.metadata.readonly

如果外掛程式實作了關聯介面,且會在使用者選取雲端硬碟中的項目時觸發,則必須提供這項資訊。允許外掛程式讀取使用者在 Google 雲端硬碟中選取項目的有限中繼資料。中繼資料僅限於項目的 ID、標題、MIME 類型、圖示網址,以及外掛程式是否具有存取項目的權限。

檔案存取權 https://www.googleapis.com/auth/drive.file

如果外掛程式需要存取個別雲端硬碟檔案,建議採用這個方式。授予應用程式權限,可存取使用 Apps Script 進階雲端硬碟服務建立或開啟的檔案。這項設定不允許使用基本 Google 雲端硬碟服務執行類似動作。檔案授權是依檔案授予,且會在使用者取消授權應用程式時撤銷。請參閱 要求存取所選檔案的範例

存取權杖

為保護使用者資料,Google Workspace 外掛程式使用的 Gmail 範圍會授予使用者資料的暫時存取權。如要啟用臨時存取權,請使用動作事件物件的存取權杖呼叫 GmailApp.setCurrentMessageAccessToken

啟用 Gmail 範圍的存取權杖與 ScriptApp.getOAuthToken 傳回的存取權杖不同。使用動作事件物件中提供的權杖。

以下範例說明如何設定存取權杖,允許存取訊息的中繼資料。這個範例只需要 https://www.googleapis.com/auth/gmail.addons.current.message.metadata 範圍。

function readSender(e) {
  var accessToken = e.gmail.accessToken;
  var messageId = e.gmail.messageId;

  // The following function enables short-lived access to the current
  // message in Gmail. Access to other Gmail messages or data isn't
  // permitted.
  GmailApp.setCurrentMessageAccessToken(accessToken);
  var mailMessage = GmailApp.getMessageById(messageId);
  return mailMessage.getFrom();
}

其他 Google Workspace 範圍

如果外掛程式使用其他 Google Workspace 或 Apps Script 服務,可能需要額外範圍。在大多數情況下,Apps Script 會偵測這些範圍,並自動更新資訊清單。編輯資訊清單的範圍清單時,請勿移除任何範圍,除非您要以範圍較小的替代項目取代。

下表列出 Google Workspace 外掛程式常用的範圍:

範圍
讀取使用者的電子郵件地址 https://www.googleapis.com/auth/userinfo.email

允許專案讀取目前使用者的電子郵件地址。

允許呼叫外部服務 https://www.googleapis.com/auth/script.external_request

允許專案提出 UrlFetch 要求。如果專案使用 Apps Script 的 OAuth2 程式庫,也必須完成這項操作。

讀取使用者的語言代碼和時區 https://www.googleapis.com/auth/script.locale

允許專案瞭解目前使用者的語言代碼和時區。詳情請參閱「 存取使用者語言代碼和時區」。

建立觸發條件 https://www.googleapis.com/auth/script.scriptapp

允許專案建立觸發條件。

預覽第三方連結 https://www.googleapis.com/auth/workspace.linkpreview

如果外掛程式會預覽第三方服務的連結,則必須提供這項資訊。允許專案在使用者與 Google Workspace 應用程式中的連結互動時,查看該連結。詳情請參閱「 使用智慧型方塊預覽連結」。

建立第三方資源 https://www.googleapis.com/auth/workspace.linkcreate

如果外掛程式會在第三方服務中建立資源,則為必要元素。允許專案讀取使用者在資源建立表單中提交的資訊,並在 Google Workspace 應用程式中插入資源連結。詳情請參閱「 從 @ 選單建立第三方資源」。