コラム

第202回

Google Apps Scriptの使い方|スプレッドシート連携の基本

Google Apps Scriptの使い方|スプレッドシート連携の基本Google Apps Scriptの使い方|スプレッドシート連携の基本

Google Apps Scriptの使い方を調べている情報システム部門の担当者は、スプレッドシートの手作業をコードで自動化したいという課題を抱えている場合が多いはずです。プログラミング未経験でも数行のコードでシート操作を自動化できるという解説が広く出回っているため、まずは構文を覚えることから着手しようと考える方も少なくありません。

しかし、使い方の分かれ目はコードの書き方ではなく、どこでスクリプトを開き、誰の権限で実行するかを先に決めるかどうかにあります。コンテナバインド型かスタンドアロン型かの選択や実行時の承認フローを後回しにすると、個人の作業効率化では動いても組織展開の段階で機能しない場合があります。

本記事では、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 Apps Scriptの使い方を覚えると、スプレッドシートの入力データを起点に、複数のGoogleサービスをまたいだ処理を自動化できます。

代表的な自動化の例には、次のようなものがあります。

  • ・スプレッドシートの特定のセルを起点に、通知メールを自動送信する
  • ・フォームの回答をスプレッドシートに集計し、条件に応じてカレンダーへ予定を登録する
  • ・Gmailの受信内容を条件で振り分け、対応状況をスプレッドシートに記録する
  • ・外部のAPIからデータを取得し、スプレッドシートへ定期的に反映する

いずれの例も、手作業で行っていた入力や転記の工程をコードに置き換える取り組みです。

実行するタイミングは、スプレッドシートを開いたときだけでなく、毎日決まった時刻や特定の時間間隔でも指定できます。トリガーと呼ばれる仕組みを設定すれば、担当者がパソコンを開いていない時間帯でも処理が動きます。起点になるのは、必ずしも人の操作とは限りません。

Google Apps Scriptを使うメリットと見落とされがちな制限

イメージ

Google Apps Scriptには使い勝手の良さがある一方で、事前に把握しておきたい制限も存在します。

Google Apps Scriptの最大のメリットは、Googleアカウントがあれば追加費用なしに使い始められる点です。スクリプトエディタはブラウザから開けるため、開発環境のインストールや設定は不要です。Googleサービスとの連携もあらかじめ用意されており、認証まわりの実装を自分で書く必要がありません。

一方で、見落とされがちな制限もあります。スクリプトの実行時間には上限があり、個人アカウントか有償のGoogle Workspaceかを問わず、1回の実行につき6分程度で処理が打ち切られる仕組みです。大量データを一括処理する設計では、この上限を踏まえて処理を分割する必要があります。またGoogle Apps Scriptは、パソコン内のローカルファイルを直接操作する用途には対応していません。

  • ・1回の実行時間は最長で6分程度
  • ・1日に呼び出せるサービスの回数にも上限がある
  • ・パソコン内のローカルファイルは直接操作できない

これらの上限のうち、外部サービスの呼び出し回数などは有償のGoogle Workspaceプランで上限値が広がるものもありますが、実行時間の上限やローカルファイルを直接操作できない制約はプランに関わらず共通であり、処理を分割する設計自体は見直す必要があります。

Google Apps Scriptの使い方における基本操作の流れ

イメージ

ここからは、Google Apps Scriptの使い方を初めて操作する方に向けて、スプレッドシートを起点にした基本の流れを説明します。

基本の流れは、次の4つの工程に整理できます。

  1. ・スプレッドシートからスクリプトエディタを開く
  2. ・コードを記述して保存する
  3. ・実行して権限を承認する
  4. ・実行結果をログで確認する

この4つの流れを一度体験しておくと、以降の応用もスムーズに進められます。

スプレッドシートからスクリプトエディタを開く

Googleスプレッドシートの画面上部にある「拡張機能」メニューから、「Apps Script」を選択します。これだけで、そのスプレッドシートに紐づいたコンテナバインド型のプロジェクトが新しいタブで開きます。プロジェクト名は初期状態では「無題のプロジェクト」になっているため、内容が分かる名前に変更しておきましょう。

