在 Apps Script 中,進階服務可讓經驗豐富的開發人員連線至特定的 Google 公用 API,且設定程序比使用 HTTP 介面更為簡便。進階服務基本上是圍繞這些 Google API 的薄型包裝函式。運作方式與 Apps Script 的內建服務類似。舉例來說,這類服務提供自動完成功能,而 Apps Script 會自動處理授權流程。不過,您必須先啟用進階服務,才能在指令碼中使用這項服務。
如要查看哪些 Google API 可做為進階服務,請參閱參考資料中的「進階 Google 服務」一節。如果您想使用無法做為進階服務的 Google API,只要像連結其他外部 API 一樣連結即可。
進階服務或 HTTP?
每項進階 Google 服務都與 Google 公用 API 相關聯。在 Apps Script 中,您可以透過進階服務存取這些 API,也可以直接使用 UrlFetch
提出 API 要求。
如果您使用進階服務方法,Apps Script 會處理授權流程,並提供自動完成支援。但是,必須啟用進階服務才能使用。此外,部分進階服務只提供 API 中提供的部分功能。
如果您使用 UrlFetch
方法直接存取 API,基本上會將 Google API 視為外部 API。使用這個方法,您可以使用 API 的所有層面。不過,您必須自行處理 API 授權。您也必須建立任何必要的標頭,並剖析 API 回應。
一般來說,最容易使用進階服務,並且只在進階服務未提供所需功能的情況下使用 UrlFetch
方法。
需求條件
您必須先滿足下列需求,才能使用進階服務:
- 您必須在指令碼專案中啟用進階服務。
您必須確認在指令碼使用的 Cloud Platform (GCP) 專案中,已啟用對應進階服務的 API。
如果指令碼專案使用的是 2019 年 4 月 8 日當天或之後建立的預設 GCP 專案,您啟用進階服務並儲存指令碼專案後,API 就會自動啟用。如果您尚未同意,系統可能也會要求您同意《Google Cloud》和《Google API》服務條款。
如果指令碼專案使用標準 GCP 專案或較舊的預設 GCP 專案,您必須手動在 GCP 專案中啟用進階服務的對應 API。您必須具備 GCP 專案的編輯權限,才能進行這項變更。
詳情請參閱「Cloud Platform 專案」。
啟用進階服務
如要使用進階 Google 服務,請按照下列指示操作:
- 開啟 Apps Script 專案。
- 按一下左側的「編輯器」圖示 。
- 在左側的「服務」旁,按一下「新增服務」圖示 。
- 選取進階 Google 服務,然後按一下「新增」。
啟用進階服務後,系統就會在自動完成功能中提供這項服務。
如何判定方法簽章
進階服務通常會使用與對應公開 API 相同的物件、方法名稱和參數,但方法簽章會轉譯為在 Apps Script 中使用。指令碼編輯器的自動完成功能通常會提供足夠的資訊,讓您開始使用,但下列規則說明瞭 Apps Script 如何從公開的 Google API 產生方法簽章。
向 Google API 提出的要求可以接受各種不同類型的資料,包括路徑參數、查詢參數、要求主體和/或媒體上傳附件。部分進階服務也可以接受特定的 HTTP 要求標頭 (例如日曆進階服務)。
Google Apps Script 中的對應方法簽章包含下列引數:
- 要求主體 (通常是資源),做為 JavaScript 物件。
- 路徑或必要參數,做為個別引數。
- 媒體上傳附件,做為
Blob
引數。 - 選用參數,做為將參數名稱對應至值的 JavaScript 物件。
- HTTP 要求標頭,這是將標頭名稱對應至標頭值的 JavaScript 物件。
如果方法在特定類別中沒有任何項目,則會省略該部分的簽章。
請注意以下特殊例外狀況:
- 如果方法接受媒體上傳作業,系統會自動設定參數
uploadType
。 - 在 Google API 中,名為
delete
的方法在 Apps Script 中會改為remove
,因為delete
是 JavaScript 中的保留字。 - 如果進階服務已設定為接受 HTTP 要求標頭,且您已設定要求標頭 JavaScript 物件,則必須一併設定選用參數 JavaScript 物件 (如果您未使用選用參數,則為空白物件)。
支援進階服務
進階服務只是簡單的包裝函式,可讓您在 Apps Script 中使用 Google API。因此,使用這些函式時遇到的任何問題通常是底層 API 的問題,而非 Apps Script 本身的問題。
如果您在使用進階服務時遇到問題,請按照底層 API 的支援操作說明回報問題。您可以在 Apps Script 參考資料專區的各項進階服務指南中,找到這些支援操作說明的連結。