Google Apps Scriptで業務自動化|スプレッドシート・Gmail連携の始め方

Google Apps Scriptによるスプレッドシート自動化と業務効率化のイメージ

「毎月同じフォーマットの集計を手作業でやっている」「スプレッドシートの内容を手でコピーしてメール送信している」──こうした繰り返し作業、みなさんの職場でも発生していないでしょうか。Excelは非常に優れたツールですが、定期的な処理の自動化やほかのサービスとの連携という点では、設定の複雑さや環境依存という壁があります。

そこで注目したいのがGoogle Apps Script(GAS)です。GASはGoogleが提供する無料のスクリプト環境で、Google スプレッドシート・Gmail・Googleカレンダー・Googleフォームなど、Google Workspaceのサービス全体と簡単に連動できます。JavaScriptベースで書けるため、プログラミングの基礎があれば比較的スムーズに始められます。本記事では、GASの概要から実際のコード例、トリガー設定、注意点、そして本格的なシステム開発との使い分けまでを解説します。

目次

Google Apps Script(GAS)とは

Google Apps Script(以下GAS)は、Googleが提供するクラウドベースのスクリプト環境です。JavaScriptを拡張した言語で書かれており、スプレッドシート、Gmail、カレンダー、フォーム、ドライブなど、Google Workspaceの多くのサービスをスクリプトから操作できます。利用できる機能は、Apps Scriptで提供されているサービス、Google API、アカウントの権限、管理者設定によって異なります。

Google Apps Scriptは、Googleアカウントがあれば追加の開発環境を用意せずに始められるクラウドベースのスクリプト環境です。小規模な自動化であれば無料で始められる場合があります。ブラウザ上でコードを書いて実行でき、Googleのサーバー上で実行されるため、パソコンの電源が切れていても自動実行のトリガーが動き続けます。

ただし、メール送信数、実行時間、外部API呼び出しなどにはクォータ制限があります。また、Google Workspaceの契約、外部API利用料、保守・運用の工数が必要になる場合もあります。「完全無料で何でも自動化できる」と考えるのではなく、小規模な業務自動化に向いた選択肢として位置づけるのが安全です。

ExcelのVBAと比較されることが多いですが、VBAはローカルのExcelファイルに依存するのに対し、GASはクラウド上で動作するため、複数人での共同作業や外部サービスとの連携がしやすいという違いがあります。特にSlackやChatworkへの通知送信、外部APIとの連携といった用途では、GASの方が格段に実装しやすい場面が多くあります。

GASでできる自動化の例5選

GASを活用した自動化の代表的なユースケースを5つご紹介します。いずれも業務現場で実際に使われている実用的な例です。

①定期レポートの自動送信

スプレッドシートに蓄積されたデータを毎朝・毎週決まったタイミングで集計し、担当者や上長にGmailで自動送信する仕組みです。「毎週月曜に先週の売上集計をメールする」「月次KPIレポートを月初に自動配信する」といった用途に使えます。時間ベースのトリガーを設定するだけで、手動での作業がゼロになります。

②Googleフォーム回答の自動処理

Googleフォームに回答が届いたタイミングで、その内容をスプレッドシートに書き込みながら同時にメール通知を送ったり、特定の条件(例:評価が低かった場合)に応じて担当者に個別アラートを送ったりすることができます。問い合わせフォーム・社内申請フォーム・アンケートなど幅広い用途に応用できます。

③在庫・数値のアラート通知

スプレッドシートで管理している在庫数・予算残高・目標達成率などが一定の閾値を下回ったり上回ったりした際に、Slack・ChatworkなどのチャットツールにWebhookで通知を送る仕組みです。毎回手動で確認しなくても、異常値が発生したときだけ自動で知らせてくれるようになります。

④日報・週報の自動集計

メンバーが個別に記入した日報シートの内容を、毎日17時に自動集計してマネージャー向けのサマリーシートを生成する、といった使い方ができます。複数シートをまたいだデータの集約・整形・転記を自動で行えるため、集計担当者の工数を大幅に削減できます。

⑤Googleカレンダーとの連携

スプレッドシートに入力したスケジュール情報をGoogleカレンダーに自動登録したり、翌日のカレンダー予定を毎朝メールで通知したりすることができます。プロジェクトの期限管理・定例会議の自動登録・スケジュール変更の自動通知など、カレンダーと他ツールをつなぐハブとして活用できます。

定期レポートの自動送信 フォーム回答の自動処理 在庫数値のアラート通知 日報週報の自動集計 カレンダーとの連携 GASでできる自動化
GASでできる自動化
定期レポートの自動送信
フォーム回答の自動処理
在庫・数値のアラート通知
日報・週報の自動集計
カレンダーとの連携

