2012 年 3 月 23 日 金曜日
▼サンプルスクリプト
シートの最終行を取得するスクリプト
function onOpen(){
var sheet = SpreadsheetApp.getActiveSheet();
Browser.msgBox(sheet.getLastRow());
}
指定した範囲の最終行を取得することも可能。
function onOpen(){
var sheet = SpreadsheetApp.getActiveSheet();
Browser.msgBox(sheet.getRange('A1:A6').getLastRow());
}
getLastRow()
この関数は、フォームから送信された値を取得する際に利用されることが多い。フォームから送信された値は必ず最終行に挿入されるので、onFormSubmitトリガーでgetLastRow()を使用することで、フォームから送信された行を特定することができる。
値は入っていなくても、セルにコメント、関数が挿入されている場合、そのセルが最終行と認識される。
このエントリーのトラックバックURL:
http://www.bmoo.net/archives/2012/03/313118.html/trackback
[…] 関連:シートの最終行を取得するには […]
[…] シートの最終行に値を追加する。最終行の行番号を取得するメソッド、{Sheet}.getLastRow()してから値をセットするのと似た動きをするが、こちらは複数人が同時にスクリプトを実行している場合に、Lockサービスを使わなくても確実に最終行に追加することができる。 […]
「指定した範囲の最終行を取得することも可能。」
とありますが、getRangeを経由すると挙動が変わるようです。
getLastRowというメソッドはSheetには実装されていますが、Rangeには実装されていません。
そのせいか、
Browser.msgBox(sheet.getRange(‘A1:A6’).getLastRow());
すると必ず6が返ってきます。
Browser.msgBox(sheet.getRange(‘A1:A1000’).getLastRow());
とすると必ず1000が返ってきます。
本来の入力されている最終行という動きではなくなってしまうようです。