內建 Google 服務

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.71.8 的幾項功能。您可自行選擇要搭配指令碼使用的執行階段,但強烈建議使用 V8 執行階段。

每個執行階段都支援除了內建和進階 Google 服務外,指令碼可用的 JavaScript 類別和物件。您的指令碼可以使用常見物件,例如 ArrayDateRegExp,以及 MathObject 全域物件。

使用自動完成功能

指令碼編輯器提供「內容輔助」(更常見的「自動完成」) 功能,可指出指令碼目前環境中有效的全域物件,以及有效的方法和列舉。每當您輸入全域物件、列舉或傳回 Apps Script 類別的方法呼叫之後,系統就會自動顯示自動完成建議。例如:

  • 如果輸入全域物件的完整名稱,或是從自動完成功能中選取某個物件,則輸入 . (句號),就會看到該類別的所有方法和列舉。
  • 如果您輸入幾個字元,就會看到以這些字元開頭的所有有效建議。

瞭解全域物件

每項服務至少會提供一個全域 (頂層) 物件;例如,Gmail 服務只能從 GmailApp 物件存取。某些服務提供多個全域物件;例如,基本服務包含四個全域物件:BrowserLoggerMimeTypeSession

通話方式

幾乎所有內建或進階服務的全域物件,包含傳回資料或 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 介面代表其他類別,可能是 ParagraphTable。介面物件本身很少有用,建議您呼叫 Element.asParagraph() 等方法,將物件投放回精確類別。

使用列舉

大多數服務都含有幾種具名值的列舉 (列舉類型)。舉例來說,雲端硬碟服務會使用列舉 AccessPermission,判斷哪些使用者可以存取檔案或資料夾。在幾乎所有情況下,您可以從全域物件存取這些列舉。舉例來說,對 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);