LoginSignup
0
0

More than 5 years have passed since last update.

Google Apps Script 指定したカラムの最終行の番号を返す関数を自作してみた

Posted at

年末も年末とて業務で、Node.jsでJSON APIを作ったり、Google Apps Scriptでデータ取得を自動化したりとしていました。
その中で、頻繁に使っていた、指定したカラムの最終行の番号を返す関数を自作して、結構使えたので、こちらに共有しておきます。
Google Apps Script側で用意されている関数で、シート全体の最終行を取得する事はできるのですが、
指定したカラムの最終行を取得して、番号を返してくれる関数がなかったので、自作しています。

下記がその関数になります。


function researchColumnsEmpty(str){ //A:Aのような形でカラムを指定したら、そのカラムの最終行を取得してくれる。
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var sheetData = sheet.getSheetByName(`シート名`);
  var range = sheetData.getRange(str);
  var array = range.getValues();
  var count=0;
  array.forEach(function(arr){
    if(arr[0]) count++;
  })
  return count;
}

この関数では、指定したカラムにある全てのデータを取得後(配列で返ってくる)、イテレータで処理する事で、指定したカラムのデータの数を数えてくれるように処理しました。これにより、実質、最終行を取得する事ができます。

使い方

function setFinalValue(){
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var sheetData = sheet.getSheetByName('シート名');
  var url = 'https://high-price-checker.herokuapp.com/finalvalue';
  var data = UrlFetchApp.fetch(url);
  var finalValueJson = data.getContentText('UTF-8');
  var finalValues = JSON.parse(finalValueJson);
  var Lastrow = researchColumnsEmpty('E:E'); //自作した関数の呼び出し
    var j = 0;
    for(i=Lastrow;j<finalValues.finalvalue.length;i++){
      var finalValue = finalValues.finalvalue[j];
      sheetData.getRange(i,5).setValue(finalValue);
      j++;
    }
}

最終行を'E:E'のように指定すると、そのカラムEの最終行を取得して、integerで返してくれます。for文と組み合わせる事で、新たに取得してきたデータを指定したカラムの最終行から自動で入力したりできます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0