Office スクリプトで指定した列の最終セルを取得する方法として、これまでgetSpecialCellsメソッドを使ったりgetRangeEdgeメソッドを使ったり色々と試行錯誤をしていたわけですが、今日Stack Overflowを見ていて、もっと簡単な方法があることを知りました。
function main(workbook: ExcelScript.Workbook){ let wrkSh = workbook.getWorksheet("in_t") let lastRow = wrkSh.getRange("A:A").getUsedRange(true).getLastCell(); console.log(lastRow.getValue()) }
https://stackoverflow.com/questions/68199230/vba-rangea1048576-endxlup-row-in-javascript-excel-api より
なるほど。
getRangeメソッドで取得したセルに対してgetUsedRangeメソッドを使えば良いわけですね!
もちろん、これまでもgetUsedRangeメソッドを使ったことはありますが、Worksheetオブジェクトに対して使っていて、Rangeオブジェクトに対して使うという発想がありませんでした。完全に盲点!恥ずかしくなるレベルの見落としです。
とはいえ、これでようやく簡単に最終セルを取得する方法が分かりましたので、改めてコードを書いてみました。
上記の通り、ほんの数行です。
唯一工夫した点と言えば、getLastCellメソッドが失敗する未使用の列を指定した際に1行目のセルを返すようにしているところでしょうか。
下記記事ではgetRangeEdgeメソッドを使っていたため、Power Automateからの呼び出しではエラーになってしまいましたが、上記コードであれば問題無く実行できます。
この記事へのコメントはありません。