2017-08-19 5 views
0

私はこのスクリプトで遊んだことがありますが、まだ動作させるにはまだあります。Googleスクリプト - 列Hに特定の色(黄色)があるときに行を新しいシートにコピー

というシートの列Fの背景色を調べるスクリプトが必要です。

列Fのセルの背景が黄色の場合、行全体が新しいデータと呼ばれる新しいシートにコピーされます。

添付Googleスプレッドシートのリンクを見つけてください:任意の助けをいただければ幸いですhttps://docs.google.com/spreadsheets/d/19pMAmB94tOoV14MiSPyoPhty2dO5OudO4NupP8KhJA4/edit#gid=1703438513

を!

function Extract(){ 
    var ss = SpreadsheetApp.getActive(); 
    var sheet = ss.getSheetByName('Test'); 
    var rows = sheet.getDataRange(); 
    var numRows = rows.getNumRows(); 
    var values = rows.getBackgrounds(); 
    var yellowColour = '#ffff00'; 
    var whiteColour = '#ffffff'; 


    var newSheet = ss.getSheetByName('New Sheet'); 

for (var i = 0; i <= numRows - 1; i++) { 

var row = values[i]; 

    if (row[6] === whiteColour) { 

    } 
    else { 

     newSheet.appendRow(row); 

    } 

} // End of For Loop 
}; 

答えて

1

これを試してください。 Fが黄色である行の配列を作成します。 'New Data'の古いデータを消去し、新しい配列にコピーします。

function Extract(){ 
    var ss = SpreadsheetApp.getActive(); 
    var sheet = ss.getSheetByName('Test'); 
    var lr=sheet.getLastRow() 
    var data = sheet.getRange(2,1,lr,15).getValues();//get Test values 
    var rows = sheet.getRange(2,6,lr,1).getBackgrounds();//get F background colors 
    var yellowColour = '#ffff00'; 
    var newSheet = ss.getSheetByName('New Data'); 
    var lr1= newSheet.getLastRow() 
    var newData=[] //new array 
    for (var i = 0; i <= lr - 1; i++) { 
    if (rows[i] == yellowColour) { //if F = yellow 
     newData.push(data[i]) // add to new array 
    }} 
    newSheet.getRange(2,1,lr1+1,15).clearContent()//clear old content excluding header row 
    newSheet.getRange(2,1,newData.length,15).setValues(newData)//set new comtent 
}; 
+0

大変ありがとうございます。非常に感謝しています! –

+0

それが効いている場合は、答えの左側にあるチェックマークをクリックして回答を承認してください。ありがとう。 –

関連する問題