実際のコード例──毎朝9時にレポートメールを自動送信する

ここでは、スプレッドシートのデータを集計して毎朝9時にメールで送信するスクリプトの例を段階的に解説します。

ステップ1:スプレッドシートを開いてスクリプトエディタを起動する

Googleスプレッドシートを開き、メニューの「拡張機能」→「Apps Script」をクリックします。スクリプトエディタが別タブで開きます。

ステップ2:スクリプトを記述する

function sendDailyReport() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('売上データ');

  if (!sheet) {
    throw new Error('シート「売上データ」が見つかりません。');
  }

  const lastRow = sheet.getLastRow();

  if (lastRow < 2) {
    Logger.log('集計対象データがありません。');
    return;
  }

  const data = sheet.getRange(2, 1, lastRow - 1, 3).getValues();
  const today = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyy/MM/dd');

  let total = 0;
  const lines = [];

  data.forEach(function(row) {
    const dateValue = row[0];
    const itemName = row[1];
    const amount = Number(row[2]) || 0;

    const rowDate = dateValue instanceof Date
      ? Utilities.formatDate(dateValue, 'Asia/Tokyo', 'yyyy/MM/dd')
      : String(dateValue);

    if (rowDate === today) {
      lines.push(itemName + ': ' + amount.toLocaleString() + '円');
      total += amount;
    }
  });

  const body =
    today + 'の売上レポート\n\n' +
    (lines.length ? lines.join('\n') : '本日の売上データはありません。') +
    '\n\n合計: ' + total.toLocaleString() + '円';

  const recipient = 'manager@example.com';

  GmailApp.sendEmail(
    recipient,
    today + ' 売上日報',
    body
  );
}

このコードは、対象シートが存在しない場合や、その日のデータが1件もない場合でもエラーで停止しないよう、簡単なチェックを入れています。実運用では、送信先メールアドレスをコード内に直接書かず、設定シートやPropertiesServiceに保存する方法も検討してください。

ステップ3:動作確認をする

スクリプトエディタ上部の実行ボタン(▶)を押して、テスト実行します。初回は権限の許可を求められるので、Googleアカウントの権限を承認してください。指定したメールアドレスにメールが届けば成功です。

ステップ4:トリガーで毎朝自動実行に設定する

スクリプトエディタの左メニューから「トリガー」を選択し、「トリガーを追加」ボタンをクリックします。実行する関数を「sendDailyReport」に設定し、「時間ベースのトリガー」→「午前9時〜10時」を選択して保存すれば、毎朝9時台に自動実行されるようになります。

トリガーの設定方法

GASのトリガーには大きく2種類あります。それぞれの特徴と使いどころを理解しておくと、自動化の設計がしやすくなります。

時間ベースのトリガーは、決まった時刻や時間間隔でスクリプトを実行します。「毎日〇時〜〇時の間に実行」「毎週月曜日に実行」「毎月1日に実行」「1時間おきに実行」などの設定が可能です。定期レポート送信・在庫チェック・データバックアップといった用途に向いています。実行時刻は1時間の幅(例:「午前9時〜10時」)でしか指定できないため、正確に9時00分に実行されるわけではありません。その点は設計時に考慮が必要です。

スプレッドシートのイベントトリガーは、スプレッドシートで特定のアクションが発生したときにスクリプトを実行します。「シートを開いたとき(onOpen)」「セルを編集したとき(onEdit)」「フォームに回答が送信されたとき(onFormSubmit)」の3種類が代表的です。フォーム回答の自動処理・セル変更時の通知・特定条件での自動計算といった用途に使います。

Apps Scriptのクォータ制限に注意する

Google Apps Scriptには、実行時間、メール送信数、URL Fetch、同時実行数、トリガー総実行時間などの上限があります。

実行時間の上限:公式ドキュメントでは、スクリプトの1回あたりの実行時間は6分とされています。大量のデータを処理するスクリプトや、外部APIへのリクエストが多い処理では、この制限に引っかかることがあります。大量データを扱う場合は、処理を分割して複数回に分けて実行するか、バッチ処理の設計を工夫する必要があります。

メール送信数・トリガー総実行時間:メール送信数や1日あたりのトリガー総実行時間は、個人(無料)アカウントとGoogle Workspaceアカウントで異なります。目安として、メール送信は個人アカウントで1日100通程度、Google Workspaceアカウントではより多く送信できます。大量送信が必要な用途では、Google Workspaceの契約を検討するか、SendGridなどの外部メール送信サービスを組み合わせることが現実的です。

クォータは変更される可能性があるため、実運用前にはGoogle公式のApps Script Quotasを確認してください。

トリガー作成者アカウントの管理に注意する

