Workspaceアドオンで「毎日の手作業」を消す方法

ミドリ: タツヤさん、Gmailとスプレッドシートとカレンダーをいったりきたりしながら手動で転記する作業が多すぎて、気が狂いそうなんですけど……。

タツヤ: わかる。Google Workspaceを使ってる企業あるあるだね。でも実は、そういう手作業を自動化する「アドオン」を自分で作れるって知ってた?

ミドリ: アドオンって、Marketplace にあるやつですか? あれって企業が作ってるんだと思ってました。

タツヤ: もちろん企業が作ってるものも多いけど、GASを使えば特別なインフラなしに自前で開発できる。実際、Workspaceアドオンを導入した企業では、メール処理時間が平均45%削減、データ入力のヒューマンエラーが72%減少したっていう調査結果がある。

ミドリ: 45%削減! それは作りたくなりますね。

タツヤ(nodding): ちなみにGoogle Workspace Marketplaceに公開されてるアドオンは5,000を超えてて、日々増加してる。需要がそれだけあるってことだ。

アドオンの種類を知ろう

ミドリ: アドオンにも種類があるんですか?

タツヤ: 大きく2つある。開発前にどちらを選ぶか決めておくのが重要だ。

エディターアドオン

タツヤ: 1つ目がエディターアドオン。Googleスプレッドシート、ドキュメント、スライド、フォームに機能を追加するやつだ。

ミドリ: 活用例でいうと?

タツヤ: たとえば、スプレッドシートの売上データを自動でグラフ化して、Googleスライドのレポートテンプレートに差し込むアドオン、とかね。

統合型アドオン

タツヤ: 2つ目が統合型。Gmail、カレンダー、ドライブなど複数のサービスにまたがって動作するアドオンだ。

ミドリ: さっき言ってた「Gmailとカレンダーの間の転記」を解決するなら、こっちですね。

タツヤ: 正解。特定のエディターに特化した機能ならエディターアドオン、複数サービスを横断するなら統合型、と覚えておこう。

開発環境のセットアップ

ミドリ: 実際に作るには何が必要ですか?

タツヤ: 4つ準備すればOK。

  1. Googleアカウント — テスト用を別途用意するのがおすすめ
  2. Node.js(バージョン18以上推奨) — 後述するclaspの実行に必要
  3. clasp — ローカル開発環境でGASプロジェクトを管理する公式CLIツール。npm install -g @google/clasp でインストール
  4. コードエディタ — VS Code推奨。GAS/TypeScript用のエクステンションを追加すると補完が効く

claspを使う理由

ミドリ: claspって使わなきゃダメですか? GASのWebエディタでいいような……。

タツヤ: 小さなスクリプトならWebエディタでもいいけど、アドオン開発ではclaspを強く推奨する。最大のメリットはローカルのエディタで開発し、Gitでバージョン管理できること。

ミドリ: 基本的なワークフローは?

