Apps Scriptリファレンス: Apps Script Reference |障害・課題追跡: IssueTracker |Google Workspace: Status Dashboard - Summary

2020年3月1日日曜日

スプレッドシートで取得する行数を決めて複数回実行する処理を考えてみる


A列に2020/01/01〜2020/01/19までの日付が入ったシートがあって
2行目からスタートして5行ずつA列の値を取得してみる。

ポイント

  • 最後は5行ではなく4行残るので4行を取得する
  • 10回繰り返すが実際は4回で終わるため、5回目以降でエラーが出ないようにする


20行くらいの処理ならこんなことをしなくても良いのだけれど
何千、何万行のデータを処理する時に実行回数を分けたいケースにぶつかって
軽い処理で書いてみたのがこのコードです。



コード.gs
function iterateFunction() {
  var numRows = 5;
  var startRow = 2;
  var sheet = SpreadsheetApp.getActiveSheet();
  var lastRow = sheet.getLastRow();
  
  for(var i = 0; i < 10; i++) {
    myFunction(sheet, startRow, numRows, lastRow);
    startRow = startRow + numRows;
    if(startRow > lastRow) {
      return;// startRowがlastRowより大きくなったらfor文から抜ける
    }
  }
}

function myFunction(sheet, startRow, numRows, lastRow) {
  if(startRow + numRows > lastRow) {// 取得しようとする最終行がデータの行数より大きくなるなら
    numRows = lastRow - startRow + 1;// numRowsを残りの行数で上書きする
  }
  var range = sheet.getRange(startRow, 1, numRows, 1); 
  var values = range.getDisplayValues();
  var dates = values.map(function(array) { return array[0] });
  Logger.log(dates);
}




実行結果




Latest post

Google Formsで記述式の質問に字数制限を設定したい

記述式の質問には「回答の検証」を設定することができます フォームの編集画面 右下の︙メニューで「回答の検証」を選択します 検証方法には「数値」「テキスト」「長さ」「正規表現」という種類があります 今回は字数制限したいので「長さ」を選びます 長さには「最大文字数」か「最小文字数」を...