お仕事おつにゃッス🐈
文系未経験から社内SEになった、あっきょ(@daily_code_JP)です!
あなたのスプレッドシートで作ったリストで、部分一致で検索結果を表示して保存したいことはありませんか?
この記事ではそのお悩みを、コピペOKのGoogle Apps Scriptのコードで解決します。

- 部分一致の検索機能を作りたい
- 検索して一致したものをシートに表示して保存したい
- プログラミングでJavaScriptを学んだけど、何を作っていいかわからない
誰でも無料で簡単にできますので、お気軽に学んでいきましょう!
0円でプログラミングを学べるスクール

タップできる目次
部分一致を検索するイメージ

1クリックでシート内の値をすべて検索し、該当するものだけを抽出する機能を作成します。
例えば、氏名に「山」がつく人物のデータを出力する場合、「青山」や「木山」などの氏名をすべて抽出します。
また、一致した結果を別のシートに転記して見やすくします。
この記事は、indexOfメソッドを使った検索機能のコードを改良しています。詳細はこちら。
-
【5分で解決】GASで文字列を検索する2つのサンプルコード
続きを見る
部分一致を検索する準備
GASで部分一致したデータを別シートに書く準備をします。ファイルは1つ必要です。
必要なファイル
- Google スプレッドシート ・・・ 顧客データの作成 & コードの貼り付け
スプレッドシートの作成
Google スプレッドシートを作成します。
スプレッドシートのシートを2つ用意し、それぞれのシート名を「顧客データ」と「検索結果」に変更します。
シートの数が足りない場合は赤丸の+字アイコンを押して新規追加します。

「顧客データ」シートには顧客のリストを登録します。
この記事では以下の画像のように、2行目から11行目までに記入していきます。スプレッドシートの準備は以上です。

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

部分一致を別シートに反映するコード
GASで部分一致した文字を別シートに反映するサンプルコードの公開と解説を行います。
解説の項目
- サンプルコード
- A, 検索ワード記入
- B,シートの定義
- C, 複数のセルから値を取得
- D, 部分一致すれば配列に格納
- E,「検索結果」に部分一致した値を記入
サンプルコード
右上にあるマークを押すとコードのコピペが一瞬でできます。また、文頭にアルファベットが付いているコメントごとに、詳細を説明していきます。
function partMatch(){
//A,検索ワード記入
const searchWord = "山";
//B,シートの定義
const spreadSheet = SpreadsheetApp.getActiveSpreadsheet(); // 現在のSpreadSheetを取得
const dataSheet = spreadSheet.getSheetByName("顧客データ");
const resultSheet = spreadSheet.getSheetByName("検索結果");
const START_COL_NUM = 1; //getRangeメソッドで読み込み始める列番号
const START_ROW_NUM = 1; //getRangeメソッドで読み込み始める行番号
const lastCol = dataSheet.getLastColumn();
const lastRow = dataSheet.getLastRow();
//C,複数のセルから値を取得
const nameArray =dataSheet.getRange(START_ROW_NUM, START_COL_NUM, lastRow, lastCol).getValues(); //「顧客データ」シート内のデータを全て取得
const nameArrayLen = nameArray.length;
const matchArray = []; //部分一致したものだけを格納
//D,部分一致すれば配列に格納
for(var i=0; i<nameArrayLen; i++){
if( i===0 ){ //最初の要素は判定処理しない
continue;
}else{
const valueArray = nameArray[i][0].indexOf(searchWord);
if(valueArray != -1){
matchArray.push(nameArray[i]);
}
}
}
//E,「検索結果」に部分一致した値を記入
const matchArrayLen = matchArray.length;
resultSheet.getRange(START_ROW_NUM, START_COL_NUM, matchArrayLen, lastCol).setValues(matchArray);
}
A, 検索ワード記入
//A,検索ワード記入
const searchWord = "山"; //検索する言葉
検索する文字を定数searchWordに記入します。
この例では「山」を検索対象にしていますが、どの単語に変更しても問題ありません。
B,シートの定義
//B,シートの定義
const spreadSheet = SpreadsheetApp.getActiveSpreadsheet(); // 現在のSpreadSheetを取得
const dataSheet = spreadSheet.getSheetByName("顧客データ");
const resultSheet = spreadSheet.getSheetByName("検索結果");
const START_COL_NUM = 1; //getRangeメソッドで読み込み始める列番号
const START_ROW_NUM = 1; //getRangeメソッドで読み込み始める行番号
const lastCol = dataSheet.getLastColumn(); //最終列の番号
const lastRow = dataSheet.getLastRow(); //最終行の番号
操作するスプレッドシートのシートの定義をします。
定数dataSheetには「顧客データ」、定数resultSheetに「検索結果」のシートを指定します。
また、getRangeメソッドで読み込み始める番号を定義して処理するセルの位置を決めます。
最終行と最終列を取得するメソッドの詳細はこちらから。
-
【5分で解決】GASでスプレッドシートの最終行と最終列を取得
続きを見る
C, 複数のセルから値を取得
//C,複数のセルから値を取得
const nameArray =dataSheet.getRange(START_ROW_NUM, START_COL_NUM, lastRow, lastCol).getValues(); //「顧客データ」シート内のデータを全て取得
const nameArrayLen = nameArray.length;
const matchArray = []; //部分一致したものだけを格納
「顧客データ」シート内の値を全て取得します。
getValuesメソッドで顧客情報をすべて取得した後、二次元配列内の要素の個数をかぞえます。
また定数matchArrayで空配列を定義し、のちのDの処理で部分一致したデータを格納します。
複数のセル内の値を取得するgetValuesメソッドの詳細はこちら。
-
【1行で簡単】GASでシートの複数のセルの値を一括で取得
続きを見る
D, 部分一致すれば配列に格納
//D,部分一致すれば配列に格納
for(var i=0; i<nameArrayLen; i++){
if( i===0 ){ //最初の要素のみ別の処理
continue;
}else{
const valueArray = nameArray[i][0].indexOf(searchWord);
if(valueArray != -1){
matchArray.push(nameArray[i]);
}
}
}
取得した二次元配列内の値に、検索する文字が含まれていれば空配列に格納します。
配列の1番目に、1行目の「顧客データ」の文字が入っているのでcontinueで除外します。
その他の要素は一致する文字があるか判定します。
1つでも一致する文字があれば、pushメソッドでmatchArrayに格納します。
一致する文字を検索するindexOfメソッドの詳細は以下の記事をご参考ください。
-
【5分で解決】GASで文字列を検索する2つのサンプルコード
続きを見る
E,「検索結果」に部分一致した値を記入
//E,「検索結果」に部分一致した値を記入
const matchArrayLen = matchArray.length;
resultSheet.getRange(START_ROW_NUM, START_COL_NUM, matchArrayLen, lastCol).setValues(matchArray);
部分一致した値を格納した配列を「検索結果」シートのセル内に記入します。
複数のセルに値を記入するsetValuesメソッドの詳細は以下の記事から。
-
【3分で完了】GASシートの複数のセルに値を書き込む方法
続きを見る
サンプルコードの説明は以上です。
部分一致した値を書き込むテスト
実際に、部分一致を別シートに書き込むテストをします。
Apps Scriptの上部にあるバーの文字が「partMatch」なら、左側の「実行」を押します。

