GASスクリプトを活用して前方一致検索を実現する方法
GASで前方一致検索をやりたいけど、どうやってやればいいんだろ…難しそう…

猫男

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
大丈夫さ!正規表現は最初は難しく感じるけれど、慣れてしまえば強力な道具になるさ。
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
頑張るんだ、猫男!GASを使いこなせば君の力になる!