タツヤ: こんな感じだ。

  1. clasp login でGoogleアカウントと連携
  2. clasp create --type webapp で新規プロジェクト作成(既存なら clasp clone <スクリプトID>
  3. ローカルでコード編集
  4. clasp push でGASプロジェクトにアップロード
  5. clasp deploy でデプロイ

TypeScriptでの開発

ミドリ: TypeScriptも使えるんですか?

タツヤ: 使える。型定義ファイル @types/google-apps-script をインストールすれば、GAS固有のAPIにも型補完が効くようになる。規模の大きなアドオンやチーム開発では、バグの早期発見に貢献するから必須と言っていい。

Card ServiceでUIを作る

ミドリ(thinking): 統合型アドオンのUIって、どうやって作るんですか?

タツヤ: Card Serviceっていうフレームワークを使う。カード、セクション、ウィジェットの階層構造でインターフェースを定義するのが基本。主要なコンポーネントをまとめるとこうなる。

コンポーネント役割主な用途
CardBuilder画面全体を定義ページのルートコンテナ
CardSectionセクションを区切る機能ごとのグループ化
TextParagraphテキストの表示説明文、ステータス表示
TextInputユーザー入力フィールド検索ボックス、フォーム入力
ButtonSetアクションボタンの配置実行、キャンセルなどのアクション
SelectionInputドロップダウンやチェックボックスオプション選択
DecoratedTextアイコン付きリッチテキスト情報の視覚的な表示
Gridグリッドレイアウト画像やアイテムの一覧表示

UIデザインの4原則

ミドリ: UIを作るときのコツってありますか?

タツヤ: 4つの原則を守ろう。

マニフェストファイルの設定

ミドリ: 設定ファイルも必要なんですよね?

タツヤ(nodding): うん、appsscript.json がアドオン開発の要だ。特に重要な設定項目は3つ。

ミドリ: 「最小権限の原則」って?

タツヤ: 必要ない権限は設定しない、ってこと。よくある失敗が「とりあえず広い権限を設定しておく」パターン。セキュリティリスクが上がるだけじゃなくて、ユーザーがインストール時に過剰な権限要求を見て離脱する原因にもなる。

実践例1:Gmailメール分類・自動ラベリングアドオン

ミドリ: 具体的なアドオンの例を見たいです。

タツヤ(nodding): まずはGmailのメール分類アドオン。受信メールの内容を分析して、自動的にラベルを付与するやつだ。

実装する機能:

アーキテクチャ

タツヤ: 構成はこの5つのコンポーネントだ。

  1. コンテキストトリガー — メール開封時に起動し、メール情報を取得
  2. 分類ロジック — メール本文とヘッダー情報をもとにカテゴリと優先度を判定
  3. ラベル管理 — Gmailのラベルを自動作成・付与
  4. UI表示 — 分類結果をカード形式で表示し、手動でのカテゴリ変更も可能に
  5. タイムトリガー — 毎日定時にサマリーレポートを生成・送信

導入効果

ミドリ: 効果はどのくらいですか?

タツヤ: このタイプのアドオンを実装した企業のデータがある。

ミドリ: メール仕分けだけで1日37分の節約……月間で12時間以上ですね。

実践例2:カレンダー連携スケジュール管理アドオン

ミドリ: カレンダー連携の例も知りたいです。

タツヤ: メール内のスケジュール情報を自動検出して、カレンダーイベントとして登録するアドオンだ。

実装する機能:

ミドリ: 「来週の水曜午後」みたいな自然言語も解析できるんですか?

タツヤ: そこが技術的なポイント。正規表現による定型パターンのマッチング(「2026年4月15日 14:00」など)と、自然言語解析による柔軟な解釈(「来週の水曜午後」など)を組み合わせる。「再来週の月曜」「今月末」みたいな日本語特有の表現にも対応するパターンライブラリが必要になるけどね。

テストとデバッグ

ミドリ: 開発したアドオンのテストってどうやるんですか?

タツヤ: 「テストデプロイメント」機能を使う。本番環境に影響を与えずに、実際のWorkspace環境でテストできるよ。

  1. Apps Scriptエディタで「デプロイ」→「テスト デプロイメント」を選択
  2. テスト対象のアプリケーション(Gmail、カレンダーなど)を指定
  3. テスト用アカウントでアドオンの動作を確認
  4. 問題があればコードを修正し、再テスト

デバッグのコツ

ミドリ: デバッグで気をつけることは?

タツヤ: 3つある。

ミドリ: ログ出力は Logger.log() でいいんですか?

タツヤ: 開発中の簡易デバッグなら Logger.log() でOK。本番環境のエラー監視には console.log()(Google Cloud Loggingに出力される)を使おう。あとclaspとTypeScriptを使う場合は、ビジネスロジック部分を分離してJest等でユニットテストも実行可能だ。

公開とデプロイ

社内限定公開

ミドリ: 作ったアドオンを社内で共有するにはどうすれば?

タツヤ: Google Workspace管理者が組織内限定で公開できる。Marketplace審査は不要で、比較的短時間でデプロイ可能。まず社内限定で公開してフィードバックを収集し、十分にブラッシュアップしてからMarketplace公開を検討するのがセオリーだ。

Marketplace公開

ミドリ: 外部にも公開したい場合は?

タツヤ: Marketplaceへの申請が必要で、審査には通常1〜2週間かかる。公開前のチェックリストをまとめておこう。

パフォーマンスとコスト管理

ミドリ(confused): GASの制限ってアドオン開発でも関係しますよね?

タツヤ(smiling): めちゃくちゃ関係する。制限を意識した設計が重要だ。

制限項目無料アカウントWorkspaceアカウント
スクリプト実行時間6分/回6分/回
トリガー実行時間90分/日6時間/日
URLフェッチ呼び出し20,000回/日100,000回/日
メール送信100通/日1,500通/日

パフォーマンス最適化

ミドリ: 制限に引っかからないようにする方法は?

タツヤ: 4つのポイントを押さえよう。

まとめ

ミドリ: 今日の話をまとめると?

タツヤ: Workspaceアドオンは、日常的に使うビジネスツールに直接カスタム機能を組み込める非常に強力な仕組みだということ。GASの基本とCard Serviceの構造を押さえれば、チームの生産性を大幅に向上させるアドオンを比較的短期間で開発できる。

ミドリ: ポイントを振り返ると?

タツヤ: 5つだ。


次のアクション

ミドリ: これからアドオン開発を始める人は、まず何をすれば?

タツヤ: 3ステップだ。

  1. 業務課題の特定 — チームが日常的にやってる手作業の中から、自動化のインパクトが大きいものを1つ選ぶ
  2. プロトタイプの作成 — claspをセットアップして、選んだ課題を解決する最小限のアドオンを開発する
  3. チームでのテスト — テストデプロイメントでチームメンバーに試用してもらい、フィードバックを収集する

Shimanto AI Solutionsでは、Google Workspace環境の業務効率化をGASアドオン開発で支援しています。「こんな作業を自動化できないか」という段階からのご相談も歓迎しています。