毎週決まった曜日にスプレッドシートを開いて、広告レポートの数字をコピペして、合計を出して、上司にメールで送る——そんな「代わり映えのしない作業」に毎回30分を溶かしていないでしょうか。マーケティング業務は、データを集めて、整えて、共有するという定型作業の連続です。その繰り返しを肩代わりしてくれるのがGAS(Google Apps Script)です。この記事では、GASとは何かという基本から、できること・注意点・始め方までを、プログラミング未経験の方にもわかるように整理して解説します。
GAS(Google Apps Script)とは何か
読み方と正式名称
GASは「ガス」と読み、正式名称は Google Apps Script(グーグル アップス スクリプト) です。Googleが無料で提供している、Googleのサービスを操作・自動化するためのプログラミング環境を指します。
「GAS」という3文字だけを見ると天然ガスや化学分野の用語と紛らわしいのですが、IT・ビジネスの文脈で「GASとは?」と語られるときは、ほぼ例外なくGoogle Apps Scriptのことだと考えて差し支えありません。
ひとことで言うと「Googleサービスを動かす自動化の仕組み」
GASを最も短く説明するなら「GoogleスプレッドシートやGmail、Googleカレンダーなどを、人の代わりに自動で操作してくれる仕組み」です。
たとえば次のような処理を、コード数行から数十行で実現できます。
- スプレッドシートの特定の列を毎朝集計して、別のシートに転記する
- Googleフォームに回答が入ったら、その内容を担当者にメールで通知する
- 毎週月曜9時に、レポート用シートを自動でPDF化して関係者に送る
人がやると単純だけど面倒な作業を、決められた手順どおりに、決められたタイミングで実行してくれる。それがGASの本質です。
なぜ「スプレッドシートの機能」として語られることが多いのか
「GASとはスプレッドシートで何ですか?」という質問が多いのは、GASの入り口としてスプレッドシートが圧倒的に使われているからです。スプレッドシートのメニューから「拡張機能 → Apps Script」と進むだけでコードを書く画面が開くため、Excelのマクロに近い感覚で使い始められます。
ただし実際のGASは、スプレッドシート専用の機能ではありません。Gmail、Googleドライブ、Googleカレンダー、Googleフォーム、Googleドキュメント、Google アナリティクスなど、Googleの主要サービス群を横断して操作できます。さらに外部サービスのAPIも呼び出せるため、「Googleの中だけで完結する仕組み」という理解はやや狭すぎます。
どんなプログラムなのか(言語とランタイム)
GASのコードは JavaScriptをベースにした言語 で書きます。現在はV8ランタイムが採用されており、let / const によるモダンな変数宣言、アロー関数、クラス構文、テンプレートリテラルといった近年のJavaScript記法がそのまま使えます。
書き方のイメージは次のとおりです。スプレッドシートのA1セルに文字を書き込むだけなら、これだけで済みます。
function writeHello() {
const sheet = SpreadsheetApp.getActiveSheet();
sheet.getRange('A1').setValue('こんにちは');
}
SpreadsheetApp のようにGoogleが用意した専用のオブジェクト(サービス)を呼び出して、Googleのサービスを操作していく——これがGASの基本構造です。
GASの4つの特徴
特徴1:完全に無料で使える
GASを使うのに追加費用は一切かかりません。個人のGoogleアカウント(Gmailアカウント)さえあれば、その日から利用を開始できます。もちろんGoogle Workspaceの法人アカウントでも使えますが、有料プランへの加入がGAS利用の条件になっているわけではありません。
社内の業務改善ツールとして検討する場合、「まずコストの稟議を通す」という最初のハードルが存在しない点は、実務上かなり大きなメリットです。
特徴2:環境構築が不要でブラウザだけで完結する
一般的なプログラミングでは、言語のインストール、エディタの用意、実行環境の設定といった準備が必要です。GASにはそれがありません。
コードを書くエディタはブラウザ上で動き、書いたコードはGoogleのサーバー上で実行されます。自分のPCの電源が落ちていても、設定した時刻に処理が動きます。「自動化ツールを動かすための専用PCを常時起動しておく」といった運用が不要な点は、Excelマクロとの明確な違いです。
特徴3:JavaScriptベースで学習しやすい
GASはJavaScript互換の文法を採用しているため、Web制作やフロントエンド開発の経験がある人なら、ほぼ学習コストなしで書き始められます。
未経験者にとっても、JavaScriptは世界的に利用者が多く、書籍・学習サイト・解説記事が豊富です。エラーメッセージをそのまま検索すれば、たいてい誰かが同じ問題にぶつかった記録が見つかります。学習のための情報が手に入りやすいことは、独学で業務改善を進めたい担当者にとって重要な条件です。
特徴4:Googleサービスと最初から連携している
外部のシステムと連携する場合、通常は認証情報の設定やライブラリの導入など、それなりの準備が必要です。GASでは、Googleサービスへの接続機能が最初から組み込まれています。
GmailApp と書けばGmailを、CalendarApp と書けばGoogleカレンダーを、DriveApp と書けばGoogleドライブを操作できます。認証まわりも「実行時に権限を承認する」という手順を1度踏むだけで済みます。この手軽さが、GASが業務自動化の入口として選ばれ続けている最大の理由です。
GASでできること
ここからは、マーケティング・営業部門の実務に引きつけて、GASでできることを具体的に見ていきます。
スプレッドシートの集計・転記を自動化する
最も需要が多いのがこの領域です。
- 複数のシートに分散したデータを1枚のサマリーシートに集約する
- 重複行の削除や表記ゆれの統一といったデータクレンジングを自動実行する
- 月次で新しいシートを自動生成し、前月データを引き継ぐ
- 条件に合致した行だけを抽出して別シートに書き出す
たとえば商談管理シートで「ステータスが受注」の行だけを集計シートに転記する処理を組んでおけば、月末の集計作業そのものが消滅します。
フォーム回答をSlackやメールに自動通知する
問い合わせフォームや資料請求フォームをGoogleフォームで運用している場合、回答が送信されたタイミングでスクリプトを起動できます。
- 回答内容を整形してSlackの営業チャンネルに投稿する
- 担当者に「新規リードが入りました」とメールを送る
- 回答内容に応じて振り分け先を変える(企業規模、問い合わせ種別など)
リード獲得から一次対応までの時間はコンバージョン率に直結します。「誰かがスプレッドシートを見に行くまで気づかない」という状態を、通知の自動化で解消できます。
定期レポートの自動作成・自動送信
時間主導型トリガーを設定すれば、決まった時刻・曜日・日付に処理を走らせられます。
- 毎朝9時に前日の数値を集計してチームに共有
- 毎週月曜にレポートシートをPDF化してメール添付で送信
- 毎月1日に前月分のデータをアーカイブ用シートへ退避
「レポートを作る」作業自体が価値を生んでいないなら、そこは自動化の対象です。空いた時間を数値の解釈と打ち手の検討に回せます。
外部サービスのAPIと連携する
UrlFetchApp を使うと、外部サービスのAPIにHTTPリクエストを送れます。これによりGASの用途は一気に広がります。
- 広告プラットフォームのAPIから配信実績を取得してスプレッドシートに蓄積する
- Slack、Chatwork、Microsoft Teamsなどのチャットツールへ通知を飛ばす
- SFA/CRMツールのデータを取得して社内の集計シートと突き合わせる
- 自社サイトのRSSを取得し、新着記事を社内に共有する
複数のツールに散らばった数字をスプレッドシート上に集約し、1枚のダッシュボードとして見られる状態を作る——BIツールを導入する前段階の現実解として、GASは十分に機能します。
簡易的なWebアプリを公開する
GASにはスクリプトをWebアプリとして公開する機能があります。doGet という関数を用意してデプロイすると、その処理にURLが割り当てられ、ブラウザからアクセスできるようになります。
社内向けの申請フォーム、簡易的な在庫確認ページ、キャンペーンの応募受付画面など、サーバーを借りずに小規模なWebアプリを立ち上げられます。データの保存先をスプレッドシートにしておけば、非エンジニアでも中身を確認・修正できるという運用上の利点もあります。
スクレイピング的なデータ収集
UrlFetchApp でWebページのHTMLを取得し、必要な情報を抜き出すという使い方も技術的には可能です。ただしこの用途では、対象サイトの利用規約や著作権、サーバーへの負荷に十分な配慮が必要です。相手サイトが公式にAPIを提供しているなら、そちらを使うのが原則だと考えてください。
GASを利用する上での注意点
便利な一方で、GASには構造上の制約があります。導入前に把握しておくと、後から手戻りせずに済みます。
1回の実行時間に上限がある(6分の壁)
GASで最も有名な制約が、スクリプト1回あたりの実行時間の上限です。無料の個人アカウント・Google Workspaceアカウントのいずれでも、1回の実行は約6分で強制終了 されます。俗に「6分の壁」と呼ばれるものです。
数万行のデータを1回のループで処理しようとすると、この上限に引っかかります。対処法としては、処理を分割して複数回に分けて実行する、処理の途中経過を保存して次回の実行で続きから再開する、スプレッドシートへの読み書き回数を減らして高速化する、といったアプローチが取られます。
なお、トリガーによる自動実行の合計時間にも1日あたりの上限があります。個人アカウントでは1日あたり90分程度、Google Workspaceアカウントではより長い枠が設定されています。実行間隔を1分おきにするような設計は、この枠をすぐ使い切ってしまうので避けるべきです。
各種APIの呼び出し回数にも上限がある
メール送信数、外部へのHTTPリクエスト数(UrlFetchApp の呼び出し)、ドキュメント作成数など、機能ごとに1日あたりの割り当て(クォータ)が定められています。個人アカウントよりGoogle Workspaceアカウントのほうが上限は緩やかです。
これらは「お金を払えば拡張できる」性質のものではないため、大量配信のメールマーケティングのように高い処理量が前提の業務は、GASではなく専用ツールを使うのが正しい判断になります。
ローカルPCのファイルは直接操作できない
GASの処理はGoogleのサーバー上で実行されます。そのため、自分のPCのCドライブにあるExcelファイルを開いて書き換える、といったローカル環境への直接的な操作はできません。
扱う対象はGoogleドライブ上のファイルが基本です。ローカルのファイルを処理したい場合は、いったんGoogleドライブへアップロードするというワンステップが必要になります。この点はExcel VBAと決定的に異なるポイントです。
権限承認とセキュリティの管理
GASを初めて実行するとき、「このスクリプトがGmailにアクセスすることを許可しますか」といった承認画面が表示されます。これは、そのスクリプトにアカウントの操作権限を与えるという意味です。
出所の不明なスクリプトを安易にコピーして実行すると、メールの内容やドライブ上のファイルに広範なアクセス権を与えてしまう可能性があります。社内で運用する際は、次の点を押さえておきたいところです。
- 実行前にコードの中身を確認する(特に外部への送信処理があるか)
- APIキーなどの機密情報はコードに直書きせず、プロパティサービスに保存する
- Webアプリとして公開する際、アクセス範囲を「全員」にするか「組織内」にするかを慎重に判断する
- 作成者が退職・異動した際にスクリプトが動かなくなるリスクを見越して、管理者を明確にしておく
属人化しやすい
これは技術的な制約ではなく運用上の課題ですが、GASは「詳しい人が1人で作って、その人しか中身を知らない」という状態に陥りやすいツールです。作った本人が異動した途端、誰も手を出せないブラックボックスが業務フローの真ん中に居座る——という事態は珍しくありません。
コードにコメントを残す、処理内容と設定トリガーを簡単なドキュメントにまとめておく、といった最低限の引き継ぎ準備はセットで考えるべきです。
GASの開発方式(コンテナバインド型とスタンドアロン型)
GASのスクリプトには2つの作り方があり、どちらを選ぶかで挙動が変わります。
コンテナバインド型スクリプト
スプレッドシートやGoogleフォームなど、特定のファイルに 紐づけて 作成するスクリプトです。スプレッドシートの「拡張機能 → Apps Script」から作成した場合はこの型になります。
紐づけ元のファイルを「コンテナ」と呼び、スクリプトはそのコンテナに対する固有の操作ができます。たとえば SpreadsheetApp.getActiveSheet() のように、対象ファイルを指定せずに現在のシートを取得できるのはこの型ならではです。また「シートが編集されたとき」「フォームが送信されたとき」といったコンテナ固有のトリガーも設定できます。
一方で、スクリプトはコンテナファイルに内包されるため、Googleドライブ上に単独のファイルとしては表示されません。またコンテナファイルを他人に共有すると、編集権限を持つ相手はスクリプトの中身も見られる点には注意が必要です。
スタンドアロン型スクリプト
どのファイルにも紐づかない、独立したスクリプトです。Googleドライブで「新規 → その他 → Google Apps Script」を選ぶと作成できます。
Googleドライブ上に1つのファイルとして表示されるため、管理がしやすいのが利点です。複数のスプレッドシートを横断して処理したい場合や、ライブラリとして複数のプロジェクトから共通利用したい場合はこちらが適しています。特定のファイルを共有してもスクリプトの中身は見られないため、機密性の高い処理を含む場合にも向きます。
反面、スプレッドシートの編集をきっかけに動くようなコンテナ固有のトリガーは使えません(別途、対象ファイルのIDを指定して操作する形になります)。
どちらを選ぶべきか
| 比較項目 | コンテナバインド型 | スタンドアロン型 |
|---|---|---|
| 作成場所 | スプレッドシート等の拡張機能メニュー | Googleドライブから新規作成 |
| ドライブ上での表示 | 表示されない(ファイルに内包) | 独立したファイルとして表示 |
| 対象ファイルの指定 | 不要(アクティブなファイルを直接取得) | 必要(ファイルIDを指定) |
| 固有トリガー | 編集時・フォーム送信時などが使える | 使えない(時間主導型は可) |
| 共有時のコード可視性 | 編集権限があれば見られる | 見られない |
| 向いている用途 | 単一シートの操作、フォーム連携 | 複数ファイル横断、ライブラリ化 |
判断基準はシンプルです。1つのスプレッドシートの中で完結する処理ならコンテナバインド型、複数のファイルやサービスをまたぐ処理・共通部品にしたい処理ならスタンドアロン型 と考えておけば、まず外しません。
GASの始め方
実際に動かすまでの手順を、スプレッドシートを起点とする最も簡単なパターンで説明します。
ステップ1:スプレッドシートを開く
Googleドライブで新しいスプレッドシートを作成、または既存のシートを開きます。この時点で必要なのはGoogleアカウントだけです。
ステップ2:スクリプトエディタを起動する
メニューバーの「拡張機能」をクリックし、「Apps Script」を選択します。別タブでスクリプトエディタが開き、function myFunction() { } という空の関数が表示されます。
ステップ3:コードを書く
表示されている内容を消して、次のコードを貼り付けてみます。
function sendTestMail() {
const address = Session.getActiveUser().getEmail();
GmailApp.sendEmail(address, 'GASテスト', 'GASからの自動送信です。');
}
自分自身のメールアドレス宛に、テストメールを1通送るだけのコードです。
ステップ4:プロジェクトに名前を付けて保存する
画面上部の「無題のプロジェクト」をクリックして、わかりやすい名前を付けます。保存はフロッピーディスクのアイコン、またはCtrl+S(Macは⌘+S)で行います。
ステップ5:実行して権限を承認する
「実行」ボタンをクリックすると、初回のみ承認画面が表示されます。「権限を確認」→ アカウントを選択 → 「詳細」→「(プロジェクト名)に移動」→「許可」と進みます。
途中で「このアプリはGoogleで確認されていません」という警告が出ますが、これは自分で書いたスクリプトが未審査であることを示すもので、自作のコードであれば問題ありません。ただし、他人から渡されたスクリプトでこの画面が出たときは、コードの中身を確認するまで承認しないでください。
承認が完了すると処理が走り、自分宛にメールが届きます。
ステップ6:トリガーを設定して自動化する
手動実行だけでは自動化になりません。エディタ左側の時計アイコン(トリガー)をクリックし、「トリガーを追加」から設定します。
- 時間主導型:毎分・毎時・毎日・毎週・毎月など、時間をきっかけに実行
- スプレッドシートから:開いたとき、編集したとき、フォーム送信時などに実行
「毎日午前8時〜9時に実行」のように設定しておけば、以降は放っておいても処理が回り続けます。ここまで来て、初めて業務が自動化された状態になります。
学習を進めるコツ
最初から複雑なものを作ろうとせず、「毎回やっている手作業のうち、一番単純なもの」を1つだけ自動化するところから始めるのが現実的です。動くものが1つできると、次に自動化すべき箇所が自分で見えてきます。
GASとVBA・Excelマクロとの違い
「Excelマクロなら少し触ったことがある」という方向けに、両者の違いを整理します。
| 比較項目 | GAS(Google Apps Script) | VBA(Excelマクロ) |
|---|---|---|
| 言語 | JavaScriptベース | Visual Basic for Applications |
| 実行場所 | Googleのサーバー(クラウド) | 自分のPC(ローカル) |
| 費用 | 無料(Googleアカウントのみ) | Officeライセンスが必要 |
| 環境構築 | 不要(ブラウザのみ) | Excelのインストールが必要 |
| PCの電源 | 落ちていても実行される | 起動している必要がある |
| 自動実行 | トリガー機能で標準対応 | タスクスケジューラ等の併用が必要 |
| 対象データ | Googleドライブ上のファイル | ローカル・共有フォルダのファイル |
| 外部サービス連携 | 標準機能で容易 | 実装の難易度が高い |
| 実行時間の上限 | 約6分 | 実質的な上限なし |
| 大量データ処理 | 苦手(クォータ制約あり) | 得意 |
| 共同編集との相性 | 良い(同時編集が前提) | 悪い(ファイルロックが発生) |
使い分けの考え方
両者は優劣ではなく、適材適所です。
GASが向いているケース – チームで同じデータを同時に見て編集する運用 – 決まった時刻に無人で処理を走らせたい業務 – Slack・チャットツール・各種SaaSとの連携が必要な業務 – スマートフォンからも結果を確認したいケース
VBAが向いているケース – 数十万行規模の重いデータ処理 – 社外に出せない機密データをローカルで扱う業務 – Excelの高度な関数・ピボット・グラフ機能に依存した既存資産がある場合 – 社内システムがOffice前提で組まれている環境
マーケティング部門の日常業務——広告レポートの集約、リード情報の共有、フォーム回答の通知といった領域は、複数人での同時参照とクラウド連携が前提になることが多いため、GASのほうが噛み合うケースが多いといえます。
まとめ
GAS(Google Apps Script)は、Googleが無料で提供するJavaScriptベースのスクリプト環境で、スプレッドシート、Gmail、Googleカレンダー、Googleフォームなどを自動で操作できる仕組みです。
この記事の要点を整理します。
- GASとは:Googleサービスを自動化・連携させるためのスクリプト環境。読み方は「ガス」
- 4つの特徴:無料で使える/環境構築が不要/JavaScriptベースで学びやすい/Googleサービスと最初から連携している
- できること:スプレッドシートの集計・転記の自動化、フォーム回答のSlack・メール通知、定期レポートの自動作成と送信、外部APIとの連携、簡易Webアプリの公開
- 注意点:1回の実行は約6分まで、API呼び出し回数にも1日あたりの上限あり、ローカルPCのファイルは直接操作できない、権限承認とセキュリティ管理が必要、属人化しやすい
- 開発方式:特定ファイルに紐づく「コンテナバインド型」と、独立した「スタンドアロン型」の2種類。単一シート完結なら前者、複数ファイル横断なら後者
- 始め方:スプレッドシート →「拡張機能 → Apps Script」→ コード記述 → 保存 → 実行・権限承認 → トリガー設定、の6ステップ
- VBAとの違い:GASはクラウド実行・無料・自動実行に強く、VBAはローカル実行・大量データ処理に強い
最初の一歩としておすすめなのは、いま毎週手作業でやっている集計や通知のうち、最も単純なものを1つだけ自動化してみることです。数行のコードで作業が消えた瞬間に、GASが自分の業務にとってどれくらいの価値を持つかが実感として掴めます。
