2016-09-29 5 views
0

私はフィルタ機能を使用してFILTER( 'チェックイン'!A8:G、 'チェックイン'!C8:C = C4) 'シート。私はまた、行の最初の列に "y"が含まれていれば(「はい」を意味する)、「データベース」という名前のシートに行をコピーする方法で、最初の列の「チェックアウト」を行いました。それは動作しますが、最初の行(フィルタ関数を含む)が選択されると、式もコピーされ、データベースシートはそれ以降のデータを格納しません。アドバイスをいただければ幸いです。フィルター機能を移動させずにフィルター処理されたデータを別のシートに移動する方法はありますか?

function onEdit(event) { 
    assumes source data in sheet named Needed 
    target sheet of move to named Acquired 
    test column with yes/no is col 4 or D 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var s = event.source.getActiveSheet(); 
    var r = event.source.getActiveRange(); 

    if(s.getName() == "check-out" && r.getColumn() == 1 && r.getValue() == "y") { 
    var row = r.getRow(); 
    var numColumns = s.getLastColumn(); 
    var targetSheet = ss.getSheetByName("Database"); 
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1); 
    s.getRange(row, 1, 1, numColumns).copyTo(target); 

答えて

0

あなたは値のみをコピーする可能性があります。

copyTo(destination, options)

コピーしたデータをセルの範囲から細胞の別の範囲に。 デフォルトでは、値と書式の両方がコピーされますが、これは詳細引数を使用してオーバーライドされた になります。あなたのケースで

// The code below will copy only the values of the first 5 columns over   
// to the 6th column. 
var sheet = SpreadsheetApp.getActiveSheet(); 
sheet.getRange("A:E").copyTo(sheet.getRange("F1"), {contentsOnly:true}); 
} 

s.getRange(row, 1, 1, numColumns).copyTo(target, {contentsOnly:true}); 
関連する問題