Google Apps Script には、ユーザーデータ、他の Google システム、外部システムとやり取りするための 30 を超える組み込みサービスが用意されています。これらのサービスは、
グローバル オブジェクトとして提供され、JavaScript の標準
Math
渡されます。たとえば、Math
が random()
や
PI
、Apps Script の
スプレッドシート サービスでは、
openById(id)
,
などのクラス(子オブジェクト)に
Range
、および次のような列挙型があります。
DataValidationCriteria
Google Workspace プロダクトを制御するサービスのリファレンス ドキュメントは、このサイトのサイドバーの [リファレンス] ヘッダーにある [Google Workspace サービス] セクションにまとめられています。公共事業 (ユーザー インターフェースの作成、XML の解析、ログデータの書き込みなど)に関する情報が収集され、 [スクリプトサービス]でできます。
最新の JavaScript の機能
Apps Script では、2 つの 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 クラスを返すグローバル オブジェクト、列挙型、メソッド呼び出しの後にピリオドを入力すると、自動的に候補が表示されます。例:
- グローバル オブジェクトの完全な名前を入力するか、予測入力からグローバル オブジェクトを選択すると、
.
(ピリオド)と入力すると、そのクラスのすべてのメソッドと列挙型が表示されます。 - 数文字を入力すると、その文字で始まる有効な候補がすべて表示されます。
グローバル オブジェクトについて
各サービスは少なくとも 1 つのグローバル(トップレベル)オブジェクトを提供します。たとえば
Gmail サービスには
GmailApp
オブジェクト。一部のサービスは複数のグローバル オブジェクトを提供します。たとえば、ベースサービスには、Browser
、Logger
、MimeType
、Session
の 4 つのグローバル オブジェクトが含まれています。
呼び出し方法
組み込みのほぼすべての組み込みオブジェクトまたは 拡張サービスには、 データまたは 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 クラスを返す場合、1 つの Apps Script クラスでメソッド呼び出しを連結できる
追加します。(戻り値の型は予測入力とメソッドの参照内の両方に表示されます)
documentation.)たとえば、
DocumentApp.create()
Document
を返します。したがって、
次の 2 つのコード セクションは同等です。
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.');
子クラスへのアクセス
どのサービスにも、アクセスできない子クラスが 1 つ以上含まれている
グローバル オブジェクトと同様に使用できます。new
キーワードを使用して以下のことを行うことはできません。
などの標準の JavaScript クラスと同様に、これらのクラスを作成します。
Date
;
子クラスにアクセスするには、その子クラスを返すメソッドを呼び出す必要があります。もし
特定のクラスへのアクセス方法がわからない場合は、
必要なクラスを返すメソッドを探します。
インターフェースの処理
一部のサービスには、リファレンス ドキュメントで「インターフェース」とラベル付けされた特別なクラスが含まれています。これらは戻り値の型として使用される汎用クラスです。
正確な型を事前に判断できないメソッドの場合たとえば
Document サービス メソッド
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);