お仕事おつにゃッス🐈
文系未経験から社内SEになった、あっきょ(@daily_code_JP)です!
スプシで作成したリストから特定のデータを探して別シートに貼り付けるのは大変ですよね?
この記事ではそのお悩みをコピペOKのGoogle Apps Scriptのコードで解決します。

- シート内のデータを検索して別シートに貼り付けたい
- 簡単にデータを管理して見やすくしたい
- プログラミングでJavaScriptを学んだけど、何を作っていいかわからない
無料で誰でもできますので、お気軽に学んでいきましょう!
0円でプログラミングを学べるスクール

タップできる目次
検索結果を一覧表示するイメージ

シートを2つ用意し、リストから検索した結果を転記する機能を作成します。
一致するデータを手動で抽出すると、膨大な時間がかかって凡ミスも多発。
しかし、今回紹介するコードを使えば1クリックでリスト内を検索して別シートにまとめます。
結果として、労力の削減とミスの減少につながります。
検索結果を一覧表示する準備
GASで検索結果を操作する準備をします。ファイルを1点用意します。
必要なファイル
- Google スプレッドシート ・・・ リストを作成 & プログラムをコピペ
Google スプレッドシートの作成
検索結果を一覧表示するスプレッドシートを作成していきます。
「企業名」,「商品名」,「数量」の3項目を1行目に記入。
2行目以降は個別のデータを行ごとに記入します。

シートの名前を変更します。
下バーの「シート1」を右クリックし、「リスト」にシート名を変更。

赤丸で囲った「+」ボタンを押して新しいシートを生成します。
また、シート名を「検索」に変更。

「検索」シート内を編集します。
A2に「企業名」、D2「商品名」、E2「数量」の項目を記入します。

検索する企業名をB2セルに入力します。
例として「株式会社B」を記入。
スプレッドシートの作成は以上です。

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

検索結果を表示するサンプルコード
検索結果を一覧で一斉表示するサンプルコードの公開と解説をします。
解説の項目
- サンプルコード
- A, 操作するスプレッドシートの定義
- B, 一致する値を配列に格納
- C,「検索」シートに一致したデータを入力
サンプルコード
右上にあるマークを押すとコードのコピペを一瞬でできます。
また、コード内で文頭にアルファベットが付いているコメントごとに詳細を説明します。
function searchBoughtItemsList(){
//A,スプレッドシートの定義
const spreadSheet = SpreadsheetApp.getActiveSpreadsheet();
const listSheet = spreadSheet.getSheetByName('リスト');
const listLastRow = listSheet.getLastRow();
const searchSheet = spreadSheet.getSheetByName('検索');
const companyName = searchSheet.getRange("B2").getValue(); //「検索」シートの企業名
const matchArray = []; //一致する値を格納する配列
const START_WRITE_ROW = 3; //値を書き始める「検索」シートの行
const START_WRITE_COL = 4; //値を書き始める「検索」シートの列
//B,一致する値を配列に格納
for (var i=1; i<=listLastRow; i++){
const listedCompany = listSheet.getRange("A"+ i).getValue(); //「リスト」シートの「企業名」
if(companyName == listedCompany){
const listEach = listSheet.getRange("B" + i + ":" + "C" + i ).getValues().flat();
matchArray.push(listEach);
}else{
continue;
}
}
//C,「検索」シートに一致したデータを入力
const matchArrayLen = matchArray.length;
for(var y=0; y<matchArrayLen; y++){ //外側のfor
const elemLen = matchArray[y].length;
for(var z=0; z<elemLen; z++){ //内側のfor
searchSheet.getRange(START_WRITE_ROW+y,START_WRITE_COL+z).setValue(matchArray[y][z]);
}
}
}
A, 操作するスプレッドシートの定義
//A,スプレッドシートの定義
const spreadSheet = SpreadsheetApp.getActiveSpreadsheet();
const listSheet = spreadSheet.getSheetByName('リスト');
const listLastRow = listSheet.getLastRow();
const searchSheet = spreadSheet.getSheetByName('検索');
const companyName = searchSheet.getRange("B2").getValue(); //「検索」シートの企業名
const matchArray = []; //「リスト」シートで一致する値を格納する配列
const START_WRITE_ROW = 3; //値を書き始める「検索」シートの行
const START_WRITE_COL = 4; //値を書き始める「検索」シートの列
「リスト」シートと「検索」シートをそれぞれ定義。
定数 companyNameで「検索」シートのB2の値を取得します。
定数 matchArray は「リスト」シートの「企業名」=「検索」シートのB2 の場合、一致した値を格納します。
B, 一致する値を配列に格納
//B,一致する値を配列に格納
for (var i=1; i<=listLastRow; i++){
const listedCompany = listSheet.getRange("A"+ i).getValue(); //「リスト」シートの「企業名」
if(companyName == listedCompany){
const listEach = listSheet.getRange("B" + i + ":" + "C" + i ).getValues().flat();
matchArray.push(listEach);
}else{
continue;
}
}
「リスト」シートを1行ずつ読み込んで一致する値をmatchArray配列に格納します。
企業名が一致した場合、getValuesメソッドで取得した「商品」と「数量」の二次元配列を一次元化して格納。
一致しない場合はcontinueで処理を飛ばします。
二次元配列を普通の配列に変換するflatメソッドの詳細はこちら。
-
【初心者必須】GASで二次元配列を一次元化するflatメソッド
続きを見る
C,「検索」シートに一致したデータを入力
//C,「検索」シートに一致したデータを入力
const matchArrayLen = matchArray.length;
for(var y=0; y<matchArrayLen; y++){ //外側のfor
const elemLen = matchArray[y].length;
for(var z=0; z<elemLen; z++){ //内側のfor
searchSheet.getRange(START_WRITE_ROW+y,START_WRITE_COL+z).setValue(matchArray[y][z]);
}
}
一致したデータを格納したmatchArrayを「検索」シートに入力。
このfor文内の流れを下の画像で説明します。

外側のfor文は赤枠のmatchArray内の要素を取得しますが、赤枠内の要素も配列。
内側のfor文で黄色マーカーの要素を取得してシートに値を入力します。
この処理を上限まで自動で動きます。
二次元配列の要素の取り出し方はこちらから。
-
【5分で便利】GASで二次元配列内の配列から要素を取り出し
続きを見る
コードの説明は以上です。
結果を一覧表示するプログラムの実行
実際に「検索」シートに転記できるかテストします。
Apps Scriptの上バーの文字が「searchBoughtItemsList」になら「実行」を押します。

「このアプリは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で検索機能を作って効率化しよう!
以上がGoogle Apps Scriptで検索結果をスプレッドシート上で一覧表示する方法でした。
そのままコピペしたり、プログラミングの練習や動作確認用に使ったりしてみましょう。
今回紹介したサンプルコード以外にも、GASで検索機能の作成は可能。
あわせて読みたい
-
【5分で解決】GASで文字列を検索する2つのサンプルコード
続きを見る
目的別におすすめスクールを紹介しているので、ぜひご参考ください。
スクール選びで悩んでいるならデイコーのお問い合わせまでご連絡を。
あなたのお力になります。