第202回


Google Apps Scriptの使い方を調べている情報システム部門の担当者は、スプレッドシートの手作業をコードで自動化したいという課題を抱えている場合が多いはずです。プログラミング未経験でも数行のコードでシート操作を自動化できるという解説が広く出回っているため、まずは構文を覚えることから着手しようと考える方も少なくありません。
しかし、使い方の分かれ目はコードの書き方ではなく、どこでスクリプトを開き、誰の権限で実行するかを先に決めるかどうかにあります。コンテナバインド型かスタンドアロン型かの選択や実行時の承認フローを後回しにすると、個人の作業効率化では動いても組織展開の段階で機能しない場合があります。
本記事では、Google Apps Scriptの基本的な使い方から、スプレッドシートとの連携でできること、そして組織で運用する際の権限設計まで、実務支援の視点で順を追って解説します。

Google Apps Script(GAS)は、Googleが提供する開発環境で、スプレッドシートやGmail、カレンダーなどのGoogleサービスをコードで操作するための言語です。
Google Apps Scriptは、JavaScriptをベースにした言語仕様を採用しており、ブラウザ上のスクリプトエディタだけで開発が完結します。Googleアカウントを持っていれば追加のライセンス費用なしに利用でき、専用の開発環境をパソコンにインストールする必要もありません。
使い方の入口は大きく2種類に分かれます。スプレッドシートやドキュメントに紐づく「コンテナバインド型」と、Googleドライブ上に単独のプロジェクトとして作成する「スタンドアロン型」です。スプレッドシート業務の自動化が目的であれば、コンテナバインド型から始めるほうが扱いやすいと見ています。
| 形式 | 特徴 | 向いている場面 |
|---|---|---|
| コンテナバインド型 | スプレッドシートやドキュメントに直接ひもづく | 特定のシート業務を自動化したい場合 |
| スタンドアロン型 | Googleドライブ上に単独のプロジェクトとして存在する | 複数のファイルを横断して処理したい場合 |
どちらの形式を選ぶかによって、後述する権限設定の考え方も変わってきます。

Google Apps Scriptの使い方を覚えると、スプレッドシートの入力データを起点に、複数のGoogleサービスをまたいだ処理を自動化できます。
代表的な自動化の例には、次のようなものがあります。
いずれの例も、手作業で行っていた入力や転記の工程をコードに置き換える取り組みです。
実行するタイミングは、スプレッドシートを開いたときだけでなく、毎日決まった時刻や特定の時間間隔でも指定できます。トリガーと呼ばれる仕組みを設定すれば、担当者がパソコンを開いていない時間帯でも処理が動きます。起点になるのは、必ずしも人の操作とは限りません。

Google Apps Scriptには使い勝手の良さがある一方で、事前に把握しておきたい制限も存在します。
Google Apps Scriptの最大のメリットは、Googleアカウントがあれば追加費用なしに使い始められる点です。スクリプトエディタはブラウザから開けるため、開発環境のインストールや設定は不要です。Googleサービスとの連携もあらかじめ用意されており、認証まわりの実装を自分で書く必要がありません。
一方で、見落とされがちな制限もあります。スクリプトの実行時間には上限があり、個人アカウントか有償のGoogle Workspaceかを問わず、1回の実行につき6分程度で処理が打ち切られる仕組みです。大量データを一括処理する設計では、この上限を踏まえて処理を分割する必要があります。またGoogle Apps Scriptは、パソコン内のローカルファイルを直接操作する用途には対応していません。
これらの上限のうち、外部サービスの呼び出し回数などは有償のGoogle Workspaceプランで上限値が広がるものもありますが、実行時間の上限やローカルファイルを直接操作できない制約はプランに関わらず共通であり、処理を分割する設計自体は見直す必要があります。

ここからは、Google Apps Scriptの使い方を初めて操作する方に向けて、スプレッドシートを起点にした基本の流れを説明します。
基本の流れは、次の4つの工程に整理できます。
この4つの流れを一度体験しておくと、以降の応用もスムーズに進められます。
Googleスプレッドシートの画面上部にある「拡張機能」メニューから、「Apps Script」を選択します。これだけで、そのスプレッドシートに紐づいたコンテナバインド型のプロジェクトが新しいタブで開きます。プロジェクト名は初期状態では「無題のプロジェクト」になっているため、内容が分かる名前に変更しておきましょう。
エディタの中央には、あらかじめ「function myFunction() { }」という空の関数が用意されています。この中括弧の内側に処理内容を記述します。たとえばアクティブなシートのA1セルに文字列を書き込むだけであれば、「SpreadsheetApp.getActiveSheet().getRange("A1").setValue("完了")」のような一文で動作します。記述が終わったら、画面上部の保存アイコンをクリックして保存します。
Google Workspaceの利用プランによっては、スプレッドシート上でGeminiのサイドパネルからコードを作成してもらうことも可能です。
保存したら、実行したい関数名を選んだうえで「実行」ボタンをクリックします。初めて実行する際には、Googleアカウントへのアクセス許可を求める画面が表示されます。これは、スクリプトがスプレッドシートやその他のサービスを操作するために必要な確認です。
組織で管理しているGoogleアカウントの場合、管理者の設定によってこの承認画面がブロックされることがあります。個人アカウントでは問題なく進められた手順が、社用アカウントでは止まってしまうケースも実際にあります。この違いは、次の章で改めて取り上げます。
実行が完了すると、画面下部のログにメッセージや処理結果が表示されます。エラーが発生した場合も、どの行でどのような理由により処理が止まったかがログに記録されるため、修正の手がかりになります。スプレッドシート側の値も合わせて確認すると、意図した通りに処理が反映されているかを判断できます。

