「Excelへの手入力に毎日30分かかっている」「フォームで申込が来るたびに担当者へ手動で連絡している」「月末の集計作業だけで丸1日つぶれる」。当協会が中小企業のDX支援で相談を受ける中で、最も件数が多いのがこうした“単純だが毎日発生する”業務の負荷です。こうした課題に対して、外部ツールへの追加費用をかけずに、Google Workspaceの契約内だけで自動化を内製化できる手段が Google Apps Script(GAS) です。本記事では、GASの基本から始め方、実務で使えるサンプルコード、活用事例、料金・実行上限、他の自動化ツールとの比較、注意点までを網羅的に解説します。「情報システム担当が1人もいないが、業務自動化を自社でやってみたい」という中小企業の方に向けた決定版ガイドです。
Google Apps Scriptとは
Google Apps Script(GAS)は、Googleが無償で提供しているクラウド上のプログラミング環境です。JavaScriptをベースにした言語でコードを書き、Googleスプレッドシート・Gmail・Googleフォーム・カレンダー・ドライブなど、Google Workspaceの各サービスを自動で操作できます。ブラウザ上のスクリプトエディタだけで開発が完結し、サーバーの用意やソフトウェアのインストールが一切不要な点が最大の特徴です。
GASの仕組み
GASで書いたコードは、Google側のサーバー上で実行されます。自社のパソコンを起動しておく必要がなく、「毎朝6時に自動実行する」「スプレッドシートが編集されたら自動実行する」といった処理を、パソコンの電源を落としていても動かし続けられます。これは、自社サーバーやローカルマクロ(Excel VBAなど)との大きな違いです。
プログラミング未経験でも扱えるのか
GASの文法はJavaScriptに準じるため、ゼロからの学習にはある程度の時間が必要です。ただし、Googleが提供するサンプルコードや生成AI(ChatGPTやGeminiなど)を使えば、「やりたいこと」を伝えるだけでベースとなるコードを用意でき、中小企業の総務・経理担当者が実務の合間に学びながら内製化しているケースも増えています。
Google Workspaceとの関係
GASはGoogle Workspace(旧G Suite)の契約に標準で含まれる機能であり、追加のライセンス費用は発生しません。個人の無料Googleアカウントでも利用できますが、中小企業が業務で使う場合は、独自ドメインのメールや共有ドライブと組み合わせられるGoogle Workspaceでの利用が前提になります。
連携できる主なGoogleサービス
スプレッドシート(SpreadsheetApp)、Gmail(GmailApp・MailApp)、Googleフォーム(FormApp)、カレンダー(CalendarApp)、ドライブ(DriveApp)、ドキュメント(DocumentApp)が代表的な操作対象です。これらを組み合わせることで、「フォームで受け付けた申込データをスプレッドシートに書き込み、担当者にメールで通知する」といった一連の業務フローを1つのスクリプトで完結できます。
外部サービスとの連携
UrlFetchApp というクラス経由で外部サービスのAPIも呼び出せます。SlackやChatworkへの通知、外部の会計システムへのデータ送信など、Google Workspace内で完結しない自動化にも対応可能です。
GASでできること
GASの用途は多岐にわたりますが、中小企業の現場で特に効果が出やすいのは「繰り返し発生する定型作業の自動化」です。
データ処理・集計の自動化
複数シートに分散した売上データを1つのシートに自動集約したり、条件に応じて自動で色分け・並べ替えを行ったりできます。手作業では発生しがちな入力ミス・集計漏れも防げます。
通知・連絡の自動化
特定の条件(在庫が閾値を下回った、申込フォームが送信された等)を検知して、自動でメールやチャットへ通知を飛ばせます。「誰かが気づいて連絡する」という属人的な運用から脱却できます。
定型書類・レポートの自動作成
スプレッドシートの数値をもとに、日次・週次・月次のレポートを自動作成し、指定した関係者に自動送信することも可能です。
使い方(ステップ形式)
ここでは、実際にスクリプトエディタを開いてコードを実行するまでの流れをステップ形式で解説します。
Step 1:スクリプトエディタを開く
Googleスプレッドシートを開き、メニューの「拡張機能」から「Apps Script」を選択します。新しいタブでスクリプトエディタが立ち上がります。単体のプロジェクトとして作る場合は、Google ドライブで「新規」→「その他」→「Google Apps Script」からも作成できます。
Step 2:サンプルコードを書いて実行する
エディタに関数を記述し、上部の「実行」ボタンを押します。初回実行時は「承認が必要です」という画面が表示されるので、自分のGoogleアカウントでアクセス許可を与えます。実行結果はエディタ下部の「実行ログ」で確認できます。
Step 3:権限(スコープ)の承認
スプレッドシートの読み書き、Gmail送信など、スクリプトが操作するサービスごとに権限の許可を求められます。組織アカウントの場合、管理者が外部スクリプトの権限を制限していることがあるため、初回承認でブロックされた場合は情報システム担当(もしくは管理者権限を持つ人)に確認します。
Step 4:トリガーを設定する
スクリプトエディタの左メニューにある時計アイコン(トリガー)から、「時間主導型」「フォーム送信時」「スプレッドシート編集時」などの起動条件を設定します。これにより、手動実行しなくても自動で処理が走るようになります。
Step 5:テスト運用と本番移行
いきなり全社展開するのではなく、まずは自分の業務、もしくは影響範囲の小さい1つの帳票で試し、想定どおりに動くことを確認してから対象範囲を広げるのが安全です。
実務で効く自動化シナリオとサンプルコード
ここからは、中小企業の現場でよく使われる自動化シナリオをサンプルコードとともに紹介します。実際に導入する際は、シート名・列番号・宛先メールアドレスなどを自社の実情に合わせて書き換えてください。
シナリオ1:Googleフォーム申込の自動通知
フォームで申込があった際に、担当者へ自動でメールを飛ばす処理です。
function onFormSubmit(e) {
var values = e.values;
var name = values[1];
var mailAddress = "sales@example.co.jp";
var subject = "【自動通知】新規申込がありました";
var body = "お名前:" + name + "\n内容:" + values.join("\n");
MailApp.sendEmail(mailAddress, subject, body);
}
シナリオ2:スプレッドシートの自動集計
複数の行から条件に合う数値だけを合計し、集計用シートに書き出す処理です。
function summarizeSales() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("売上データ");
var data = sheet.getDataRange().getValues();
var total = 0;
for (var i = 1; i < data.length; i++) {
total += Number(data[i][2]);
}
var summarySheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("集計");
summarySheet.getRange("B2").setValue(total);
}
シナリオ3:定期レポートの自動メール送信
毎週月曜の朝、前週の集計結果を自動でメール送信する処理です。トリガーで「週ベースのタイマー」を設定して使います。
function sendWeeklyReport() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("集計");
var total = sheet.getRange("B2").getValue();
var body = "先週の売上合計は " + total + " 円でした。";
MailApp.sendEmail("manager@example.co.jp", "週次売上レポート", body);
}
シナリオ4:Slack・Chatworkへの通知連携
UrlFetchAppを使い、外部チャットツールのWebhook URLへ通知を送る例です。
function notifySlack(message) {
var webhookUrl = "https://hooks.slack.com/services/xxxx/xxxx/xxxx";
var payload = JSON.stringify({ text: message });
var options = {
method: "post",
contentType: "application/json",
payload: payload
};
UrlFetchApp.fetch(webhookUrl, options);
}
これらはいずれも数十行以内の短いコードですが、組み合わせることで「フォーム受付→自動集計→自動通知」という一連の業務フローを丸ごと自動化できます。より高度な自動化を検討したい場合は、当協会の AI・DX支援情報サイト でも関連情報を発信していますので、あわせてご覧ください。
活用事例
ここでは、当協会がDX支援の中で伴走した事例を、守秘義務の観点から業種・規模のみを開示する形で匿名化してご紹介します。
事例1:製造業のお客様(従業員30名規模)
受注データをスプレッドシートに手入力し、生産管理担当者へメールで個別連絡していた業務をGASで自動化。フォーム受付から担当者への通知までを自動処理化した結果、1日あたり平均40分かかっていた確認・連絡作業がほぼゼロになりました。
事例2:卸売業のお客様(従業員15名規模)
在庫数が一定数を下回った際に、担当者へ自動でメール通知を行う仕組みをGASで構築。従来は目視での在庫確認が週1回程度だったため発注の遅れが度々発生していましたが、自動監視化によって発注遅延がほぼ解消されました。
事例3:士業・専門サービス業のお客様(従業員8名規模)
顧客からの問い合わせフォームの内容を、担当者ごとに自動振り分けしてメール通知するスクリプトを導入。これまで代表者がすべての問い合わせを一次確認してから担当へ転送していた工程が不要になり、代表者の一次対応時間が月あたり約6時間削減されました。
共通して見えてきた傾向
いずれの事例にも共通するのは、「専用システムを導入するほどではないが、手作業のままでは非効率」というグレーゾーンの業務が自動化の対象になっている点です。GASは初期費用がかからないため、こうした小さな業務改善から着手しやすいというメリットがあります。
料金・実行上限(無料枠の制限)
GAS自体の利用に料金はかかりませんが、1日あたりの実行回数・実行時間・メール送信数などに上限(クォータ)が設けられています。個人の無料Googleアカウントと、Google Workspace(法人契約)のアカウントとでは上限値が異なります。
| 項目 | 個人アカウント(無料) | Google Workspaceアカウント |
|---|---|---|
| 1回あたりの最大実行時間 | 6分 | 6分 |
| トリガーの1日あたり合計実行時間 | 90分 | 6時間 |
| メール送信数(1日あたり) | 100通 | 1,500通(組織内宛は2,000通) |
| UrlFetch呼び出し回数(1日あたり) | 20,000回 | 100,000回 |
| 1スクリプトあたりの時間主導型トリガー数 | 20個 | 20個 |
クォータは24時間のローリングウィンドウでリセットされるため、日付が変わった瞬間にリセットされるわけではない点に注意が必要です。多くの中小企業の業務量であれば、Google Workspace契約下の上限に収まりますが、大量のメール一斉送信を想定している場合は事前に上限を確認しておくべきです。
他ツールとの比較
業務自動化のツールとしては、GASのほかにノーコードの自動化サービスであるZapierやMakeがよく比較対象になります。
| 項目 | Google Apps Script | Zapier | Make |
|---|---|---|---|
| 費用 | 無料(Google Workspace契約内) | 無料枠あり/有料は月額数千円〜 | 無料枠あり/有料は月額数千円〜 |
| 操作方法 | コード(JavaScriptベース)を記述 | ノーコードで画面設定 | ノーコード(ビジュアルフロー) |
| 得意分野 | Google Workspace内の細かい処理・条件分岐 | 他社SaaSとの連携数が豊富 | 複雑な分岐・大規模フローの可視化 |
| 想定ユーザー | 簡単なコードを書ける/覚える意欲がある担当者 | ノーコードで手早く連携したい担当者 | 複雑な自動化を視覚的に組みたい担当者 |
Google Workspaceの中だけで完結する自動化であれば、追加費用が発生しないGASが最も低コストです。一方、Salesforceや会計ソフトなど多数の外部SaaSと連携したい場合は、あらかじめ連携部品(コネクタ)が用意されているZapierやMakeの方が構築が速いこともあります。両者を「まずGASで内製化できる範囲を洗い出し、外部SaaS連携が必要な部分だけZapierやMakeを検討する」という使い分けが現実的です。
デメリット・注意点
プログラミングの学習コストがかかる
ノーコードツールと比べると、最低限のJavaScriptの文法理解が必要です。全くのゼロからだと、簡単な自動化でも数時間〜数日の学習時間を見込む必要があります。
属人化のリスクがある
作成した担当者が退職・異動すると、スクリプトの中身が分かる人がいなくなり、エラーが起きても誰も直せないという事態に陥りがちです。コード内にコメントを残す、簡単な仕様書を別途作成しておくといった対策が欠かせません。
無料枠の上限に達すると処理が止まる
前述のクォータを超えると、その日はそれ以上スクリプトが実行されなくなります。特にメール送信数の上限は見落としやすく、大量送信を伴う施策を組む前に必ず確認が必要です。
大規模・高負荷な処理には不向き
1回あたりの実行時間が最大6分に制限されているため、大量データの一括処理には工夫(分割実行など)が必要です。数万件を超えるような大規模データ処理を常時行う場合は、専用のシステムやデータベースの検討も視野に入れるべきです。
セキュリティ・権限管理の考慮が必要
スクリプトに外部送信先やAPIキーを直接書き込んでしまうと、共有ドライブ経由で意図せず情報が漏えいするリスクがあります。認証情報はスクリプトプロパティなど、コード本体とは別の場所で管理するべきです。
よくある失敗パターンと対策
失敗パターン1:作った本人しか分からないブラックボックス化
対策として、スクリプトの目的・トリガー条件・修正時の連絡先を簡単なメモとしてスプレッドシートの別シートに残しておくことをおすすめします。
失敗パターン2:本番データでいきなりテストして誤送信・誤上書きが発生
対策として、必ずコピーしたテスト用シートやテスト用メールアドレスで動作確認を行ってから、本番環境に反映する運用を徹底します。
失敗パターン3:クォータ超過に気づかず処理が止まっていた
対策として、エラー発生時に管理者へ通知が飛ぶような簡単なエラーハンドリングをスクリプト自体に組み込んでおくと、気づかないまま放置される事態を防げます。
失敗パターン4:野心的に作りすぎて途中で頓挫する
対策として、最初から完璧な自動化を目指さず、「まず1つの通知だけ」「まず1つの集計だけ」という小さな範囲から着手し、動くものを少しずつ広げていくのが定着への近道です。
まとめ
Google Apps Scriptは、Google Workspaceの契約内で追加費用なく使える業務自動化の手段であり、中小企業が外部ツールに依存せず「内製化」を進める上で有力な選択肢です。フォーム受付の自動通知、スプレッドシートの自動集計、定期レポートの自動送信など、日々の細かい手作業を自動化するだけでも、担当者の時間を大きく生み出せます。一方で、学習コストや属人化のリスク、無料枠の上限といった注意点もあるため、小さな範囲から着手し、仕様を記録しながら段階的に広げていくことが成功の鍵です。「何から自動化すればよいか分からない」という段階でも、まずは日々の業務の中で繰り返し発生している作業を1つ書き出してみることから始めてみてください。


