Google Apps Script の使い方
Google Apps Script (GAS)は、Googleスプレッドシートやフォームなどのサービスと連携し、
作業の自動化や簡易アプリケーションの構築ができるスクリプト実行環境です。
現在はV8ランタイムに対応(2020年3月17日)していて、モダンなJavaScript環境のひとつとして使うことができます。
ブラウザだけで開発・実行できるのが大きな特徴です。
一方で、GAS特有の制約として、モジュール分割(ESModule)やimport/export文がそのままでは利用できません。
そのため、コード量が増えてくるにつれて構造化が難しくなり、
保守性の低下といった課題に直面しやすくなります。
このページでは、GASエディターを直接編集するのではなく、 ローカルで開発・ビルドしてからGASにデプロイするという開発スタイルを紹介します。 具体的には、次の3段階のワークフローになります。
TypeScript(tsc --noEmit)で型チェックするrollupで1つのファイルにバンドルするclasp pushでGAS環境にアップロードする
このワークフローに加えて、テスト(jest)やフォーマッター/リンター(biome)、
APIドキュメント生成(typedoc)といった補助ツールも組み合わせることで、
GASプロジェクトを通常のTypeScriptプロジェクトと同じように開発・保守できるようになります。
注釈
GASの情報を検索すると、新しい書き方と古い書き方が混在したコード片が多く見つかります。 とくにV8ランタイム以前の記述や、現在では推奨されない書き方がそのまま紹介されているケースもあります。 そのため、単にサンプルコードを流用するだけでは、動かないこともたくさんあります。
このページでは、ウェブに落ちているコードを、どのように読み替えるかについても整理することを目指します。
環境構築したい
TypeScript → rollup → claspという開発チェーンと、
それを支える補助ツールの使い方をまとめています。
JS/TSしたい
変数・関数・クラスなど、GASに限らないJavaScript/TypeScriptの基本文法をまとめています。
GAS操作したい
LoggerやSpreadsheetAppなど、GAS固有のクラス・サービスAPIの使い方をまとめています。
- ログしたい(
Logger) - サービスIDしたい
- ドライブしたい(
DriveApp) - スプレッドシートを操作したい(
SpreadsheetApp) - ドキュメントしたい(
DocumentApp) - フォームしたい(
FormApp) - メールしたい(
MailApp/GmailApp) - グループ管理したい(
GroupsApp) - カレンダーしたい(
CalendarApp) - HTTPリクエストを送信したい(
UrlFetchApp) - GETリクエストを処理したい(
doGet) - トリガーを作成したい(
ScriptApp.newTrigger) - プロパティしたい(
PropertiesService) - 使用制限
- イテレーターしたい(
GoogleAppsScript.Base.Iterator)