Google公式ドキュメントでは、インストール可能なトリガーは常に作成者のアカウントで実行されると説明されています。そのため、個人アカウントで業務用トリガーを作成すると、担当者の退職・異動・アカウント停止によって自動処理が止まる可能性があります。

業務でGASを使う場合は、以下を決めておきましょう。

  • 誰のアカウントでトリガーを作成するか
  • 退職・異動時に誰が引き継ぐか
  • スクリプトの所有者をどう管理するか
  • エラー通知を誰が受け取るか
  • 本番用・テスト用のスプレッドシートを分けるか

詳細はGoogle公式のInstallable Triggersを確認してください。

セキュリティ・権限管理で注意すべきこと

GASは便利ですが、Googleアカウントの権限でGmail、Drive、スプレッドシートなどを操作できるため、権限管理を誤ると情報漏えいや誤送信につながる可能性があります。

特に以下に注意してください。

  • 顧客情報・個人情報・財務データを扱う場合は閲覧権限を最小限にする
  • スクリプトの共有範囲を必要最小限にする
  • 本番データで直接テストしない
  • メール送信先をコードに直書きしない
  • APIキーやトークンをスクリプト内に直接書かない
  • PropertiesServiceやGoogle Cloud Secret Managerなどの利用を検討する
  • エラー時に管理者へ通知する
  • 実行ログに個人情報や機密情報を残しすぎない

GASでは対応しきれないケースと本格システム開発の検討基準

GASは手軽で強力な自動化ツールですが、すべての業務課題に対応できるわけではありません。以下のようなケースでは、本格的なシステム開発を検討する段階に来ているサインかもしれません。

  • 処理データ量が多くなってきた:数万〜数十万行以上のデータを扱うようになると、GASの実行時間制限に頻繁に引っかかるようになります。専用のデータベースとサーバーサイドの処理基盤が必要なレベルです。
  • 複数部門・複数システムにまたがる業務フローを自動化したい:GASはGoogle Workspaceとの連携が主体です。基幹システム・SFA・ERPなど、他のシステムとの深い連携が必要な場合は、専用のAPI連携やシステム間インテグレーションが必要になります。
  • スクリプトの複雑さが増してメンテナンスが困難になってきた:担当者が変わるたびにスクリプトの理解に時間がかかり、修正が怖くなってきたという場合は、適切な設計・ドキュメント整備・テスト体制を備えた業務システムへの移行を検討するタイミングです。
  • セキュリティや権限管理を厳格に行う必要がある:顧客情報・個人情報・財務データなど機密性の高い情報を扱う処理は、GASよりも適切なアクセス制御と監査ログを備えた専用システムで管理することが望ましいです。
GASで十分なケース 定型レポート・通知・在庫 アラートなど定型作業の自動化 Google Workspace内(スプレ ッドシート等)で完結する処理 プログラミングの基礎があれ ば始められる小規模な自動化 Googleアカウントのみで 無料に始められる 本格システム開発が必要なケース 処理データ量が多くなってきた (数万〜数十万行以上) 複数部門・複数システムに またがる業務フローを自動化したい スクリプトの複雑さが増して メンテナンスが困難になってきた セキュリティや権限管理を 厳格に行う必要がある VS
GASで十分なケース
  • 定期レポート・通知・在庫アラートなど定型作業の自動化
  • Google Workspace内(スプレッドシート・Gmail・カレンダー等)で完結する処理
  • プログラミングの基礎があれば始められる小規模な自動化
  • Googleアカウントがあれば追加費用なしに始められる
VS
本格システム開発が必要なケース
  • 処理データ量が多くなってきた(数万〜数十万行以上)
  • 複数部門・複数システムにまたがる業務フローを自動化したい
  • スクリプトの複雑さが増してメンテナンスが困難になってきた
  • セキュリティや権限管理を厳格に行う必要がある

AIを活用するとさらに効率化できること

GASとAIを組み合わせることで、単純な自動化を超えた「判断を含む自動処理」が実現できます。2つの活用方法を具体的にご紹介します。

Gemini APIをGASから呼び出してAI分析を行う:GoogleのGemini APIはGASから直接呼び出すことができます。たとえば、顧客からの問い合わせメールが届いたときに、その内容をGemini APIに送って「緊急度の判定」「対応分類(技術/請求/一般)」「返信文案の生成」を自動で行い、担当者に分析結果ごと転送する、という仕組みが作れます。スプレッドシートに蓄積された自由記述のアンケートデータをAIで自動分類・要約するといった用途にも応用できます。

