お仕事おつにゃッス🐈
文系未経験から社内SEになった、あっきょ(@daily_code_JP)です!
今回はGoogle Apps Scriptで文字列を検索する方法を紹介します。

- 膨大なリストからデータを検索する手間を省きたい
- 完全一致じゃなく部分一致の検索機能を実装したい
- プログラミングでJavaScriptを学んだけど、何を作っていいかわからない
Webサイト制作で使用する JavaScript のとあるコードを使うだけで、簡単に検索機能を作成できます。コピペOKなので、気軽に学んでいきましょう。
タップできる目次
文字列を検索する完成イメージ

GASで部分一致の検索機能を作成します。
この記事では、同じコードを使って以下の2つの方法を紹介します。
- 一致するものを1つだけ取得する方法
- 配列に格納してすべて取得する方法
結果として、人的ミスと検索時間の削減につながり、業務効率化を実現します。
文字列を検索する準備
Google Apps Script で文字をあいまい検索する準備をします。準備するファイルは1つです。
必要なファイル
- Google Apps Script ・・・ コードの貼り付け
スプレッドシートの作成
文字列を検索するスプレッドシートを作成します。
この記事では「氏名」、「性別」、「年齢」の3項目を追加します。
2行目から11行目までに個人のデータをそれぞれ記入していきます。スプレッドシートの準備は以上です。

サンプルコードを貼り付ける場所
サンプルコードはGoogle スプレッドシートにコピペします。
上バーの「拡張機能」の中にある「Apps Script」をクリック。ここにコードを書きます。

文字列を検索するサンプルコード
GASで文字列を検索するサンプルコードの公開と解説を行います。
解説の項目
- indexOfメソッド | 指定した文字列を検索
- サンプルコード
- A, 検索ワード記入
- B, スプレッドシートの情報を取得
- C, 配列内の要素を1つずつ取得して一致するか検証
indexOfメソッド | 指定した文字列を検索

GASで文字列を検索するにはindexOfメソッドを使います。
引数の中に文字列を入力するだけで、一瞬で一致する文字があるかどうかを検索できます。
文字列内で一致する値が1つもなければ「-1」を返します。
サンプルコード
右上にあるマークを押すとコードのコピペを一瞬でできます。また、コード内で文頭にアルファベットが付いているコメントごとに、詳細を説明していきます。
function searchWord(){
//A,検索ワード記入
const searchWord = "宇佐見"; //検索する言葉
//B,スプレッドシートの情報を取得
const sheet = SpreadsheetApp.getActiveSpreadsheet();
const nameArray = sheet.getRange("A2:A11").getValues().flat(); //二次元配列を一次元化
const nameArrayLen = nameArray.length; //配列の長さを取得
//C,配列内の要素を1つずつ取得し、一致するか検証
for(var i=0; i<nameArrayLen; i++){
const isExisted = nameArray[i].indexOf(searchWord);
if(isExisted != -1){
Logger.log(nameArray[i]); //定数searchWordの値を含む要素をログ出力
}
}
}
A, 検索ワード記入
//A,検索ワード記入
const searchWord = "宇佐見"; //検索する言葉
検索する言葉を定数searchWord に代入します。
この例では「宇佐見」を使っていますが、どの単語でも問題ありません。
B, スプレッドシートの情報を取得
//B,スプレッドシートの情報を取得
const sheet = SpreadsheetApp.getActiveSpreadsheet();
const nameArray = sheet.getRange("A2:A11").getValues().flat(); //二次元配列を一次元化
const nameArrayLen = nameArray.length; //配列の長さを取得
検索するスプレッドシートを取得します。
A2からA11までの値を取得して二次元配列を一次元化した後、配列内の要素の個数を取得しています。
二次元配列を一次元化するflatメソッドの詳細はこちらから。
-
【初心者必須】GASで二次元配列を一次元化するflatメソッド
続きを見る
C, 配列内の要素を1つずつ取得して一致するか検証
//C,配列内の要素を1つずつ取得し、一致するか検証
for(var i=0; i<nameArrayLen; i++){
const isExisted = nameArray[i].indexOf(searchWord);
if(isExisted != -1){
Logger.log(nameArray[i]); //定数searchWordの値を含む要素をログ出力
}
}
繰り返し構文で、nameArray内の要素を1つずつ取り出して照合していきます。
indexOfメソッドで引数内の値と一致する配列の要素を検索します。
言い換えると、配列内の要素とsearchWordの値が一致すれば検索結果として反映します。
返り値が「-1」 以外の値だったら検索結果をログ出力します。
コードの説明は以上です。
検索するコードのテスト
実際に、スプレッドシートで文字列を検索します。
Apps Scriptの上バーの文字が「searchWord」になっていたら、「実行」を押します。

「このアプリはGoogleで確認されていません」と表示される場合はこちら。
-
【3分で解決】GASの「このアプリはGoogleで確認されていません」を許可する方法
続きを見る
画像のように、ログ結果がでたら完了です。「宇佐見」に一致する名前が結果として表示されました。

【応用】複数の検索結果を出力するコード
先ほど紹介したサンプルコードは一致する値を検索するだけの機能しかありませんでした。
しかし、配列を新たに作成すると一致した値をすべて取得できます。
サンプルコード
検索するワードは「山」に変更しています。
先ほどのサンプルコードとほぼ同じですが、一致した値を格納するhitArray配列の定義と一致した値を配列に格納する処理を追加しています。
function searchWords(){
//A,変更可能エリア
const searchWord = "山"; //検索するワード
//B,スプレッドシートの情報を取得
const sheet = SpreadsheetApp.getActiveSpreadsheet();
const nameArray = sheet.getRange("A2:A11").getValues().flat(); //二次元配列を一次元化
const nameArrayLen = nameArray.length;
const hitArray = []; //ヒットしたワードを格納
//C,配列内の要素を1つずつ取得し、一致するか検証
for(var i=0; i<nameArrayLen; i++){
const isExisted = nameArray[i].indexOf(searchWord);
if(isExisted != -1){
hitArray.push(nameArray[i]); //一致する値があったら、配列に格納
}
}
Logger.log(hitArray);
}
画像のように、ログ結果がでたら完了です。名前に「山」が含まれる値のみが格納されました。

【さらに便利】GASで検索機能ができるコード一覧
この記事では、GASで文字列を検索する方法を紹介しました。
今回紹介したコードを使って別シートに転記することもできます。
誰でも簡単に無料でできるので、ぜひご活用ください。
もちろん、コピペOKです。
-
【作業3割減】GASで部分一致した値を別シートに書き込むサンプルコード
続きを見る
完全一致で検索する場合はこちら。
-
【3分で完成】GASで検索結果をスプレッドシートに一覧表示
続きを見る
おわりに | GASで市場価値をさらに高めるには
以上、GASであいまい検索を設置する方法でした。
そのままコピペして日常業務で使いやすいように改修したり、プログラミングの練習や動作確認用に使ってみましょう。
GASでさらに業務効率化したい場合、参考書やプログラミングスクールを使うとあなた自身でアプリを作るスキルが身に付きます。
プログラミング未経験者にもわかりやすく解説しています。

次回の記事もご期待ください!