- Sheetにアクセスする回数をできるだけ減らすこと
です。つまり、列のデータを全部とってきて配列に格納し、配列に対して線形探索をするというのが速度向上にも繋がります。で、これをfor文とかでループする。。っていうコードをついつい書いてしまう年頃なんですが、配列に実装されているメソッドを使ってシンプルなコードがかけるじゃんというのが、今日のネタです。
下記はそのサンプルですが、ちょっと1箇所だけ、getValues()とJavaScriptのobjectの使い方がよくわからなかったので、ちょっと細工をしてますがそこは適当に解釈してください(要は、文字列配列にしたかっただけです)。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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{ | |
//検索成功 | |
} | |
} |