Google Apps Scriptで行うスプレッドシートの検索方法

はじめに

Google Apps ScriptとはGoogleが提供しているサービスと連携して使うためのプログラミング言語です。それぞれの単語の頭文字をとって「GAS」と呼ばれています。JavaScriptベースのプログラミング言語で構成されています。Googleアカウントがあれば、無料でつかうことができ、インストールや環境構築が特に必要ないのですぐに試すことができます。GASの一番のポイントはGoogleが提供しているサービス(Gmailやドキュメント、スプレッドシート等)と連携して使うことで自動化や自作の機能を作成して使用したりできることです。今回はこのGASをGoogleスプレッドシート内の文字列を検索する方法を紹介していきます。

スプレッドシートからの使い方・連携

スプレッドシートとGoogle Apps Scriptの準備

まずはじめにGoogle Driveを開きます。左の「新規」ボタンをクリックして「Googleスプレッドシート」を選択、右のタブから「空白のスプレッドシート」を選択します。スプレッドシートを開いたら、上部のタブから「ツール>スクリプトエディタ」をクリックします。無題のプロジェクトが開いたら下のコードのように、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」のようなセル番号で表示することができます。下の画像が実際の実行結果になります。

サンプルのスプレッドシート

実行結果

一行目がヒットした文字列の個数。それ以降はヒットした文字列のセル番号を表示しています。

まとめ

本記事ではGoogle Apps Scriptを使用したスプレッドシート内の検索について解説させていただきました。今回はかなり簡素な検索方法を紹介しました。説明しきれなかったところではLogではなくスプレッドシート内でメッセージボックスで表示させたり、自作の関数としてスプレッドシートに登録して、スプレッドシートのタブから使う方法等あります。スクリプトの処理でいえば、今回のサンプルは説明用なので、単純な方法で一致した文字列を取得していますが、実際のシートはもっと大量のデータが存在するので、処理時間がかからないように工夫する必要があります。今回の記事を足掛かりにGASの理解を深めていってみてください。