0

Google ドキュメントでプロジェクトを実行していますが、スクリプトのサポートが必要です。2 列のスプレッドシートで次のタスクを実行できるものが必要です。

  1. 既存のすべてのデータ行の間に新しい空白行を挿入します。
  2. 2 番目の列のデータを 1 つ下に移動して、新しく挿入された空白行を占めるようにします。
  3. 中括弧 {} を 2 列目のデータのテキストに追加します。つまり、 anytext --> {anytext}

これがどのように機能するかの例を次に示します:サンプル GDocs スプレッドシート

4

1 に答える 1

1

あなたの質問は、私が答えようとした前の質問からそれほど遠くないので、続けてこの(簡単な)問題の実用的な解決策を提案することができました...それで、最もエレガントではありませんが、簡単で実用的です。

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
 }
于 2013-03-04T18:20:09.373 に答える