Google Sheets に LAMBDA 関数と Named Functions(名前付き関数)が搭載されてから、GAS(Google Apps Script)の一部処理をスプレッドシート標準関数に置き換えられるケースが増えています。この記事では、既存 GAS スクリプトを「移行可 / 条件付き移行 / 移行不可」の3パターンに分類し、棚卸しに使えるチェックリストをまとめます。
この記事を読んだほうが良い人
- GAS スクリプトを複数本管理しており、メンテナンスコストの削減を検討している情シス担当者
- Named Functions や LAMBDA の活用範囲を把握した上で移行計画を立てたい
- 「GAS は全部残すのか、全廃するのか」で判断が止まっている
Named Functions と LAMBDA でできること・できないことを整理する
Named Functions(名前付き関数)は、Google Sheets の組み込み関数を組み合わせて独自の関数を作れる仕組みです。LAMBDA 関数はその基盤となる構文で、引数と処理をひとつの式にまとめて定義します。
Named Functions の強みは、JavaScript なしに再利用可能なロジックを作れる点です。同じスプレッドシート内どこでも呼び出せ、他のスプレッドシートへ Named Functions をインポートして利用できます(公式ヘルプより)。スクリプトの認可フローや日次クォータの問題が発生しない点も、GAS との大きな違いです。
LAMBDA の基本構文は次の形です。
=LAMBDA(引数1, 引数2, ..., 処理式)
たとえば2つの値を受け取って合計を返すだけなら =LAMBDA(a, b, a+b) と書きます。Named Functions として登録する場合は、この LAMBDA 式を「名前付き関数の定義」として保存し、Sheets 上からその名前で呼び出す形になります。ひとつの式で引数・処理・再利用性をまとめて定義できる点が、従来の数式の組み合わせとの大きな違いです。
ただし、Named Functions は Sheets の計算エンジン上で動作するため、外部サービスとの通信やスケジュール実行には対応していません(Sheets の仕様上)。この境界線を押さえておくことが、移行判断の出発点です。
GASコードパターンを3分類する
既存 GAS スクリプトは、処理パターンによって3つに分類できます。以下の表を手元のスクリプト一覧に当てはめることが、棚卸しの第一歩になります。
| 分類 | 処理パターンの例 | 移行先 |
|---|---|---|
| 移行可 | 文字列加工、条件分岐による値変換、集計ロジックの再利用 | Named Functions / LAMBDA |
| 条件付き移行 | 別スプレッドシートからのデータ参照・転記 | IMPORTRANGE 等との組み合わせで部分代替 |
| 移行不可 | 時間トリガー、外部 API 呼び出し、Admin SDK 連携、メール送信 | GAS 継続(または外部サービス連携) |
移行可:計算ロジック完結型のスクリプト
次のパターンは Named Functions への移行候補です。
文字列加工・フォーマット統一
電話番号へのハイフン挿入、氏名の姓名結合、コードの一部抽出など、セルの値を変換するだけの処理は LAMBDA と REGEXREPLACE / SUBSTITUTE / TEXT 関数の組み合わせで書き直せます。
たとえば、電話番号を 090-1234-5678 形式に統一する GAS カスタム関数は次のように書きます。
// GAS カスタム関数(移行前)
function formatPhone(input) {
const digits = String(input).replace(/[^0-9]/g, '');
return digits.replace(/^(\d{3})(\d{4})(\d{4})$/, '$1-$2-$3');
}
この関数を Sheets のセルから呼び出すには、スクリプトのデプロイと認可フローが必要です。Named Functions であれば、同じ動作を次の LAMBDA 式で定義できます。
=LAMBDA(val, REGEXREPLACE(REGEXREPLACE(val,"[^0-9]",""),"^(\d{3})(\d{4})(\d{4})$","$1-$2-$3"))
この例は 090/080/070 から始まる 11 桁の携帯番号形式を前提としています。固定電話(10 桁)を含む場合は正規表現の調整が必要です。
この式を FORMATPHONE という名前で登録しておけば、セルから =FORMATPHONE(A2) と呼び出せます。GAS の認可ダイアログが出ないため、スクリプト権限を持たないメンバーでも即座に利用できます。
条件分岐による値変換
ステータスコードを日本語ラベルに変換したり、数値範囲でカテゴリを振り分けるロジックも、Named Functions で代替できます。GAS での実装例は次のとおりです。
// GAS カスタム関数(移行前)
function statusLabel(code) {
const map = { 1: '申請中', 2: '承認済み', 3: '却下', 4: 'キャンセル' };
return map[code] || '不明';
}
Named Functions の LAMBDA 式に書き換えると次のようになります。
=LAMBDA(code, SWITCH(code, 1,"申請中", 2,"承認済み", 3,"却下", 4,"キャンセル","不明"))
SWITCH 関数の選択肢が多くなる場合は、ラベル対応表を別シートに用意して XLOOKUP と組み合わせる方法も取れます。
再利用数式の共有
同じ計算ロジックを複数のスプレッドシートで使い回す場合、別のスプレッドシートへ Named Functions をインポートして利用できます。GAS ライブラリよりも設定がシンプルで、チームメンバーへの共有もしやすくなります。ただし、利用先ファイルごとに再インポートが必要な点は GAS ライブラリとの違いです。同一スプレッドシート内での再利用であれば、再インポートなしに即座に利用できます。
条件付き移行:データ参照系スクリプト
別ファイルのデータを参照する処理は IMPORTRANGE 関数で部分的に代替できます。ただし、いくつかの制約があります。
- 初回利用時にアクセス許可が必要(ユーザーが承認するまで参照できない)
- 大量データを参照すると計算速度に影響が出ることがある
- リアルタイム更新ではなく、一定の遅延が生じるケースがある
IMPORTRANGE はファイルをまたいで値を参照するためのもので、フィルタや集計を加えたい場合は QUERY や FILTER との組み合わせが有効です。GAS で「別ファイルのデータを取得してこのシートに並べる」という処理をしていた場合、その読み取り部分は IMPORTRANGE + QUERY に置き換えられることがあります。
ただし、置き換えた後の動作確認は念入りにする必要があります。特に、参照元ファイルが頻繁に更新される環境では、IMPORTRANGE のキャッシュと実データの乖離が生じるケースがあります。GAS でのデータ取得は任意のタイミングで実行できますが、IMPORTRANGE はシート再計算のタイミングに依存するため、即時性が求められる用途には向きません。
また、IMPORTRANGE は読み取り専用です。別スプレッドシートへのデータ書き込みを含む処理は、移行不可のカテゴリに入ります。
移行不可:GAS 継続が必要なパターン
Named Functions / LAMBDA では代替できないパターンを明確にしておきます。GAS を継続するか、要件によっては n8n(オープンソースのワークフロー自動化ツール)や Zapier などの外部自動化ツールへの連携を検討することになります。
時間トリガー(スケジュール実行)
毎朝レポートを自動生成する、月次でデータをアーカイブするといった時間起点の処理は、Sheets 関数では実現できません。GAS のインストーラブルトリガーが時間起点処理の手段です(公式 Apps Script ドキュメントより)。n8n や Make(旧 Integromat)のスケジュール機能を組み合わせる選択肢もありますが、その場合は GAS の書き込み権限をどこに持たせるかという設計判断が別途必要です。
外部 API への HTTP リクエスト
Slack 通知の送信、社内システムへのデータ連携、外部 REST API の呼び出しには GAS の UrlFetchApp を使う処理が前提です。Named Functions はネットワーク通信に対応していないため、移行は不可能です。この種の処理は GAS を継続するか、n8n / Zapier 等の HTTP ノードへ処理を移譲する構成にすることになります。
Admin SDK 連携
ユーザー一覧の取得、グループメンバーの管理、組織単位(OU)への割り当てなど、Google Workspace の管理操作は Admin SDK を通じた GAS 処理が必要です。スプレッドシートの計算エンジンにはワークスペース管理の権限がないため、Sheets 関数での代替は不可能です。
Gmail 送信・Calendar 連携
メール通知、Google Calendar へのイベント登録、Google Forms の回答処理も Sheets 関数では対応できません。これらは GAS の実行コンテキストがあって初めて動作する処理です。
別ファイルへの書き込み
前述のとおり IMPORTRANGE は読み取り専用です。別のスプレッドシートへデータを書き込む処理は GAS を継続するしかありません。
棚卸しを始める前にやっておくこと
チェックリストを活用する前に、現状把握が済んでいない場合はスクリプトの一覧化から始めます。
管理コンソールの セキュリティ > API の制御 から、OAuth 権限が付与されたアプリの一覧を確認できます(Enterprise / Education Standard / Education Plus エディション)。ただし、個人ドライブに保存されたバインドスクリプト(スプレッドシートに紐付いたスクリプト)は、管理コンソールだけで全件を把握するのが難しい場合もあります。
実務的には「よく使われているスプレッドシートを部署ごとに洗い出し、それぞれにスクリプトが含まれているか確認する」という地道なアプローチが有効です。棚卸し用スプレッドシートに次の項目を列として作り、各スクリプトについて記録します。
- スクリプト名 / ファイル名
- 担当者 / 最終更新者
- 主な処理の概要(1行)
- ステップ1の該当項目(GAS 継続要否)
- 移行分類(移行可 / 条件付き / 移行不可)
- 優先度
この一覧があると、分類作業をチームで分担でき、進捗の可視化もしやすくなります。
移行判断チェックリスト:スクリプト1本ごとに問いを立てる
GAS スクリプトを棚卸しするとき、以下の2段階のチェックを順番に当てはめます。
ステップ1:GAS 継続が必要か確認する
以下のいずれか1つでも当てはまれば、そのスクリプトは GAS 継続が必要です。
- [ ] 時間トリガー(定期実行)を使っているか
- [ ] 外部 URL へのリクエスト(UrlFetchApp 等)を含んでいるか
- [ ] Admin SDK(ユーザー管理・グループ管理)を呼んでいるか
- [ ] Gmail / Calendar / Drive など Workspace サービスを操作しているか
- [ ] 別スプレッドシートやファイルへ書き込んでいるか
- [ ] Gmail・Drive・Calendar・Admin SDK など Sheets 以外のサービスを呼び出しているか
ステップ2:Named Functions への移行を検討できるか確認する
ステップ1がすべて「いいえ」なら、次の条件を確認します。
- [ ] 処理がセル値の入力・変換・集計に完結しているか
- [ ] 外部サービスへの接続が不要か
- [ ] セル入力をきっかけに動作すれば十分か(定期実行でなくてよいか)
- [ ] Sheets 組み込み関数の組み合わせで処理を表現できそうか
この2段構成のチェックを使うと、「移行できるか判断できずプロジェクトが止まっている」という状態から抜け出しやすくなります。棚卸し対象のスクリプトが多い場合は、前のセクションで紹介した一覧スプレッドシートにこの判定結果を列として追記していくと、チームで共有しやすい形になります。
棚卸しを進める上での現実的な順序
判断軸が整理できたとして、どの順で作業を進めると効率的かを整理します。
移行作業は「移行可能で、かつ現在トラブルが多い・メンテナンスコストが高いもの」から始めると、効果が実感しやすくなります。問題なく動いているスクリプトを急いで移行する必要はありません。
「条件付き移行」の処理は、IMPORTRANGE への切り替えによる影響を1ファイル・1用途でテストしてから全体展開します。一括で移行すると、予期しない動作が起きたときの原因特定が難しくなります。
「移行不可」に分類されたスクリプトは、現状維持を前提に管理者・実行アカウント・スコープ・用途をドキュメント化しておくことが先決です。GAS スクリプト一覧の整備だけでも、担当交代時やトラブル対応時に確実に役立ちます。
まとめ
Named Functions と LAMBDA は、データ変換・条件判定・再利用数式など、計算ロジック完結型の GAS スクリプトを置き換えられます。スクリプトの認可フローが不要になり、メンテナンスコストが下がるメリットがあります。
一方、時間トリガー・HTTP リクエスト・Admin SDK 連携・Workspace サービス操作の代替手段は現時点では存在しません。「GAS を全廃する」方向で進めると、これらの処理が止まって現場が混乱します。
最初のステップは全廃でも全残しでもなく、この3分類でスクリプトを仕分けることです。移行可能なものから置き換えを進め、移行不可のものは適切にドキュメント化して管理する。この進め方が、業務を止めずに GAS 管理コストを下げる現実的な路線です。
コーポレートITのご相談はお気軽に
この記事で書いたような業務改善・自動化の設計から実装まで、DRASENASではコーポレートITの現場に寄り添った支援を行っています。 「まず相談だけ」でも大歓迎です。DRASENAS 公式サイトからお気軽にどうぞ。
御社の IT 部門、ここにあります。
「ITのことはあまりわからない」── そのような状態からで、まったく問題ございません。まずはお気軽にご相談ください。