あなたの質問は、私が答えようとした前の質問からそれほど遠くないので、続けてこの(簡単な)問題の実用的な解決策を提案することができました...それで、最もエレガントではありませんが、簡単で実用的です。
function insertBlank() {
var sh = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
var last = lastRowinCol(sh,'A');
var colA = sh.getRange('A1:A'+last).getValues();
var colB = sh.getRange('B1:B'+last).getValues();
var nA = [];
var nB = [];
for(n=0;n<last;++n){
nA.push([colA[n]])
nA.push(['']);
nB.push([''])
nB.push(['{'+colB[n][0]+'}']);
}
Logger.log(nA.length+' = '+nA)
Logger.log(nB.length+' = '+nB)
sh.getRange(1,1,nA.length,1).setValues(nA);
sh.getRange(1,2,nB.length,1).setValues(nB);
}
function lastRowinCol(sh,col){
var coldata = sh.getRange(col+'1:'+col).getValues();
for(var c in coldata){if(coldata[c][0]==''){break}}
return c
}
とは言うものの、できればもっと適切な質問をして、無料で買い物をする前に試したことを示す必要があります;-)
編集:この他の投稿に関するMogsdadからの非常に適切なコメントに続いて、for-nextループをfunction lastRowinCol
、列内の空のセルを処理するように逆方向に反復する彼のコードに置き換えることをお勧めします。さらに、ループ制限と条件が同じステートメントにあるため、彼のコードは興味深い構造になっています。
function lastRowinCol(sh,col){
var coldata = sh.getRange(col+'1:'+col).getValues();
for (var c=coldata.length; (c) && coldata[c-1][0]==''; c--) {}
return c
}