スプレッドシートの特定の列で基準日時よりも新しい日時の行を取得したい
- 基準日時を決める
- 対象の列の値(日時)を取得する
- 基準日時よりも大きい日時を抽出する
ということを実現するコードの例です
コード.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と形式にフォーマットして返す |