Google Apps Scriptで行うスプレッドシートの検索方法
最終更新日:2026年8月7日
はじめに
| 項目 | Google Apps Script | Excel VBA | Python |
|---|---|---|---|
| 主な用途 | Google Workspace自動化 | Excel業務自動化 | 汎用自動化・データ分析 |
| 学習難易度 | 低(JavaScript系) | 中 | 低〜中 |
| 実行環境 | クラウド(無料) | Windows/Excel必須 | ローカル or クラウド |
| Googleサービス連携 | 最高 | 低 | API経由で可 |
Google Apps ScriptとはGoogleが提供しているサービスと連携して使うためのプログラミング言語です。それぞれの単語の頭文字をとって「GAS」と呼ばれています。JavaScriptベースのプログラミング言語で構成されています。Googleアカウントがあれば、無料でつかうことができ、インストールや環境構築が特に必要ないのですぐに試すことができます。GASの一番のポイントはGoogleが提供しているサービス(Gmailやドキュメント、スプレッドシート等)と連携して使うことで自動化や自作の機能を作成して使用したりできることです。今回はこのGASをGoogleスプレッドシート内の文字列を検索する方法を紹介していきます。
この記事でわかること
スプレッドシートとGoogle Apps Scriptの準備
まずはじめにGoogle Driveを開きます。左の「新規」ボタンをクリックして「Googleスプレッドシート」を選択、右のタブから「空白のスプレッドシート」を選択します。スプレッドシートを開いたら、上部のメニューから「拡張機能>Apps Script」をクリックします(旧メニュー名:ツール>スクリプトエディタ)。無題のプロジェクトが開いたら下のコードのように、function myFunctionのみ表示されます。ここまで準備できたらOKです。
function myFunction() {
}
シート内の文字列検索
今回の文字列検索のコードは以下になります。コードをコピー&ペーストして、シートにデータを用意してvar textFinder = sheet.createTextFinder('aaa');の(‘aaa’)内の’aaa’の部分を好きな文字に変更すれば、スクリプトの動作確認ができます。
function myFunction() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getActiveSheet();
var textFinder = sheet.createTextFinder('aaa');
var cells = textFinder.findAll();
Logger.log('ヒット数 : ' + cells.length);
for(var i=0; i<cells.length; i++){
Logger.log('セル位置 : ' + cells[i].getA1Notation()) ;
}
}
コード解説
まずは、スプレッドシートを操作するためにはスプレッドシートのオブジェクトを取得する必要があります。上記のコードのSpreadsheetApp.getActiveSpreadsheet()でスプレッドシートのオブジェクトを取得します。そして、変数spreadsheetからspreadsheet.getActiveSheet()でスプレッドシート内のシートを取得します。今回はスプレッドシートからスクリプトエディタで開いているので、シートの情報をそのまま取得することができます。これ以外でやる場合はURLでスプレッドシートやIDで指定する必要があります。
変数sheetからsheet.createTextFinder()で検索したい文字列を探します。今回はサンプルとして文字列を'aaa'にしました。textFinder.findAll()でシート全体から対象のセルの位置を取得することができます。Logger.log('ヒット数 : ' + cells.length);で文字列に引っかかったセルの数を出力しています。下のLogger.logでは、変数cellsに検索したセルの位置も格納されているので、for文で展開してlogに出力しています。その際使用しているgetA1Notation()メソッドを使用すれば、「A1」のようなセル番号で表示することができます。下の画像が実際の実行結果になります。
サンプルのスプレッドシート

実行結果

一行目がヒットした文字列の個数。それ以降はヒットした文字列のセル番号を表示しています。
この記事のポイント
- GASの
createTextFinder()とfindAll()を使えば、スプレッドシート全体から特定の文字列を含むセルを一括で検索できる - ヒットしたセルの位置は
getA1Notation()で「A1」形式の分かりやすい表記に変換できる - 今回はログ出力のみだが、メッセージボックス表示や自作関数化など、用途に応じた応用が可能
よくある質問
- Q. スクリプトエディタはどこから開けますか?
- A. スプレッドシートのメニューから「拡張機能>Apps Script」で開けます(以前は「ツール>スクリプトエディタ」という名称でした)。
- Q. 大量データのシートでも今回の方法は使えますか?
- A. 使えますが、シートの行数・列数が非常に多い場合は処理時間がかかることがあるため、検索範囲を絞る、必要な列のみ対象にするなどの工夫が有効です。
- Q. 検索結果をログではなくスプレッドシート上に表示することはできますか?
- A. 可能です。
Logger.log()の代わりにSpreadsheetApp.getUi().alert()でメッセージボックス表示にしたり、結果を別のセルに書き込む処理に置き換えることで実現できます。
関連記事
まとめ
本記事ではGoogle Apps Scriptを使用したスプレッドシート内の検索について解説させていただきました。今回はかなり簡素な検索方法を紹介しました。説明しきれなかったところではLogではなくスプレッドシート内でメッセージボックスで表示させたり、自作の関数としてスプレッドシートに登録して、スプレッドシートのタブから使う方法等あります。スクリプトの処理でいえば、今回のサンプルは説明用なので、単純な方法で一致した文字列を取得していますが、実際のシートはもっと大量のデータが存在するので、処理時間がかからないように工夫する必要があります。今回の記事を足掛かりにGASの理解を深めていってみてください。
▼ アクロビジョンについて


