将每行数据从一列中具有给定值的表复制到另一张表中

时间:2012-06-20 20:46:02

标签: google-apps-script

我正在开发一个Google Spreadsheet,它将使用一个脚本将每一行数据从一列中的“在过去30天内完成”复制到另一张表中。

“表格”是指每个标签。 Source选项卡是“Arley”目标选项卡,目前是“ArleysSandbox” 每行都有ll列,A-K。整个行应该结转。 工作表中的总行数将随着时间的推移而增加。 每次运行脚本时,我都希望它首先清除“ArleysSandbox”上的所有现有数据。 列K表示“在过去30天内完成”是一个公式。 我最终想从多张表中提取并在Sandbox表上编译。

我使用旧论坛的帖子作为起点,但由于我缺乏知识而陷入困境。 http://productforums.google.com/forum/#!msg/apps-script/FNGzVkEqZh4/x8WCYtjvpI8J提前感谢任何建议。

2 个答案:

答案 0 :(得分:1)

//Find current filter and remove     
var currentFilter = master_sheet.getFilter();
      if ( currentFilter !== null ) {
        master_sheet.getFilter().remove();
      } 
     var master_lr=master_sheet.getLastRow();
     var master_lc=master_sheet.getLastColumn();


//Apply filter here
      master_sheet.getRange(1,1,master_lr,master_lc).createFilter();
      var criteria = SpreadsheetApp.newFilterCriteria().setHiddenValues(['Reject','Approved']).build();
      master_sheet.getFilter().setColumnFilterCriteria(45, criteria);

      master_sheet.getFilter().getRange().copyTo(harmonize_approvers.getRange(1,1,master_lr-1,master_lc), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);

答案 1 :(得分:0)

不要生气,但我认为这个论坛不是一个可以免费获得应用程序的市场,它应该为那些试图自己获得结果的人们提供答案。

那就是说,这是一个'skeletton'应该让你走上正轨,我试着用评论来解释发生了什么。 (没有测试它,也许它需要调试)

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
  }
}