earthpg:GAS専門のプログラミングスクール

GASスクリプトを活用して前方一致検索を実現する方法

GASで前方一致検索をやりたいけど、どうやってやればいいんだろ…難しそう…
猫男
猫男
catman
catman
そんな時は、catmanが助けるさ!前方一致検索は意外と簡単さ。やり方を説明しよう。

GASでできる!前方一致検索の基本

GAS(Google Apps Script)を使って前方一致検索を行う方法には、スプレッドシート内のデータに対して検索をかける方法があります。

正規表現を使う方法

正規表現を活用することで、より柔軟な検索が可能になる。では、具体的な手法について見ていこう。

function frontMatchSearch() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const data = sheet.getDataRange().getValues();
  const searchKeyword = "cat"; // 検索キーワード
  const results = [];

  for (let i = 0; i < data.length; i++) {
    const text = data[i][0]; // 1列目をチェック
    if (text.match("^" + searchKeyword)) {
      results.push(text);
    }
  }

  Logger.log(results);
}

このスクリプトは、スプレッドシートのアクティブなシートの1列目を前方一致で検索している。

コードの解説

  • SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()では、現在のスプレッドシートのアクティブなシートを取得。
  • sheet.getDataRange().getValues()で、シート内のデータ全体を2次元配列で取得する。
  • text.match(“^” + searchKeyword)では、正規表現のマッチングを行い、文字列の先頭からキーワードが一致するかを確認しています。
  • 一致したものはresults配列に追加され、後で出力される。Logger.log(results)でログを確認できる。
なるほど〜!正規表現って、すごく便利なんだね。でも、使ったことがなくて少し不安だな…
猫男
猫男
catman
catman
大丈夫さ!正規表現は最初は難しく感じるけれど、慣れてしまえば強力な道具になるさ。

GASでの前方一致検索の応用

まだまだ行くぞ!次は応用だ。

複数列への応用

1列だけでなく、複数列にわたる情報を検索したい時にも応用可能だ。

function frontMatchMultiColumn() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const data = sheet.getDataRange().getValues();
  const searchKeyword = "dog"; // 検索キーワード
  const columnIndex = 2; // 例えば3列目を検索
  const results = [];

  for (let i = 0; i < data.length; i++) {
    const text = data[i][columnIndex];
    if (text.match("^" + searchKeyword)) {
      results.push(text);
    }
  }

  Logger.log(results);
}

コードの詳細解説

  • const columnIndex = 2;で検索対象の列を指定。0が1列目なので、2は実質的に3列目になる。
  • 残りの処理は同様で、指定列のデータを前方一致検索。
すごくわかりやすい!次は実際に試してみようかな!
猫男
猫男

練習問題

あなたのスプレッドシートにおいて、5列目に「apple」という単語で前方一致検索をするスクリプトを書いてください。

解答・解説

function frontMatchExercise() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const data = sheet.getDataRange().getValues();
  const searchKeyword = "apple"; // 検索キーワード
  const columnIndex = 4; // 5列目を検索する
  const results = [];

  for (let i = 0; i < data.length; i++) {
    const text = data[i][columnIndex];
    if (text.match("^" + searchKeyword)) {
      results.push(text);
    }
  }

  Logger.log(results);
}
  • columnIndex = 4は、スプレッドシートの5列目を指しています。
  • 関数は5列目のデータを順次取得し、渡されたsearchKeyword「apple」と前方一致するかを確認します。
  • 一致したデータは全てresults配列に格納され、最終的にログに出力されます。
ありがとう、catman!これで仕事が捗るよ!
猫男
猫男
catman
catman
頑張るんだ、猫男!GASを使いこなせば君の力になる!