Google Apps Script 提供超過 30 個內建服務,可用於與使用者資料、其他 Google 系統和外部系統互動。這些服務是以全域物件的形式提供,類似於 JavaScript 的標準 Math
物件。舉例來說,如同 Math
提供 random()
等方法以及 PI
等常數,Apps Script 的試算表服務提供了 openById(id)
、類別 (子項物件) (例如 Range
) 和列舉 (例如 DataValidationCriteria
) 等方法。
如需控制Google Workspace 產品的服務參考說明文件,請參閱本網站側欄「參考資料」標題下方的「Google Workspace 服務」一節。「指令碼服務」部分會收集公用程式服務 (例如建立使用者介面、剖析 XML 或寫入記錄資料)。
新型 JavaScript 功能
Apps Script 支援兩種 JavaScript 執行階段:新型 V8 執行階段,以及採用 Mozilla Rhino JavaScript 解譯器提供的舊版執行階段。
V8 執行階段支援新型的 ECMAScript 語法和功能。Rhino 執行階段是以舊版 JavaScript 1.6 標準為基礎,加上 1.7 和 1.8 的幾項功能。您可自行選擇要搭配指令碼使用的執行階段,但強烈建議使用 V8 執行階段。
每個執行階段都支援除了內建和進階 Google 服務外,指令碼可用的 JavaScript 類別和物件。您的指令碼可以使用常見物件,例如 Array
、Date
、RegExp
和 等,以及 Math
和 Object
全域物件。
使用自動完成功能
指令碼編輯器提供「內容輔助」(更常見的「自動完成」) 功能,可指出指令碼目前環境中有效的全域物件,以及有效的方法和列舉。每當您輸入全域物件、列舉或傳回 Apps Script 類別的方法呼叫之後,系統就會自動顯示自動完成建議。例如:
- 如果輸入全域物件的完整名稱,或是從自動完成功能中選取某個物件,則輸入
.
(句號),就會看到該類別的所有方法和列舉。 - 如果您輸入幾個字元,就會看到以這些字元開頭的所有有效建議。
瞭解全域物件
每項服務至少會提供一個全域 (頂層) 物件;例如,Gmail 服務只能從 GmailApp
物件存取。某些服務提供多個全域物件;例如,基本服務包含四個全域物件:Browser
、Logger
、MimeType
和 Session
。
通話方式
幾乎所有內建或進階服務的全域物件,包含傳回資料或 Apps Script 類別的方法。指令碼會呼叫下列格式的方法呼叫:
GlobalObjectName.methodName(argument1, argument2, ..., argumentN);
舉例來說,指令碼可透過呼叫 Gmail 服務的 sendEmail(recipient, subject, body)
方法傳送電子郵件,如下所示:
GmailApp.sendEmail('claire@example.com', 'Subject line', 'This is the body.');
如果方法傳回另一個 Apps Script 類別,則可在一行中鏈結方法呼叫。(傳回類型會顯示在自動完成功能和方法的參考說明文件中)。舉例來說,DocumentApp.create()
方法會傳回 Document
;因此,以下兩個程式碼區段是對等的:
var doc = DocumentApp.create('New document');
var body = doc.getBody();
body.appendParagraph('New paragraph.');
// Same result as above.
DocumentApp.create('New document').getBody().appendParagraph('New paragraph.');
存取子類別
每項服務都包含一或多個子項類別,這類子項類別無法以全域物件的形式存取,因此無法從頂層存取。您無法使用 new
關鍵字建構這些類別,就像使用 Date
等標準 JavaScript 類別一樣,只能藉由呼叫傳回這個類別的方法來存取子項類別。如果您不確定如何存取特定類別,請前往該服務參考說明文件的根頁面,尋找會傳回所需類別的方法。
處理介面
很多服務包括在參考說明文件中標示為「介面」的特殊類別。這些一般類別是用於預先決定精確類型的方法傳回類型;例如,文件服務方法 Body.getChild(childIndex)
會傳回一般 Element
物件。Element
介面代表其他類別,可能是 Paragraph
或 Table
。介面物件本身很少有用,建議您呼叫 Element.asParagraph()
等方法,將物件投放回精確類別。
使用列舉
大多數服務都含有幾種具名值的列舉 (列舉類型)。舉例來說,雲端硬碟服務會使用列舉 Access
和 Permission
,判斷哪些使用者可以存取檔案或資料夾。在幾乎所有情況下,您可以從全域物件存取這些列舉。舉例來說,對 Folder.setSharing(accessType, permissionType)
方法發出的呼叫會如下所示:
// Creates a folder that anyone on the Internet can read from and write to. (Domain administrators can
// prohibit this setting for Google Workspace users.)
var folder = DriveApp.createFolder('Shared Folder');
folder.setSharing(DriveApp.Access.ANYONE, DriveApp.Permission.EDIT);