LANG SELRCT

コードを書く場所についてはこちら

2017年10月30日月曜日

シート内でキーワードに一致する値を探す(線形探索)

指定した値がシートの何行目にあるのか探したい場合
いくつか方法はありますが
今回は一行目から順番に見て行き
一致する値があればログに出すというコードを書いてみました

このように与えられたデータを
上から順番に見て行く
という探し方を
『線形探索』といいます


例えばこんなシートがあるとして
「東京都」は何行目にあるのかプログラムでみつけたい

見つけたらこんな感じでログに出したい
ということを実現するコードです


コード.gs
function linear_search() {
  var keyword = "東京都";
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sh = ss.getActiveSheet();
  var range = sh.getRange("A:A");
  var values = range.getValues();
  var index = 0;
  for (var i = 0; i < values.length; i++) {
    if (values[i][0] == keyword) {
      index = i;
      break;
    } else {}
  }
  Logger.log(keyword + "は" + (index + 1) + "行目です")
}
意訳.gs
この処理は以下を実行する
キーワードを設定する
現在開いているスプレッドシートを取得する
現在開いているシートを取得する
A:Aの範囲を指定して
すべての値を取得する
indexの初期値を0にして
一行目の値から順に以下を繰り返す
もし値がキーワードと一致したら
indexに繰り返した回数を入れて
繰り返しの処理から抜ける
もし一致しなければ何もせず次の値を見に行く

ログに キーワードは何行目 と出す


今回使ったデータ


検索ワード

北海道
青森県
岩手県
宮城県
秋田県
山形県
福島県
茨城県
栃木県
群馬県
埼玉県
千葉県
東京都
神奈川県
新潟県
富山県
石川県
福井県
山梨県
長野県
岐阜県
静岡県
愛知県
三重県
滋賀県
京都府
大阪府
兵庫県
奈良県
和歌山県
鳥取県
島根県
岡山県
広島県
山口県
徳島県
香川県
愛媛県
高知県
福岡県
佐賀県
長崎県
熊本県
大分県
宮崎県
鹿児島県
沖縄県