「このアプリはGoogleで確認されていません」と表示した場合はこちら。
-
【3分で解決】GASの「このアプリはGoogleで確認されていません」を許可する方法
続きを見る
画像のように、「検索結果」シートに反映されてたら成功です。
氏名が「山」と部分一致するデータが結果として表示されました。

初心者でも学びやすい&挫折しないスクール3選

初心者でも学びやすいプログラミングスクールを3つ紹介します。
プログラミング独学の挫折率は60%近くと高め。
エラーを解決できなかったり相談できる人がいなかったりと理由はさまざまです。
モチベを保てる環境を整えたのがスクールで挫折率を1割未満に抑えられます。
そこで、デイコーで調査した82社から厳選して解説します。
- テックアカデミー | 未経験から月5万の副収入を目指す
- インターネット・アカデミー | Excel自動化で残業減
- 侍テラコヤ | 50種類以上の教材を学び放題
テックアカデミー | 未経験から月5万の副収入を目指す

おすすめコース | はじめての副業コース |
受講料(税込) | 87,600円~(8週間プラン+給付金適応後) |
分割払い(24回) | 4,996円 |
受講形式 | オンライン |
強み |
|
テックアカデミーは総合満足度95.3%で未経験者に人気のプログラミングスクール。
テキスト形式の教材で進めながら不明点を現役エンジニアのメンターに質問します。
- 週2回のマンツーマンメンタリング
- 毎日15〜23時までのチャットサポート
- 課題レビューとアドバイス
夜遅くまで対応するので退勤後も気軽に相談できます。
「はじめての副業コース」ではGASの開発ベースになったJavaScriptを使ってWeb制作を学習。
学習後はメンターの支援を受けつつスクールの独自案件で副業の実績を積み上げます。

インターネット・アカデミー | Excel自動化で残業減

おすすめコース | Python×Excel自動化講座 |
受講料(税込) | 118,000円 |
分割払い(36回) | 3,800円~ |
受講形式 |
|
強み |
|
インターネット・アカデミーは初心者から最短距離でスキルを習得するスクール。
初心者が挫折しないサポートが10個が特徴で以下はその一部。
- 動画授業が24時間見放題
- 1年間受講受け放題
- 技術面の質問ができるチャットサービス
- 受講生限定のセミナーや交流会
- 手厚い転職準備サポート&求人紹介
卒業後には未経験からエンジニア転職するキャリアプランも築けます。
Python×Excel自動化講座はエクセル自動化に特化したカリキュラム。
売上伝票の集計や顧客リスト抽出など実践的に学びながらPythonの基礎基本を身に着けます。
いつもの作業を効率化して残業を減らすならおすすめ。

侍テラコヤ | 50種類以上の教材を学び放題

おすすめコース | フリープラン |
受講料(税込) | 0円~ |
受講形式 | オンライン |
強み |
|
侍テラコヤは50教材以上を定額で受け放題のオンラインスクール。
回答率100%の質問掲示板などの初心者でも挫折しない環境が整っているのが特徴です。
フリープランは無料で教材の一部を閲覧可能。
GASを学ぶ場合、「業務自動化コース」で基礎基本から学べます。
まずは0円で教材を利用したい人にはおすすめです。

まとめ | 部分一致で検索も楽に!
以上、GASで部分一致の検索するサンプルコードでした。
そのままコピペして日常業務やプログラミングの練習に使ってみましょう。
今回紹介したサンプルコード以外にも、GASで配列の処理は可能。
あわせて読みたい
-
【3分で完成】GASで検索結果をスプレッドシートに一覧表示
続きを見る
あわせて読みたい
-
【5分で楽】GASでVLOOKUP関数のような検索機能を作成
続きを見る
ヒューマンエラーが起きやすく時間がかかる作業をGASに任せましょう。
不明点やスクール選びで悩んでいるならデイコーのお問い合わせまでご連絡を。
あなたのお力になります。