Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
23
Help us understand the problem. What is going on with this article?
@wezardnet

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

More than 1 year has passed since last update.

こんにちは。プライベートではいろいろ模索中の @wezardnet です👻

それはさておき Google Apps Script(GAS) エキスパートの @soundTricker さんが何やらつぶやいていたので目を留めて見ると、やっと GAS に実装されたのか!と思い試してみることにしました (゚∀゚)キタコレ!!

これまでスプレッドシートで文字列を検索する機能は GAS にはなく、自力でがんばるしかありませんでした💦💦

今回は TextFinder クラスでよく使われると思われる文字列検索と文字列置換を試してみたので、情報共有したいと思います✍️
尚、公式ドキュメントは Class TextFinder になりますので、他の機能(メソッド)を知りたい方はお読みください。

サンプルデータ

文字列検索するためにはある程度のデータが必要になるので、得意先マスタのスプレッドシートを使うことにします。このシートには 10,000 件のダミーデータが入力されています。

image01.png

文字列検索(TextFinder:findAll)

まずはスプレッドシート内の文字列を検索してみます。雑なサンプルコードを以下に示します ☆(・ω<)

function findAll(){
    var spread = SpreadsheetApp.getActiveSpreadsheet() ;
    var sheet = spread.getSheets()[0] ;

    var textFinder = sheet.createTextFinder('日本料理');
    var ranges = textFinder.findAll();
    Logger.log('ranges.length = ' + ranges.length) ;

    for ( var i = 0; i < ranges.length; i++ ) {
        Logger.log('A1Notation = ' + ranges[i].getA1Notation()) ;
    }
}

上記のスクリプトを実行した結果はログに吐かれます。「日本料理」にヒットするセルの件数は 134 件のようです。

image02.png

本当に合ってるかどうかスプレッドシート標準機能で確認します。

image05.png

双方で一致するので OK そうです。

文字列置換(TextFinder:replaceAllWith)

次にスプレッドシート内の任意の文字列を置換してみます。雑なサンプルコードを以下に示します ☆(・ω<)

function replaceAllWith(){
    var spread = SpreadsheetApp.getActiveSpreadsheet() ;
    var sheet = spread.getSheets()[0] ;

    var textFinder = sheet.createTextFinder('日本料理');
    var result = textFinder.replaceAllWith('ねこぽん');

    Logger.log('result = ' + result) ;
}

上記のスクリプトを実行した結果はログに吐かれます。「日本料理」 → 「ねこぽん」に文字列置換した結果は 134 件になります。

image03.png

本当に合ってるかどうかスプレッドシート標準機能で「ねこぽん」 → 「日本料理」の逆パターンを確認してみます。

image04.png

こちらも双方で一致するので OK そうですね。

スプレッドシートを簡易データベースとして扱う時に少し楽になりますね👍
本記事で紹介したスクリプトは GitHub に置いておきます。。。

23
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
wezardnet
Google Cloud Platform, GAE/Go, JavaScript, Google Apps Script, HTML5 触ってます。猫が大好きです。尚、投稿する記事の内容は個人の意見であり、所属する企業の見解を代表するものではありません。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
23
Help us understand the problem. What is going on with this article?