2017-09-12 21 views
0

これを行うにはどのようにスマートな方法がありますか?コードは正常に動作しますが、klunkyです。Googleアプリスクリプトリファクタリング繰り返しコード

function removeEmptyPending(){ 
    for(var row=2;row<=lastRow;row++){ 
    if((tkhContact.getRange('A'+row+':A'+row).getValue() == "") && 
     (tkhContact.getRange('C'+row+':C'+row).getValue() == "") && 
     (tkhContact.getRange('D'+row+':D'+row).getValue() == "") && 
     (tkhContact.getRange('E'+row+':E'+row).getValue() == "") && 
     (tkhContact.getRange('F'+row+':F'+row).getValue() == "") && 
     (tkhContact.getRange('G'+row+':G'+row).getValue() == "") && 
     (tkhContact.getRange('H'+row+':H'+row).getValue() == "") && 
     (tkhContact.getRange('I'+row+':I'+row).getValue() == "") && 
     (tkhContact.getRange('J'+row+':J'+row).getValue() == "") && 
     (tkhContact.getRange('K'+row+':K'+row).getValue() == "") && 
     (tkhContact.getRange('L'+row+':L'+row).getValue() == "") && 
     (tkhContact.getRange('M'+row+':M'+row).getValue() == "") && 
     (tkhContact.getRange('N'+row+':N'+row).getValue() == "") && 
     (tkhContact.getRange('O'+row+':O'+row).getValue() == "") && 
     (tkhContact.getRange('P'+row+':P'+row).getValue() == "") && 
     (tkhContact.getRange('Q'+row+':Q'+row).getValue() == "")) 
     { 
      tkhContact.deleteRow(row); // tkhContact.getRange('R'+row+':R'+row).setValue(""); 
     } 
    } 
} 

数式があるので、実際には空白ではないので、列Bをスキップする必要があります。

答えて

1

使用#is_Blank()

function removeEmptyPending(){ 
    for(var row=lastRow;row>=2;row--){ 
    if((tkhContact.getRange('A'+row+':A'+row).isBlank()) && 
     (tkhContact.getRange('C'+row+':Q'+row).isBlank()) && 
    ){ 
      tkhContact.deleteRow(row); //tkhContact.getRange('R'+row+':R'+row).setValue(""); 
     } 
    } 
} 
0

このコードはQ.を通じて列Aを含む最後の行までの行2からすべてのデータを、取得し、データを通過します。つまり、すべてのデータを1回の操作で取得します。行は個別に削除する必要があり、下から上に削除する必要があります。つまり、外側の "for"ループはカウンタを減分する必要があります。上から下への削除を開始した場合、削除された最後の行の行番号が行番号を変更します。

function removeEmptyPending() { 
    var data,i,j,L,L2,lastRow,row,thisRow,thisValue; 

    data = tkhContact.getRange(2,1,lastRow-1,17).getValues();//Get all the data from row 2 to the last row 
    //including column A to column Q 

    L = data.length;//The number of inner arrays in the outer array 

    for (i=L;i>0,i--){//Loop through all the rows from last to row 2 
    thisRow = data[i];//Get one inner array which is one row of data 

    L2 = thisRow.length; 

    for (j=0;j<L2,j++){//Loop through each element of the inner array which is the column value 

     if (j === 1) {continue;} //Skip the second element which is column B 

     thisValue = thisRow[j];//The value for this column 

     if (thisValue) {continue;}//The value for this cell is not undefined null or empty string so continue 

     tkhContact.deleteRow(i+2); // tkhContact.getRange('R'+row+':R'+row).setValue(""); 
    } 
    } 
}