第146回


「毎月同じ手順でデータを整形してレポートを作る作業を、何とか自動化できないか」。
そうした課題を持つ担当者にとって、Googleスプレッドシートのマクロ機能は有力な選択肢です。ExcelのVBAに相当する仕組みがスプレッドシートにも備わっており、操作の記録・再生から本格的な業務自動化まで、幅広い用途に対応できます。
ただし、スプレッドシートのマクロはExcelのVBAとはまったく異なる仕組みで動作しており、「Excelでできたから同じようにできる」と思って進めると想定外の壁にぶつかることがあります。
本記事では、スプレッドシートにおけるマクロの仕組みをGASとの関係から整理し、具体的な記録・実行・活用の方法まで、実務で使える内容をお伝えします。

スプレッドシートのマクロとは、一連の操作を記録しておき、後から同じ操作を自動で再生させるための機能です。毎回同じ手順で行う作業(たとえば特定の列を削除して並べ替え、フォーマットを整えてから特定のシートにコピーするなど)をマクロに登録しておくと、次回からはワンクリックまたはショートカットキーで処理が完了します。
Googleスプレッドシートでマクロを記録すると、その操作は自動的にGoogle Apps Script(GAS)のコードとして保存されます。つまりスプレッドシートのマクロは、内部的にはGASのスクリプトです。この点がExcelのマクロ(VBA)との大きな違いのひとつです。
GASはJavaScriptをベースにしたGoogleのスクリプト言語で、スプレッドシートだけでなく、GmailやGoogleドライブ、Googleカレンダー、Googleフォームなどと連携した処理を書くことができます。マクロの記録機能はその入口であり、GASを直接記述することでより高度な自動化を実現できます。
「マクロを使う」という行為は、GASを使う行為と表裏一体です。記録機能で作ったマクロも、後からGASのスクリプトエディタで内容を確認・編集できます。記録だけでは表現しきれない処理(条件分岐、ループ、外部サービス連携)を加えたいときは、GASコードを直接書くことになります。
ExcelユーザーがスプレッドシートのマクロやGASに触れるとき、VBAとの違いを把握しておくことは重要です。主な相違点を整理します。
| 比較項目 | ExcelのVBA | スプレッドシートのGAS |
|---|---|---|
| プログラミング言語 | Visual Basic for Applications | JavaScript(ほぼ準拠) |
| 動作環境 | Windowsアプリ(ローカル実行) | クラウド(Googleサーバー上で実行) |
| 連携できるサービス | Officeアプリ・Windows環境 | Google全サービス・外部WebAPI |
| トリガー(自動実行) | ブックを開いたとき・時間ベース(Power Automate等との連携が必要なケースも) | 時間・イベントベースで柔軟に設定可 |
| コードの保存場所 | Excelファイル内に埋め込み | Googleスクリプトプロジェクト(クラウド) |
| 互換性 | VBAはスプレッドシートでは動作しない | GASはExcelでは動作しない |
特に注意すべきは、ExcelのVBAコードはスプレッドシートではまったく動作しないという点です。「VBAをコピーしてスプレッドシートに貼れば動くのでは」という発想は通用しません。GASはJavaScriptに近い文法ですが、オブジェクトモデルはExcelとまったく異なるため、移行には書き直しが必要です。

マクロ(GAS)でできることの範囲を把握することで、どこまで自動化を進められるかの見通しが立ちます。機能を大きく分けると、「スプレッドシート操作の自動化」と「Google各サービスとの連携」の二軸で整理できます。
マクロの記録機能を使うと、スプレッドシート上で行った操作(セルへの入力、書式の変更、シートのコピー、フィルターの適用など)をそのままコードに変換して保存します。次回以降はそのマクロを呼び出すだけで、同じ操作が自動で再現されます。
ただし、記録できる操作には制限があります。ドロップダウンの操作やデータの入力規則の設定など、一部の操作は記録されない場合があります。また、記録されたコードは冗長になりやすく、複雑な繰り返し処理を含む場合は後からGASで書き直した方が効率的です。記録機能はあくまで「GASコードを覚える入口」として位置づけるのが実務的な活用の仕方です。
GASで書いたスクリプトは、スプレッドシート単体の操作を超えて、Google全体のサービスを横断する処理が可能です。代表的な連携範囲を挙げると次のようになります。
このように、GASはGoogleエコシステムの中であればほぼあらゆるサービスと連携できる広がりを持っています。組み合わせ次第で、ヒューマンエラーが起きやすいルーティン業務の多くを自動化できます。

