2019-10-18

GoogleSheetのセルを線形探索する

GoogleSheet内のある列を対象に線形探索するケースが対象です。この時によく言われるTIPは、
  • Sheetにアクセスする回数をできるだけ減らすこと
です。つまり、列のデータを全部とってきて配列に格納し、配列に対して線形探索をするというのが速度向上にも繋がります。で、これをfor文とかでループする。。っていうコードをついつい書いてしまう年頃なんですが、配列に実装されているメソッドを使ってシンプルなコードがかけるじゃんというのが、今日のネタです。
下記はそのサンプルですが、ちょっと1箇所だけ、getValues()とJavaScriptのobjectの使い方がよくわからなかったので、ちょっと細工をしてますがそこは適当に解釈してください(要は、文字列配列にしたかっただけです)。
var keyword ="hogehoge";
var range = targetSheet.getRange(1, 2, targetNum); //2列目のデータを範囲とする
var target = range.getDisplayValues();//列のデータを取得
//なぜかtargetが文字列配列とならないので、下記の処理で文字列配列に変換
var targetList = target.toString().split(",");
var pos = targetList.indexOf(keyword); //ここで一発検索
if(pos==-1){
// 検索失敗
}else{
//検索成功
}
}


0 件のコメント:

コメントを投稿