LANG SELRCT

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

2018年5月25日金曜日

A,B列の値を5行ずつ処理してC列に入れる


良いタイトルが浮かばなかったのでそのままですが
たまにこういう処理をしたくなって。

トリガーに登録したら6分の壁を越える時にも使える。



コード.gs
/************************************
A列とB列のデータをもとに何か処理を施して
C列に結果を入れる
これを一つずつやるとgetValue()とsetValue()が多すぎてアラートが出る
かといって一気にあるだけ全部をgetLastRow()とgetValues()で取得してsetValues()でやるには多すぎたり
そんなときにとりあえず5行ずつやってみようというコード

この例ではA列とB列を足してC列に入れるだけの処理を書いています
************************************/
var ss_url = "URL";
function get_step_by_step(){
  var ss = SpreadsheetApp.openByUrl(SS_URL);
  var sh = ss.getSheets()[0];
  var last_row = get_last_row(sh) + 1;
  var step = 4;
  var valueA = sh.getRange("A" + last_row + ":A" + (last_row + step)).getValues();
  var valueB = sh.getRange("B" + last_row + ":B" + (last_row + step)).getValues();
  Logger.log([last_row, valueA.length, valueA, valueB])
  for(var i = 0; i < valueA.length; i++){
    var valueC = valueA[i] + valueB[i];
     sh.getRange("C" + (last_row + i)).setValue(valueC);
  }
}

function get_last_row(sh) {
  var values = sh.getRange("C:C").getValues();
  for (var i = values.length - 1; i >= 0; i--) {
    if (values[i] != "") {
      break;
    }
  }
  var last_row = i + 1;
  return last_row;
}



A, B列に1~9まで入力しておいて
get_step_by_step() を実行すると
C列には結合した値が入力される



参考