您好,这个code很好用,我已经按照我的要求进行了编辑,但是这里的问题是我想从“工作表”和“更新”表中按标题名称(Row1)复制列复制和粘贴整个数据。
以下几列标题名称:EmployeeID,Email,日期,员工名称,电话
toFilter();
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet1 = spreadsheet.getSheetByName("Worksheet");
var sheet2 = spreadsheet.getSheetByName("Update");
var data = sheet1.getDataRange().getValues();
var array = [];
for (var i = 0; i < data.length; i++){
if(sheet1.isRowHiddenByFilter(i+1)==false){
array.push(data[i]);
}
}
sheet2.getRange(sheet2.getLastRow()+1, 1, array.length, array[0].length).setValues(array);
}
请帮助!
答案 0 :(得分:2)
尝试这样的事情:
// EmployeeID,电子邮件,日期,员工姓名,电话
function toFilter() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet1 = spreadsheet.getSheetByName("Worksheet");
var sheet2 = spreadsheet.getSheetByName("Update");
var hA=sheet1.getRange(1,1,1,sh.getLastColumn()).getValues()[0];
var hObj={};
hA.forEach(function(e,i){hObj[e]=i;});
var data = sheet1.getDataRange().getValues();
var array = [];
for (var i = 0; i < data.length; i++){
if(!sheet1.isRowHiddenByFilter(i+1)){
array.push([data[i][hObj['EmployeeID']],data[i][hObj['Email']],data[i][hObj['Date']]...]);
}
}
sheet2.getRange(sheet2.getLastRow()+1, 1, array.length, array[0].length).setValues(array);
}
如果您使用数组公式,请尝试这种方式:
function toFilter() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet1 = spreadsheet.getSheetByName("Worksheet");
var sheet2 = spreadsheet.getSheetByName("Update");
var hA=sheet1.getRange(1,1,1,sh.getLastColumn()).getValues()[0];
var hObj={};
var col='enter column number here'
hA.forEach(function(e,i){hObj[e]=i;});
var data = sheet1.getRange(1,1,getColumnHeight(col,sheet1,spreadsheet),sheet1.getLastRow()).getValues();
var array = [];
for (var i = 0; i < data.length; i++){
if(!sheet1.isRowHiddenByFilter(i+1)){
array.push([data[i][hObj['EmployeeID']],data[i][hObj['Email']],data[i][hObj['Date']]...]);
}
}
sheet2.getRange(sheet2.getLastRow()+1, 1, array.length, array[0].length).setValues(array);
}
function getColumnHeight(col,sh,ss){
var ss=ss||SpreadsheetApp.getActive();
var sh=sh||ss.getActiveSheet();
var col=col||sh.getActiveCell().getColumn();
var v=sh.getRange(1,col,sh.getLastRow(),1).getValues().map(function(r){return r[0];});
var s=0;
var h=0;
v.forEach(function(e,i){if(e==''){s++;}else{s=0;}h++;});
return (h-s);
}