実際にマクロを使い始めるための手順を確認します。まず記録機能で入門し、その後GASで拡張するという流れが、最もスムーズな学習経路です。
スプレッドシートのメニューから「拡張機能」→「マクロ」→「マクロを記録」を選択すると、画面下部に記録中であることを示すバーが表示されます。この状態で自動化したい操作を実行します。操作が完了したら「保存」をクリックし、マクロに名前を付けます。必要であればショートカットキー(Ctrl+Alt+Shift+数字)も設定できます。
保存されたマクロは「拡張機能」→「マクロ」→「マクロの管理」から一覧で確認できます。マクロを選んで実行すると、最初に記録した操作が同じ順序で再生されます。初回実行時は権限の承認画面が表示されるため、Googleアカウントで承認を行う必要があります。
注意:マクロの記録中は、セル選択・シート切り替え・値の入力といった操作が記録対象になります。マウスで行ったスクロールや、フォントパネルの開閉など一部のUI操作は記録されない場合があります。また、記録されるコードは絶対参照で書かれることが多いため、記録後に相対参照への変更が必要になるケースもあります。
「拡張機能」→「Apps Script」を開くと、スクリプトエディタが表示されます。先ほど記録したマクロのコードがここに保存されており、内容を確認・編集できます。JavaScriptに近い文法で書かれているため、プログラミング経験のある担当者であれば比較的すぐに読み解けます。
たとえば、記録したコードが特定のセルの値を変更する処理だった場合、IF文を追加して「値が空の場合はスキップする」といった条件分岐を加えることができます。forループを使って複数行に同じ処理を適用することも可能です。GASのリファレンスはGoogleの公式サイト(Google Developers)に公開されており、スプレッドシートやGmailなど各サービスのクラスと使用可能なメソッドが文書化されています。
コードを書き終えたら「保存」ボタン(またはCtrl+S)で保存し、「実行」ボタンで動作を確認します。エラーが出た場合はエディタ下部のログ欄に詳細が表示されるため、問題の特定がしやすい設計になっています。

マクロはどのように起動するかによって、使い勝手が大きく変わります。スプレッドシートでは複数の実行方法が用意されており、用途に合わせて使い分けることができます。
最も基本的な実行方法は、「拡張機能」→「マクロ」→マクロ名という手順でメニューから起動することです。頻繁に使うマクロにはショートカットキーを割り当てておくと、操作効率が上がります。割り当てられるショートカットはCtrl+Alt+Shift+0〜9のいずれかで、最大10個のマクロに設定可能です。
シート上に図形(テキストボックスや長方形)を描き、右クリックから「スクリプトを割り当て」を選ぶと、その図形をクリックするだけでマクロが実行されるボタンとして機能させることができます。GASを知らないメンバーでも操作できるようにする場合に有効で、「月次集計実行」「データ更新」といったラベルを付けたボタンをシートに配置することで、業務フローに組み込みやすくなります。
ボタンへのマクロ割り当ては、GASに不慣れなチームメンバーに操作を委ねる場合に特に便利です。担当者が変わっても手順の属人化を防ぎやすくなります。
GASの「トリガー」機能を使うと、決まった時間や特定のイベントが起きたときにスクリプトを自動で実行できます。スクリプトエディタの「トリガー」メニュー(時計アイコン)から設定します。
| トリガーの種類 | 実行タイミング | 活用例 |
|---|---|---|
| 時間ベーストリガー | 毎分・毎時・毎日・毎週・毎月など指定した間隔 | 毎朝9時にデータを自動集計してメール送信 |
| スプレッドシート起動時 | ファイルを開いたとき | 起動時に最新データを外部から取得して更新 |
| スプレッドシート編集時 | セルに値が入力・変更されたとき | 特定のセルが更新されたらSlackへ通知 |
| フォーム送信時 | Googleフォームに回答が送信されたとき | フォーム回答が届いたら担当者にメールを自動送信 |
トリガーを活用すると、「誰かが手動でマクロを実行する」という前提が不要になり、業務フローをより確実に自動化できます。ただし、長時間実行されるスクリプトはGASの実行時間制限(無料版で1回6分、Google Workspace利用で1回30分)に引っかかることがあるため、処理の設計時に注意が必要です。

