我正在开发一个Google Spreadsheet,它将使用一个脚本将每一行数据从一列中的“在过去30天内完成”复制到另一张表中。
“表格”是指每个标签。 Source选项卡是“Arley”目标选项卡,目前是“ArleysSandbox” 每行都有ll列,A-K。整个行应该结转。 工作表中的总行数将随着时间的推移而增加。 每次运行脚本时,我都希望它首先清除“ArleysSandbox”上的所有现有数据。 列K表示“在过去30天内完成”是一个公式。 我最终想从多张表中提取并在Sandbox表上编译。
我使用旧论坛的帖子作为起点,但由于我缺乏知识而陷入困境。 http://productforums.google.com/forum/#!msg/apps-script/FNGzVkEqZh4/x8WCYtjvpI8J提前感谢任何建议。
答案 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
}
}