googlesheet按列名复制和粘贴过滤后的数据

时间:2020-04-19 15:22:42

标签: javascript google-apps-script google-sheets filter google-sheets-api

您好,这个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);
}

请帮助!

1 个答案:

答案 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);
}
相关问题