※当サイトの商品・サービスのリンク先にPRを含みます。

Google Apps Script 時短ツール

【5分で解決】GASで文字列を検索する2つのサンプルコード

お仕事おつにゃッス🐈

文系未経験から社内SEになった、あっきょ(@daily_code_JP)です!

今回はGoogle Apps Scriptで文字列を検索する方法を紹介します。

あっきょ
この記事は以下で悩んでいる人におすすめッス!

  • 膨大なリストからデータを検索する手間を省きたい
  • 完全一致じゃなく部分一致の検索機能を実装したい
  • プログラミングでJavaScriptを学んだけど、何を作っていいかわからない

JavaScript のとあるコードを使うだけで簡単に検索機能を作れます。

コピペOKなので気軽に学んでいきましょう。 

0円でプログラミングを学べるスクール

侍テラコヤのロゴ

侍テラコヤはサブスク型のプログラミングスクール。

  • 50種類以上の教材を学び放題
  • 回答率100%の質問掲示板が無制限
  • 無料で学べる「フリープラン」

仕事後の夜遅くでもスキルアップするならおすすめです。

文字列を検索する完成イメージ

文字列を検索する完成イメージ

GASで部分一致の検索機能を作成します。

この記事では、同じコードを使って以下の2つの方法を紹介。

  • 一致するものを1つだけ取得する方法
  • 配列に格納してすべて取得する方法

結果として、人的ミスと検索時間の削減して業務効率化を実現します。

文字列を検索する準備

Google Apps Script で文字をあいまい検索する準備をします。準備するファイルは1つです。

必要なファイル

  • Google Apps Script  ・・・ コードの貼り付け

スプレッドシートの作成

この記事では「氏名」、「性別」、「年齢」の3項目を追加。

2行目から11行目までに個人のデータをそれぞれ記入していきます。

スプレッドシートの準備は以上です。

GASであいまい検索をするスプレッドシートの準備

サンプルコードを貼り付ける場所

サンプルコードはGoogle スプレッドシートにコピペ。

上バーの「拡張機能」の中にある「Apps Script」をクリックしてコードを貼り付けます。

GASをスプレッドシートに記入する際の「Apps Script」の表示

文字列を検索するサンプルコード

GASで文字列を検索するサンプルコードの公開と解説を行います。

解説の項目

  • indexOfメソッド | 指定した文字列を検索
  • サンプルコード
  • A, 検索ワード記入
  • B, スプレッドシートの情報を取得
  • C, 配列内の要素を1つずつ取得して一致するか検証

indexOfメソッド | 指定した文字列を検索

GASで文字列を検索する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」になっていたら、「実行」を押します。

GASであいまい検索するsearchWord関数の実行

「このアプリはGoogleで確認されていません」と表示した場合はこちら

【3分で解決】GASの「このアプリはGoogleで確認されていません」を許可する方法

続きを見る

画像のように、ログ結果がでたら完了です。「宇佐見」に一致する名前が結果として表示されました。

indexOfメソッドを使った検索機能をログ出力した結果

【応用】複数の検索結果を出力するコード

先ほど紹介したサンプルコードは一致する値を検索するだけの機能しかありませんでした。

しかし、配列を新たに作成すると一致した値をすべて取得できます。

サンプルコード

検索するワードは「山」に変更しています。

先ほどのサンプルコードとほぼ同じですが、2か所異なります。

  • 一致した値を格納する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);

}

画像のようにログ結果がでたら完了です。

名前に「山」が含まれる値のみを格納しました。

indexOfメソッドを使った検索機能で複数の要素をログ出力した結果

事務職や営業職でも学びやすいスクール3選

エンジニアではない社会人でも学びやすいプログラミングスクールを3つ紹介。

プログラミング独学の挫折率は60%近くと高めです。

エラーを解決できなかったり相談できる人がいなかったりと理由はさまざまです。

モチベを保てる環境を整えたスクールなら挫折率を1割未満に抑えられます。

そこで、デイコーで調査した82社から厳選して解説します。

  • テックアカデミー | 未経験から月5万の副収入を目指す
  • インターネット・アカデミー | Excel自動化で残業減
  • 侍テラコヤ | 50種類以上の教材を学び放題

テックアカデミー | 未経験から月5万の副収入を目指す

はじめての副業コースのトップイメージ
引用:テックアカデミー

テックアカデミーは総合満足度95.3%で未経験者に人気のプログラミングスクール。

テキスト形式の教材で進めながら不明点を現役エンジニアのメンターに質問します。

  • 週2回のマンツーマンメンタリング
  • 毎日15〜23時までのチャットサポート
  • 課題レビューとアドバイス

夜遅くまで対応するので退勤後も気軽に相談できます。

「はじめての副業コース」ではGASの開発ベースになったJavaScriptを使ってWeb制作を学習。

学習後はメンターの支援を受けつつスクールの独自案件で副業の実績を積み上げます。

案件報酬と1件につき1~5万円と高単価ッスよ!
あっきょ
卒業生の口コミ33件紹介 口コミ・評判はこちら
無料相談でアマギフ500円分もらえる 公式サイト

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

インターネット・アカデミーのトップ画面
引用 : インターネットアカデミー

インターネット・アカデミーは初心者から最短距離でスキルを習得するスクール。

初心者が挫折しないサポートが10個が特徴で以下はその一部。

  • 動画授業が24時間見放題
  • 1年間受講受け放題
  • 技術面の質問ができるチャットサービス
  • 受講生限定のセミナーや交流会
  • 手厚い転職準備サポート&求人紹介

卒業後には未経験からエンジニア転職するキャリアプランも築けます。

Python×Excel自動化講座はエクセル自動化に特化したカリキュラム。

売上伝票の集計や顧客リスト抽出など実践的に学びながらPythonの基礎基本を身に着けます。

いつもの作業を効率化して残業を減らすならおすすめ。

受講者の8割近くが初心者で学びやすいのがわかるッス!
あっきょ
82社から8つ厳選 Pythonを学べるスクール
1分で無料カウンセリング予約 公式サイト

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

侍テラコヤのトップ画面
引用 : 侍テラコヤ

侍テラコヤは50教材以上を定額で受け放題のオンラインスクール。

回答率100%の質問掲示板などの初心者でも挫折しない環境が整っているのが特徴です。

フリープランは無料で教材の一部を閲覧可能

GASを学ぶ場合、「業務自動化コース」で基礎基本から学べます。

まずは0円で教材を利用したい人にはおすすめです。

Python や HTML/CSS などのほかの言語も学べるッス!
あっきょ
卒業生の口コミ23件紹介 口コミ・評判はこちら
「フリープラン」でGASを無料で学習 公式サイト

まとめ | GASで検索機能を作成して時短しよう

以上、Google Apps Script を使った文字列を検索する2つのサンプルコードでした。

そのままコピペしたり、プログラミングの練習や動作確認用に使ったりしてみましょう。

今回紹介したサンプルコード以外にも、GASで検索機能の作成は可能。

目的別におすすめスクールを紹介しているので、ぜひご参考ください。

スクール選びで悩んでいるならデイコーのお問い合わせまでご連絡を。

あなたのお力になります。

-Google Apps Script, 時短ツール
-, , , , , , , , , , , , , , , , , ,