2017-12-01 4 views
0

私はこれで新しいので、すべての動作を把握しようとしています。Googleスプレッドシートは、セル値に基づいて行を新しいシートに移動します。

私は、Googleフォームから回答を収集するシートを持っています。これらの質問の1つの回答に基づいて、そのシートの行を別のシートドキュメントにまとめて(同じドキュメントのシートではなく)移動したいと思います。

新しいレスポンスが入力されると、毎分のトリガーに基づいてトリガーが設定されるため、正しいドキュメントにキックバックされ、元のスプレッドシートから行が削除されます。

私はその途中で道を得ることができました。列AからEまで、行を正しい文書に移動し、次の開いている行がどこにあるのかを見つけて、新しい文書の列AからEにデータを置きたいと思います。

現時点で問題が発生しているのは、行が新しいドキュメントに移動したときです。私は、宛先ページの列G〜Zに保存された数式を持っています。数式を含む最後の行を見つけて、その行をページの最後に配置します。これは配列を使うこととは関係がありますか?しかし、私は間違っているかもしれません。コピー先ページの列A-Eを見て、次の空白行を見つけて元のファイルから新しいページにA-Eをコピーする方法はありますか?

arr = [], 
values = sheetOrg.getDataRange().getValues(), 
i = values.length; 
while (--i) { 
    if (value1ToWatch.indexOf(values[i][1]) > -1) { 
    arr.unshift(values[i]) 
    sheetOrg.deleteRow(i + 1) 
    sheet1in.getRange(sheet1in.getLastRow()+1, 1, arr.length, arr[0].length).setValues(arr); 
    }; 

異なる値と先のページの「valueToWatch」と「Sheet1in」にいくつかの変更と文それぞれなら、私は複数持っています。その情報がまったく役に立ったら。

+0

['OnFormSubmit'](https://developers.google.com/apps-script/reference/script/form-trigger-builder#onFormSubmit())を使用して新しい応答を取得することもできます時間ベースのトリガー。この関連する[SO post](https://stackoverflow.com/a/41927335/5995040)に記載されているように、指定した範囲を常に設定して、新しいセルを正しいセルに配置することができます。希望が助けます。 –

答えて

0

は、次のようなことでデータを列の最後のセルを見つけることができます。

function findLastValueInColumn() { 
    var column = "A"; // change to whatever column you want to check 
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0]; 
    var lastDataRow = sheet.getDataRange().getLastRow(); 

    for (var currentRow = lastDataRow; currentRow > 0; currentRow--) { 
     var cellName = column + currentRow; 
     var cellval = sheet.getRange(cellName).getValue(); 
     if (cellval != "") { 
      Logger.log("Last value in Column " + column + " is in cell " + currentRow); 
      break; 
     } 
    } 
} 

次に、あなたの新しいデータを開始する場所を把握するために、この機能を使用することができます。

関連する問題