LoginSignup
0
2

More than 1 year has passed since last update.

GAS(Google App Script)でスプレッドシートの特定のシートの列の最終行数とその値を取得して返す関数を作ったけどどうです?

Posted at

経緯

GAS(Google App Script)で横着をすると、特定の列の最終行を取得できないので関数を作ってみた。
VBAだとこんな何行も書かなくても済むのにGASは大変だねぇ。
せっかく作るので、最終行の行数とその値を連想配列にて返してくれる感じにしておきました。
もっとスマートな書き方があるんだろうけども、whileとifでかけるからまあ、許してよ。

GASのfunc
function getLastRowFuncs(clm, sheetName) {
  // 最終リターンする連想配列用変数
  let answerArray = {};

  // アクティブなスプレッドシートのオブジェクトを代入
  const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  
  // 引数で渡されたシート名のオブジェクトを代入
  const targetSheet = spreadsheet.getSheetByName(sheetName);

  // 指定した列の値を配列で取得  
  const columnsVals = targetSheet.getRange(`${clm}:${clm}`).getValues();
  
  console.log(columnsVals.length);
  let lastCellFlg = false;
  let cnt = columnsVals.length -1;
  let chk_var;
  
  while(lastCellFlg !== true){
    // 配列の中に配列が入っている状態で渡ってくるので末尾に[0]としている
    chk_var = columnsVals[cnt][0];
    // console.log(`chk_var[0]: ${chk_var}`);
    if(chk_var !== ""){
      lastCellFlg = true;
      answerArray["lastRow"] = cnt + 1;
      answerArray["lastValue"] = chk_var;
    }
    cnt --;
  }
  
  // ログに出力
  Logger.log(answerArray);

  return answerArray;
}

こちらが呼び出し元となるmainで記述する書き方

呼び出し元のfuncs
    let sheetName = "課題シート";
    var clm = "F";

    lastRowArr = getLastRowFuncs(sheetName, clm);
    console.log(lastRowArr);
    
    //取得内容はシートによって変わるよ 
    //{lastRow= 82.0, lastValue= No}


そんな感じで!!

0
2
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
2