ChatGPTでGASスクリプトを自動生成する:「やりたいことを日本語で説明する→ChatGPTがGASのコードを生成してくれる→そのままスクリプトエディタに貼り付けて実行する」という流れが、プログラミングの知識が少ない方でも実用的に使えるようになっています。「毎週金曜17時に、シート名『週報』のA列〜D列のデータをCSV形式でメール添付して送るスクリプトを書いて」といった具体的な指示をChatGPTに与えることで、動作するコードが得られます。ただし、生成されたコードをそのまま本番環境で実行するのは危険です。

AIでGASコードを作るときの注意点

ChatGPTやGeminiに依頼すると、GASのコードを短時間で作成できます。ただし、生成されたコードをそのまま本番環境で実行するのは危険です。最低限、以下を確認してください。

  • どのシート・どのセル範囲を読み書きするか
  • メール送信先が正しいか
  • 顧客情報や個人情報を外部AIに入力していないか
  • APIキーやパスワードをAIに渡していないか
  • 削除処理・上書き処理が含まれていないか
  • エラー時に処理が止まるか、誤送信が起きないか
  • テスト用ファイルで動作確認してから本番へ反映するか

AIはコード作成の補助として有効ですが、業務データを扱う場合は、必ず人が内容を確認してから実行してください。

GASとAIの組み合わせは、技術的なハードルを下げながら業務自動化の適用範囲を広げる有力な手段です。まずはシンプルなGASスクリプトから始め、慣れてきたらAI連携を試してみることをおすすめします。

よくある質問

Google Apps Scriptは本当に無料で使えますか?
小規模な自動化であれば無料で始められる場合があります。ただし、メール送信数や実行時間にはクォータ制限があり、大量送信や高頻度の実行が必要な場合はGoogle Workspaceの契約や外部サービスの利用料が発生することがあります。
プログラミング未経験でもGASを使えますか?
JavaScriptの基礎知識があれば始めやすいです。未経験の場合でも、ChatGPTなどのAIにコード生成を依頼して動作を確認しながら学ぶ方法もありますが、業務データを扱う場合は生成されたコードを必ず人が確認してから実行してください。
GASのトリガーを作った担当者が退職したらどうなりますか?
インストール可能なトリガーは作成者のアカウント権限で実行されるため、担当者が退職・異動してアカウントが停止すると、トリガーが動かなくなる可能性があります。事前に所有者の引き継ぎルールを決めておくことが重要です。
GASと本格的なシステム開発はどちらを選ぶべきですか?
定型作業の自動化やGoogle Workspace内で完結する小規模な処理はGASが向いています。処理データ量が数万行を超える、複数システムとの連携が必要、厳格な権限管理・監査ログが必要といった場合は、本格的なシステム開発を検討する段階です。

まとめ

Google Apps Scriptは、Googleアカウントがあれば追加の開発環境を用意せずに始められる自動化ツールです。定期レポート送信・フォーム連携・在庫アラート・日報集計・カレンダー連携など、業務の中にある繰り返し作業を削減できる可能性があります。JavaScriptの基礎知識があればすぐに書き始められますし、ChatGPTを活用すればコードの自動生成も選択肢になります。ただし、クォータ制限、トリガー作成者アカウントの管理、権限管理といった注意点を理解した上で運用することが大切です。

一方で、データ量の増加・複数システムとの連携・セキュリティ要件の高まりといった段階に達した場合は、本格的なシステム開発への移行が選択肢になります。株式会社アイ・エス・プライムでは、GASによる小規模な自動化支援から、業務システムのフルスクラッチ開発・DX推進支援まで幅広く対応しております。AI業務活用コンサルティングや、社内情報の整理でお悩みの場合はナレッジベース構築法の記事もあわせてご覧ください。LINEと業務システムの連携にご興味があればLINE公式アカウント×業務システム連携の記事も参考になります。「まずは相談だけ」という段階からでも、お気軽にお問い合わせください。

あわせて読みたい

システム開発の詳細はこちら →AI業務活用コンサルティング →お問い合わせ →

  • URLをコピーしました!

この記事を書いた人

石原 則和のアバター 石原 則和 代表取締役

株式会社アイ・エス・プライム 代表取締役。群馬県桐生市を拠点に、中小企業の業務改善・システム開発・Web制作・ウェブ解析・IoT・DX支援を手がける。コンサルティングを軸に、お客様の業務を深く理解したうえで最適なソリューションを提案するスタイルで、製造業・小売業・サービス業など多様な業種の課題解決に携わる。ウェブ解析士マスター・提案型ウェブアナリスト・生成AIパスポート・デジタル庁 デジタル推進委員。

まずはお気軽にご相談ください

社内業務の省力化・ウェブサイト制作・解析・コンサルティングなど、お気軽にお問合せください。

お電話でのお問い合わせ
0277-46-7608
平日 10:00〜18:00
フォームでのお問い合わせ
お問合せフォーム
24時間受付・2営業日以内に返信
目次