1. ホーム
  2. /
  3. [GAS]
  4. /
  5. GASでスプレッドシート内の文字列を効率的に検索・置換する方法

GASでスプレッドシート内の文字列を効率的に検索・置換する方法

GASでスプレッドシート内の文字列を効率的に検索・置換する方法

Google Apps Script(GAS)を利用すると、スプレッドシート内のテキスト検索や置換作業を簡単に自動化できます。特にcreateTextFinderメソッドは、シート全体や特定の範囲を対象に、柔軟な文字列検索を実現するための強力な機能です。

この記事では、createTextFinderの基本的な使い方から応用テクニックまで、実践的なサンプルコードを交えて詳しく解説します。

Google Apps Script 始め方 スプレッドシート 活用例
Google Apps Script 始め方 スプレッドシート 活用例 を各ショップで検索

createTextFinderとは?

createTextFinderは、スプレッドシート内から特定の文字列を検索するためのGASのメソッドです。以下のように、検索したい文字列を指定するだけで簡単に利用を開始できます。

const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
const textFinder = spreadsheet.createTextFinder('検索したい文字列');

このメソッドはTextFinderオブジェクトを返します。このオブジェクトが持つ.findAll().replaceAllWith()といったメソッドを呼び出すことで、検索結果の取得や文字列の置換といった操作が可能になります。

スプレッドシート内の文字列を検索する

TextFinderオブジェクトを使って文字列を検索し、結果を取得するには主に以下の3つのメソッドがあります。

  • findAll(): 条件に一致するすべてのセル(Range)を配列で取得します。
  • findNext(): 現在位置から見て、次に見つかった一致セルを取得します。
  • findPrevious(): 現在位置から見て、前に見つかった一致セルを取得します。

例えば、スプレッドシート内にあるすべての「重要」という文字列を検索し、そのセルの位置をログに出力するコードは以下のようになります。

const ranges = textFinder.findAll();
ranges.forEach(range => {
  console.log(`「重要」が見つかりました。行: ${range.getRow()}, 列: ${range.getColumn()}`);
});

このように.findAll()を使えば、一致したすべてのセルの行番号と列番号を簡単に取得できます。

文字列を置換する

文字列の置換はさらに簡単です。.replaceAllWith()メソッドを使えば、検索した文字列を一括で置換できます。

const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
spreadsheet.createTextFinder('古いキーワード')
  .replaceAllWith('新しいキーワード');

このコードを実行するだけで、シート内にあるすべての「古いキーワード」が「新しいキーワード」に置き換えられます。

また、置換したセルの数を取得したい場合は、以下のように戻り値を変数に格納します。

const replacementCount = textFinder.replaceAllWith('新しいデータ');
console.log(`${replacementCount}件のセルを置換しました。`);

応用編: 高度な検索オプションを使いこなす

createTextFinderは、より高度な検索を実現するための便利なオプションメソッド(チェーンメソッド)を提供しています。

textFinder
  .matchCase(true) // 大文字と小文字を区別する
  .matchEntireCell(true) // セルの内容が完全に一致する場合のみ検索
  .useRegularExpression(true) // 正規表現を使用した検索を有効にする
  .ignoreDiacritics(true); // アクセント記号などを無視する

例えば、電話番号のような特定のパターンを持つ文字列を検索したい場合、正規表現を利用すると非常に便利です。

const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
const regexFinder = spreadsheet.createTextFinder('\\d{3}-\\d{4}-\\d{4}')
  .useRegularExpression(true)
  .findAll();

上記のコードは、「090-1234-5678」のような形式の電話番号をすべて検索します。

すべてのシートを対象に検索・置換する方法

「スプレッドシート内の全シートに対して、特定の単語を一括で置換したい」という場面はよくあります。その場合は、以下のコードで実現できます。

function replaceAcrossAllSheets() {
  const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  const sheets = spreadsheet.getSheets();
  
  sheets.forEach(sheet => {
    // 各シートに対して検索と置換を実行
    sheet.createTextFinder('変更前のテキスト')
      .replaceAllWith('変更後のテキスト');
  });
}

この関数を実行すれば、すべてのシートに対して一度に置換処理が実行されるため、作業効率が大幅に向上します。

まとめ

createTextFinderメソッドは、スプレッドシート内のテキスト検索や置換を自動化するための非常に強力なツールです。基本的な検索・置換はもちろん、正規表現を使った高度な検索や、複数シートを横断する一括処理も簡単に行えます。

この機能を活用すれば、手作業によるミスを減らし、面倒な定型業務から解放されます。ぜひ日々の業務効率化に役立ててください。

Google Apps Script 始め方 スプレッドシート 活用例
Google Apps Script 始め方 スプレッドシート 活用例 を各ショップで検索
Google Spreadsheetでテキストを検索・置換する方法【GASの関数createTextFinderを使ってみた】 – はじりつ

Google Apps Script でスプレッドシート内の文字列を検索する TextFinder を試してみる - Qiita

こんにちは。プライベートではいろいろ模索中の @wezardnet です👻 それはさておき Google Apps Script(GAS) エキスパートの @soundTricker さんが何やらつぶやいていたので目を留めて見ると、やっと GAS に実装されたのか!と思い試...

関連記事

GAS `getWraps()`でスプレッドシートのテキスト折り返しを一括制御!応用例と最適化

GAS `getWraps()`でスプレッドシートのテキスト折り返しを一括制御!応用例と最適化

Google Apps Script(GAS)でスプレッドシートを効率的に操作する際、セルのテキスト折り返し設定を一括で管理することは、大規模なデータセットの視認性を高め、プロフェッショナルなレポート作成において不可欠です。getWraps()メソッドは、このテキスト折り返し設定を複数のセルから一度に取得するための強力なツールです。

本記事では、GASのRange.getWraps()メソッドを徹底解説します。基本的な使い方から、データ量が多い場合のパフォーマンス最適化(キャッシュ活用)、さらには取得した情報を元にした列幅の自動調整、堅牢なスクリプト開発のためのエラー処理、そしてsetWraps()メソッドと連携した一括設定方法まで、具体的なコードを交えて分かりやすく紹介します。

GAS `getWrap()` / `getWraps()`徹底解説!スプレッドシートのテキスト折り返しを自動調整

GAS `getWrap()` / `getWraps()`徹底解説!スプレッドシートのテキスト折り返しを自動調整

Google Apps Script (GAS) を使ってスプレッドシートを自動化する際、セルの**「テキスト折り返し設定」をプログラムで自在に制御する**ことは、データの視認性を高め、プロフェッショナルなシートレイアウトを維持するために不可欠です。本記事では、GASの主要メソッドであるgetWrap()getWraps()に焦点を当て、その基本的な使い方からSEOを意識した応用テクニックまで、徹底的に解説します。

この記事では、以下の疑問を解決します。