Googleスプレッドシートで枠線も含めたシートの最終行を取得する方法

Googleスプレッドシートでシートに入力されているデータの最終行は Google Apps Script(GAS)のシートオブジェクトの getLastRowメソッドで取得できますが、残念ながら枠線(罫線)も含めたシートの最終行を取得するメソッドは用意されていません。
しかし、GASの "Advanced Google Services" の "Advanced Sheets"を有効にすると "Google Sheets API"を呼び出せるようになり、枠線の情報も取得できるようになります。

そこで、シート全体の枠線の情報を取得してそこから枠線も含めた最終行を取得できるようにしました。
よかったら参考になさってください。


/**
 * getLastRowWithBorders
 * 枠線を含めたシートの最終行を取得する
 *
 * @param {sheet} 最終行を取得したい sheetオブジェクトを指定
 * @return {整数} 最終行
 */
function getLastRowWithBorders(sheet) {

  var data = Sheets.Spreadsheets.get(
    sheet.getParent().getId(),
    {
      ranges: sheet.getName(),
      fields: "sheets/data/rowData/values/userEnteredFormat/borders"
    }
  );

  return Math.max(data.sheets[0].data[0].rowData.length, sheet.getLastRow());
}


/**
 * test
 * デバッグ用のテスト関数
 */
function test() {
  Logger.log(getLastRowWithBorders(SpreadsheetApp.getActiveSheet()));
}



参考:
"Enabling advanced services | Advanced Google services | Apps Script | Google Developers"
https://developers.google.com/apps-script/guides/services/advanced#enabling_advanced_services

"Advanced Sheets Service | Apps Script | Google Developers"
https://developers.google.com/apps-script/advanced/sheets

"Google Sheets API | Google Developers"
https://developers.google.com/sheets/api/reference/rest

"Cells | Google Sheets API | Google Developers"
https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/cells

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント