0

私は、スクリプトを使用して、列 K に「過去 30 日間に完了」を含む 1 つのシートからデータのすべての行を別のシートにコピーする Google スプレッドシートに取り組んでいます。

「シート」とは、すべてのタブを意味します。ソース タブは「Arley」です。現在、宛先タブは「ArleysSandbox」です。すべての行には、AK の ll 列があります。行全体を引き継ぐ必要があります。シート内の合計行数は、時間の経過とともに増加します。スクリプトを実行するたびに、最初に「ArleysSandbox」の既存のデータをすべてクリアしたいと考えています。「過去 30 日間に完了」と表示されている列 K は数式です。最終的には、複数のシートからプルして、Sandbox シートでコンパイルしたいと考えています。

古いフォーラムの投稿を出発点として使用していましたが、知識不足のために行き詰まりました。http://productforums.google.com/forum/#!msg/apps-script/FNGzVkEqZh4/x8WCYtjvpI8J ご提案ありがとうございます。

4

2 に答える 2

0

気分を害することはありませんが、このフォーラムは無料でアプリを入手できる市場ではないと思います。自分で結果を得ようとする人々に答えをもたらすことになっています。

そうは言っても、ここにあなたを正しい軌道に乗せるための「スケルトン」があります。私はコメントで何が起こっているのかを説明しようとしました。(テストしていません。デバッグが必要な場合があります)

function copy2(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sh = SpreadsheetApp.setActiveSheet(ss.getSheets()[0]); selects the first sheet in your spreadsheet
  var data=sh.getDataRange().getValues();// data is a 2D array, index0 = col A
  // so column k is index 10
  var target=new Array();// this is a new array to collect data
  for(n=0;n<data.length;++n){ // iterate in the array, row by row
    if (data[n][10]=="Done In The Past 30 Days"){ ;// if condition is true copy the whole row to target
    taget.push(data[n]);// copy the whole row
    }
    }
    if(target.length>0){// if there is something to copy
  var sh2=SpreadsheetApp.setActiveSheet(ss.getSheets()[1]); //second sheet of your spreadsheet
  sh2.getRange(1,1,target.length,target[0].length).setValues();// paste the selected values in the 2cond sheet in one batch write
  }
} 
于 2012-06-20T21:56:34.547 に答える