コードを記述して保存する

エディタの中央には、あらかじめ「function myFunction() { }」という空の関数が用意されています。この中括弧の内側に処理内容を記述します。たとえばアクティブなシートのA1セルに文字列を書き込むだけであれば、「SpreadsheetApp.getActiveSheet().getRange("A1").setValue("完了")」のような一文で動作します。記述が終わったら、画面上部の保存アイコンをクリックして保存します。

Google Workspaceの利用プランによっては、スプレッドシート上でGeminiのサイドパネルからコードを作成してもらうことも可能です。

実行して権限を承認する

保存したら、実行したい関数名を選んだうえで「実行」ボタンをクリックします。初めて実行する際には、Googleアカウントへのアクセス許可を求める画面が表示されます。これは、スクリプトがスプレッドシートやその他のサービスを操作するために必要な確認です。

組織で管理しているGoogleアカウントの場合、管理者の設定によってこの承認画面がブロックされることがあります。個人アカウントでは問題なく進められた手順が、社用アカウントでは止まってしまうケースも実際にあります。この違いは、次の章で改めて取り上げます。

実行結果をログで確認する

実行が完了すると、画面下部のログにメッセージや処理結果が表示されます。エラーが発生した場合も、どの行でどのような理由により処理が止まったかがログに記録されるため、修正の手がかりになります。スプレッドシート側の値も合わせて確認すると、意図した通りに処理が反映されているかを判断できます。

Google Apps Scriptを組織で使う際に生じる権限設計の論点

イメージ

個人の作業効率化としてGoogle Apps Scriptを使い始めた後、部署全体や全社展開の段階に進むと、権限まわりの設計が課題として浮かび上がってきます。

ここで見落とされがちなのが、実行アカウントと管理者ポリシーの関係です。先ほど触れた通り、組織で管理しているGoogleアカウントでは、外部提供のスクリプトが無制限に情報へアクセスすることを防ぐため、初回実行時の承認画面が管理者のポリシーによって止められる場合があります。これはGAS自体の不具合ではなく、組織のセキュリティ設定に組み込まれた制御です。運用を任された担当者が、この制御の存在を知らずに「動かない」と判断してしまう場面は少なくありません。

実務支援の現場でよく見られるのが、作成者が異動や退職をした後にスクリプトの中身を誰も把握していない、という状態です。個人アカウントに紐づけたまま本番運用を続けると、そのアカウントが無効化された時点で処理が止まってしまいます。組織で使うGoogle Apps Scriptは、共有ドライブに置く、実行アカウントを共通の管理用アカウントにするなど、属人化を避ける設計を最初から組み込んでおくことが重要です。

組織用のGoogleアカウントでは、管理者の設定次第で外部スクリプトの初回承認がブロックされる場合があります。導入前に、管理者へGoogle Apps Scriptの利用可否を確認しておく必要があります。

権限設計に加えて、承認フローそのものをコードで内製するか、既製のアドオンを使うかの判断も出てきます。稟議や交通費精算のような定型的な承認業務であれば、Google Workspace向けに用意されたワークフロー機能を使うと、条件分岐や代理承認といった機能をゼロから実装せずに済みます。スプレッドシートとリアルタイムで同期する仕組みも備わっているため、GASでの内製とアドオンの利用を、業務の複雑さに応じて使い分ける発想が実務では役立つはずです。

サテライトオフィスのワークフロー for Google Workspaceの詳細はこちら

Google Apps Scriptを使う際に注意したい失敗例

イメージ

Google Apps Scriptの使い方に慣れてきた段階でも、運用面のつまずきは形を変えて発生します。

現場でよく見られる失敗には、次のようなパターンがあります。

  • ・トリガーを複数個設定してしまい、同じ処理が重複して実行される
  • ・実行時間の上限を考慮せず、大量データを一度に処理しようとして途中で止まる
  • ・個人アカウントに実行権限がひもづいたまま本番運用を続けてしまう
  • ・スプレッドシートの列構成を変更した際に、参照先のセル番号を更新し忘れる

どの失敗も、コードの誤りというより運用設計の見落としから起きています。