GASによる自動化は抽象的に語られることが多いですが、具体的な業務の文脈で見ると理解が深まります。企業のIT担当者が導入を検討する際に参考になる活用例を紹介します。
毎月末に担当者が手作業でデータを集計してレポートシートに転記する業務は、GASで自動化できる代表的な例です。スプレッドシートに蓄積された日次データを集計し、テンプレートとなるシートに転記して、整形済みの月次レポートシートを自動生成するスクリプトを組むことができます。
さらに時間ベーストリガーで月初の早朝に自動実行するよう設定しておくと、担当者が出勤した時点ですでにレポートが完成した状態になります。転記ミスや集計漏れといったヒューマンエラーも防げます。レポートのPDF化とGmailでの自動送信まで組み合わせれば、一連のレポーティング業務が完全に自動化されます。
他のシステムからエクスポートしたCSVデータを、スプレッドシートに取り込んでから整形・集計するという作業は、多くの組織で発生しています。この処理をGASで自動化すると、CSVをアップロードしてからボタンを押すだけで整形・集計が完了するようになります。
具体的には、不要な列の削除、空白行の除去、文字列の結合・分割、数値フォーマットの統一、ピボット的な集計処理などをスクリプトに組み込むことができます。Googleドライブ上の特定フォルダにCSVを置いたら自動で取り込む、というフローまで組み合わせると、担当者の作業はファイルを置くだけになります。
スプレッドシートに記録されたデータをもとにGmailで自動メールを送信する処理は、GASの活用例として代表的なものです。たとえば、顧客リストのスプレッドシートに「送信済みフラグ」列を設け、フラグが立っていない行に対してGmailAPIを使って自動でメールを送信し、完了したらフラグを更新する、というスクリプトを構成できます。
応用としては、「特定のセルの値が変わったらSlackのWebhookに通知を送る」「Googleカレンダーの予定を翌日分だけスプレッドシートにリストアップする」といった処理も実装できます。GASはGoogleサービスとの連携はもちろん、外部のWebAPIを呼び出すUrlFetchAppというクラスを持っているため、Slack・Chatwork・Zoom・各種SaaSとの連携も実現可能です。
GASはGoogleのサービス間を自由に横断できる「のり」のような存在であり、スプレッドシートはその中心的なデータハブとして機能します。スプレッドシートのマクロに慣れたら、GAS全体の活用を意識することで自動化の幅が大きく広がります。

スプレッドシートのマクロはポイントを押さえれば安全・安定して運用できますが、いくつかの注意点を把握しておかないと、思わぬトラブルにつながることがあります。
GASのスクリプトを実行する際は、Googleアカウントによるアクセス権限の承認が必要です。スクリプトがGmailを操作するなら「Gmailの読み取り・送信」の権限、スプレッドシートを操作するなら「スプレッドシートへのアクセス」といった権限を、実行するGoogleアカウントが承認する必要があります。
組織のGoogle Workspaceアカウントでスクリプトを承認する際は、管理コンソールのポリシーで制御されていることもあります。外部サービスとのAPI連携を含むスクリプトは、IT管理者がドメイン全体での承認(ドメイン管理のOAuth)を行う方法もあります。組織内で共有するスクリプトは、どのアカウントで実行・承認するかを事前に設計しておくことが重要です。
また、スクリプトのコードにAPIキーやパスワードをべた書きすることは避けてください。GASにはスクリプトプロパティという設定保存の仕組みがあり、機密情報はそちらに格納する方が安全です。
GASのスクリプトはGoogleのサーバー上で実行されますが、実行時間に制限があります。1回の実行で処理できる最大時間は、個人のGoogleアカウントでは6分、Google Workspaceユーザーでは30分です。大量のデータを一行ずつ処理するような非効率なコードは、この制限に引っかかりやすくなります。
スプレッドシートへのデータ読み書きは、セルを一つずつ処理するより、まとめて配列で処理する方が大幅に速くなります。たとえば1,000行のデータを処理する場合、1行ずつgetValue()を呼ぶのではなく、getValues()でまとめて取得してから配列で処理し、最後にsetValues()でまとめて書き戻す設計が推奨されます。これはGASでパフォーマンスを改善する際の基本的な考え方です。
メンテナンス面では、スクリプトにコメントを書き、何をしているコードかを記録しておくことが重要です。担当者が変わったときに「このコードが何をしているか分からない」という状況を防ぐため、可読性を意識したコード設計と、変更履歴の記録を習慣にしておくと運用が安定します。
これらのポイントを意識してスクリプトを設計することで、長期にわたって安定した自動化基盤を維持できます。

Googleスプレッドシートのマクロは、記録機能という入口から始められる一方で、GASを活用することでGoogleサービス全体を横断する本格的な業務自動化まで到達できる奥行きを持っています。毎月の定型レポート作成、フォーム連携、自動メール送信といった処理は、GASを使いこなせば担当者の手を離れて動き続けるようになります。
一方で、スクリプトの設計・開発・メンテナンスにはある程度の知識と経験が必要です。「どこから手をつければよいか分からない」「GASを使った自動化を組織全体に広めたい」という場合は、Google Workspaceの専門家に相談することが近道になります。
サテライトオフィスはGoogle Workspaceプレミアパートナーとして、Google Apps Script(GAS)を活用した業務改善の相談にも対応しています。Google Workspaceの導入支援から、スプレッドシートを活用した業務フローの設計、GASによるカスタマイズ開発の支援まで、幅広い実績を持っています。8万社以上へのクラウドアドオンツール導入実績から蓄積されたノウハウを活かし、貴組織に適した自動化の進め方を提案します。
スプレッドシートのマクロ活用やGoogle Workspace環境の整備について、まずはお気軽にサテライトオフィスへご相談ください。
※プライバシーポリシはこちら