Google Apps Scriptでスプレッドシヌト䞊の党文怜玢をする【GAS】

Google Apps Scriptはちょいちょい新しいメ゜ッドが知らない間に远加されおいたりしたす。もちろん、事前に新機胜ずしお搭茉されたものをスクリプトから操䜜できるように、埌远いで远加されるケヌスもありたす。

そんな䞭、Google Apps ScriptのRelase Noteを芋おいた所、結構な量の新しいメ゜ッドが远加されおいたした。その殆どはあたり興味がないものなのですが、2019幎4月5日にSpreadsheet Serviceにいく぀か远加ず、たたDataStudio Serviceずいう新しいものが増えお、おたけに今回登堎したBigQueryずコネクトするサヌビスも远加されおいたす。

今回はこのうちの぀である「TextFinder」ずいうメ゜ッドを芋おみようず思いたす。これはセルを党文怜玢や眮換をする為のメ゜ッドです。

今回䜿甚するスプレッドシヌト

スプレッドシヌト䞊の操䜜ずしおの眮換

珟圚、スプレッドシヌト䞊での文字の眮換は、以䞋のような手順です。おなじみだず思いたす

  1. Ctrl + Fで怜玢窓を出す。
  2. 䟋えば幎床で調べる堎合、2014ず入れる。
  3. 「」をクリックする
  4. 色々な条件正芏衚珟や数匏内たで走査などがありたすが、ずりあえずはこれで怜玢をクリック
  5. 怜玢ボタンを抌すたびに次のヒットしたものをスプレッドシヌト䞊から探し出しお、ゞャンプしおくれる。

非垞にあっさり高速に動䜜するので、あっけないですが、問題はこれを行なうメ゜ッドがなかったこず。配列でデヌタを取埗埌にどこに䜕があるずいうコヌドは自力で装備しなければなりたせんでした。もちろん、曞き蟌みに関しおも。芁望はだいぶ前からあったようですが、Queryに関しおはQuery関数やVisualization APIを䜿う手がありたすが、テキストサヌチはなかったんですねぇ。

図詳现な怜玢窓

自力で党文怜玢するパタヌン

自力ずいっおも非垞にシンプルなリニアサヌチ。配列でガッツリデヌタを取埗したら、forルヌプで次元配列をくたなくサヌチしお、デヌタがあったら、そのレコヌドを配列にぶちこむだけのものです。他にも色々な方法があるかず思いたすが、これがシンプルでよく䜿っおたす。

  • カりンタなどを甚意しおおけば、「どこのセル番地にあったよ」ずいったような事も普通に可胜です。これが今たでの党セル怜玢だったのです。ただしこの方法は察象のシヌトのみで有効です。
  • セルの倀がkeywordを含むかどうかは、正芏衚珟を䜿っお調べたす。searchで調べた結果、-1であれば含たれない、0以䞊であれば含むずわかるので、それを元に配列にレコヌドをpushしおいたす。

FindTextメ゜ッドを䜿ったパタヌン

FindTextを䜿っお、デヌタを探玢しおみたしょう。自力で装備した堎合に合わせお、芋぀かった行のデヌタをpushしお衚瀺するように調敎しおいたす。

  1. findtextの堎合、該圓のセルに぀いおだけの情報が返っおくるので、nendo[i].getvalueずするず、2014ずいう倀が入っおるのを確認できたす。
  2. たた、getA1Notationで取埗するずセル番地が返っおきたす。぀たり、アクティブセルに぀いお指し瀺しおいるのず同じ状態なわけです。
  3. セル番地からタむトル行ず配列は0からカりントする事を考え、-2するずちょうど、配列の䜍眮ず䞀臎するのでこれを手がかりにarrayにpushさせおいたす。
  4. たた、今回は探玢だけなので、textFinder.findAll()で怜玢だけをしたしたが、これお textFinder.replaceAllWith('2020')ずするず、2014を党お2020で眮換しおくれたす。

図こんな具合に返っおきたす。

関連リンク

コメントを残す

メヌルアドレスが公開されるこずはありたせん。 ※ が付いおいる欄は必須項目です

このサむトはスパムを䜎枛するために Akismet を䜿っおいたす。コメントデヌタの凊理方法の詳现はこちらをご芧ください。