とりわけトリガーの重複は気づきにくい失敗です。手動での実行に加えて時間主導型のトリガーを設定していると、同じ処理が短時間に2回動き、メールの二重送信やデータの重複登録につながります。設計の見直しは、コードを書き直すよりも先に着手すべき作業です。

Google Apps ScriptとExcelマクロ(VBA)を比較する際の視点

イメージ

スプレッドシート業務の自動化を検討する際には、Excelマクロ(VBA)との違いも判断材料になります。

主な違いを整理すると、次のようになります。

比較項目Google Apps ScriptExcelマクロ(VBA)
動作環境ブラウザとGoogleのクラウドインストール済みのExcelアプリ
費用Googleアカウントがあれば無料Excelのライセンスが前提
得意な連携Gmailやカレンダーなど、Google系サービスWindows上の他アプリケーションやローカルファイル

既にExcelとVBAで運用している業務をそのままGASへ置き換えると不具合が生じる場合があるため、機能の対応関係を確認したうえで移行を検討しましょう。

どちらか一方が常に優れているわけではありません。社内でExcelを配布して使う運用が定着している場合はVBAの資産を維持したほうが移行コストを抑えられますし、Googleサービス中心の業務であればGASのほうが連携の手間が少なくなります。つまり、選択の基準はツールの新旧ではなく、社内で主に使っているサービス群がどちらに寄っているかにあります。

Google Apps Scriptの使い方に関するよくある質問

イメージ

Google Apps Scriptの使い方について、実務でよく寄せられる質問をまとめます。

Q. プログラミング未経験でもGoogle Apps Scriptの使い方は身につきますか

身につきます。まずはスプレッドシートの値を読み書きする数行のコードから試し、動作を確認しながら少しずつ処理を増やしていく進め方が向いています。JavaScriptの基礎文法を並行して学ぶと理解が早まるはずです。

Q. 作成したスクリプトは他の人と共有できますか

共有できます。スプレッドシートの共有設定を通じて、閲覧権限や編集権限を持つメンバーであればスクリプトの中身を確認できます。ただし実行そのものは個人のアカウント権限に依存するため、共有時は誰の権限で実行するかをあわせて決めておく必要があります。

Q. 無料版のGoogleアカウントと有償のGoogle Workspaceで使い方に違いはありますか

基本的な使い方に違いはありません。ただし実行時間や呼び出し回数の上限、組織管理者による利用制御の範囲は、契約しているプランによって異なります。全社的に運用する場合は、契約プランの制限を事前に確認しておきましょう。

Google Apps Scriptの使い方は権限設計まで含めて決まる

イメージ

ここまで、Google Apps Scriptの基本的な使い方から、組織で運用する際の権限設計までを順に見てきました。

Google Apps Scriptの使い方を左右するのは、コードの書き方そのものよりも、どの形式でプロジェクトを作り、誰の権限で実行するかという設計です。スプレッドシートとの連携でできることは幅広い一方、実行時間や権限まわりの制限を踏まえた設計をしなければ、途中で処理が止まったり属人化したりする可能性があります。

  • ・使い方の基本は、コンテナバインド型かスタンドアロン型かを選ぶところから始まる
  • ・スプレッドシートとの連携は、値の読み書きとトリガーの設定で幅広く自動化できる
  • ・組織で運用するなら、権限設計と属人化対策を最初から組み込む

この3点を押さえておけば、個人の作業効率化から組織展開まで見据えた使い方ができるはずです。

サテライトオフィスは、これまで5,000社を超えるGoogle Workspaceの導入支援を通じて、スプレッドシート業務の自動化からGoogle Apps Scriptの個別開発まで数多くの現場に携わってきました。

自社での内製が難しい処理や、承認フローのように全社で使う仕組みについては、Google Apps Scriptの個別開発支援や、Google Workspace向けのアドオンを組み合わせて設計する方法もあります。スプレッドシート業務の自動化を組織全体の仕組みとして整えたい場合は、導入から運用までを伴走してきたサテライトオフィスにぜひお気軽にご相談ください。

※プライバシーポリシはこちら

TOPへ
GoogleEnterpriseProfessional Google Apps for Business