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 執行階段。
每個執行階段都支援 JavaScript 類別和物件
除了內建的指令碼外
以及進階 Google 服務。您的
指令碼可使用常用物件 (例如
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 指令程式類別,您可以在一行中連結方法呼叫。(傳回類型會同時顯示在自動完成和方法參照中)
documentation.)舉例來說,DocumentApp.create()
方法會傳回 Document
,因此以下兩個程式碼段落是等效的:
var doc = DocumentApp.create('New document');
var body = doc.getTab('t.0').asDocumentTab().getBody();
body.appendParagraph('New paragraph.');
// Same result as above.
DocumentApp.create('New document').getTab('t.0').asDocumentTab().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);