個人の作業効率化としてGoogle Apps Scriptを使い始めた後、部署全体や全社展開の段階に進むと、権限まわりの設計が課題として浮かび上がってきます。
ここで見落とされがちなのが、実行アカウントと管理者ポリシーの関係です。先ほど触れた通り、組織で管理しているGoogleアカウントでは、外部提供のスクリプトが無制限に情報へアクセスすることを防ぐため、初回実行時の承認画面が管理者のポリシーによって止められる場合があります。これはGAS自体の不具合ではなく、組織のセキュリティ設定に組み込まれた制御です。運用を任された担当者が、この制御の存在を知らずに「動かない」と判断してしまう場面は少なくありません。
実務支援の現場でよく見られるのが、作成者が異動や退職をした後にスクリプトの中身を誰も把握していない、という状態です。個人アカウントに紐づけたまま本番運用を続けると、そのアカウントが無効化された時点で処理が止まってしまいます。組織で使うGoogle Apps Scriptは、共有ドライブに置く、実行アカウントを共通の管理用アカウントにするなど、属人化を避ける設計を最初から組み込んでおくことが重要です。
組織用のGoogleアカウントでは、管理者の設定次第で外部スクリプトの初回承認がブロックされる場合があります。導入前に、管理者へGoogle Apps Scriptの利用可否を確認しておく必要があります。
権限設計に加えて、承認フローそのものをコードで内製するか、既製のアドオンを使うかの判断も出てきます。稟議や交通費精算のような定型的な承認業務であれば、Google Workspace向けに用意されたワークフロー機能を使うと、条件分岐や代理承認といった機能をゼロから実装せずに済みます。スプレッドシートとリアルタイムで同期する仕組みも備わっているため、GASでの内製とアドオンの利用を、業務の複雑さに応じて使い分ける発想が実務では役立つはずです。
サテライトオフィスのワークフロー for Google Workspaceの詳細はこちら

Google Apps Scriptの使い方に慣れてきた段階でも、運用面のつまずきは形を変えて発生します。
現場でよく見られる失敗には、次のようなパターンがあります。
どの失敗も、コードの誤りというより運用設計の見落としから起きています。
とりわけトリガーの重複は気づきにくい失敗です。手動での実行に加えて時間主導型のトリガーを設定していると、同じ処理が短時間に2回動き、メールの二重送信やデータの重複登録につながります。設計の見直しは、コードを書き直すよりも先に着手すべき作業です。

スプレッドシート業務の自動化を検討する際には、Excelマクロ(VBA)との違いも判断材料になります。
主な違いを整理すると、次のようになります。
| 比較項目 | Google Apps Script | Excelマクロ(VBA) |
|---|---|---|
| 動作環境 | ブラウザとGoogleのクラウド | インストール済みのExcelアプリ |
| 費用 | Googleアカウントがあれば無料 | Excelのライセンスが前提 |
| 得意な連携 | Gmailやカレンダーなど、Google系サービス | Windows上の他アプリケーションやローカルファイル |
既にExcelとVBAで運用している業務をそのままGASへ置き換えると不具合が生じる場合があるため、機能の対応関係を確認したうえで移行を検討しましょう。
どちらか一方が常に優れているわけではありません。社内でExcelを配布して使う運用が定着している場合はVBAの資産を維持したほうが移行コストを抑えられますし、Googleサービス中心の業務であればGASのほうが連携の手間が少なくなります。つまり、選択の基準はツールの新旧ではなく、社内で主に使っているサービス群がどちらに寄っているかにあります。

Google Apps Scriptの使い方について、実務でよく寄せられる質問をまとめます。
身につきます。まずはスプレッドシートの値を読み書きする数行のコードから試し、動作を確認しながら少しずつ処理を増やしていく進め方が向いています。JavaScriptの基礎文法を並行して学ぶと理解が早まるはずです。
共有できます。スプレッドシートの共有設定を通じて、閲覧権限や編集権限を持つメンバーであればスクリプトの中身を確認できます。ただし実行そのものは個人のアカウント権限に依存するため、共有時は誰の権限で実行するかをあわせて決めておく必要があります。
基本的な使い方に違いはありません。ただし実行時間や呼び出し回数の上限、組織管理者による利用制御の範囲は、契約しているプランによって異なります。全社的に運用する場合は、契約プランの制限を事前に確認しておきましょう。

ここまで、Google Apps Scriptの基本的な使い方から、組織で運用する際の権限設計までを順に見てきました。
Google Apps Scriptの使い方を左右するのは、コードの書き方そのものよりも、どの形式でプロジェクトを作り、誰の権限で実行するかという設計です。スプレッドシートとの連携でできることは幅広い一方、実行時間や権限まわりの制限を踏まえた設計をしなければ、途中で処理が止まったり属人化したりする可能性があります。
この3点を押さえておけば、個人の作業効率化から組織展開まで見据えた使い方ができるはずです。
サテライトオフィスは、これまで5,000社を超えるGoogle Workspaceの導入支援を通じて、スプレッドシート業務の自動化からGoogle Apps Scriptの個別開発まで数多くの現場に携わってきました。
自社での内製が難しい処理や、承認フローのように全社で使う仕組みについては、Google Apps Scriptの個別開発支援や、Google Workspace向けのアドオンを組み合わせて設計する方法もあります。スプレッドシート業務の自動化を組織全体の仕組みとして整えたい場合は、導入から運用までを伴走してきたサテライトオフィスにぜひお気軽にご相談ください。
※プライバシーポリシはこちら