經驗豐富的開發人員可透過 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 參考資料專區中,每個進階服務指南都會提供這些支援說明的連結。