スプレッドシートの特定の列で基準日時よりも新しい日時の行を取得したい
- 基準日時を決める
- 対象の列の値(日時)を取得する
- 基準日時よりも大きい日時を抽出する
ということを実現するコードの例です
コード.gs
function get_updated_rows(){ var latest = new Date("2018/02/26 18:49:50"); var values = get_values(); var rows = judge_array(values, latest); Logger.log(rows) } function get_values(){ var sh = SpreadsheetApp.getActiveSheet(); var last_row = sh.getLastRow(); var range = sh.getRange("A1:A" + last_row) var values = range.getValues(); return values; } function judge_array(values, latest) { var rows = []; for(var i = 0; i < values.length; i++){ if(values[i][0] > latest){ var value = format_date(values[i][0]); rows.push(i + 1); } } return rows; } function format_date(date){ return Utilities.formatDate(new Date(date), "Asia/Tokyo", "yyyy/MM/dd HH:mm:ss") } |
意訳この機能がやること 基準日時を決めて get_values()からvaluesを取得して judge_array(values, latest)に渡して結果を得て ログに出す この機能がやること スプレッドシートを取得して データが入っている最終行を取得して 範囲を指定して 値を取得して 返す この機能がやること rowsという空の配列を作って 受け取ったvaluesの数だけ以下を繰り返す ひとつずつ値を取得してもしlatestよりも大きければ format_date(date)に送ってフォーマットして i に 1を足してrowsに追加する(i は 0始まりでシートの行は1始まりなので+1する) 出来上がったrowsを返す この機能がやること 受け取ったdateを指定したtimezoneと形式にフォーマットして返す |