Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript googlesheet复印件&;按列名粘贴筛选的数据_Javascript_Google Apps Script_Google Sheets_Filter_Google Sheets Api - Fatal编程技术网

Javascript googlesheet复印件&;按列名粘贴筛选的数据

Javascript googlesheet复印件&;按列名粘贴筛选的数据,javascript,google-apps-script,google-sheets,filter,google-sheets-api,Javascript,Google Apps Script,Google Sheets,Filter,Google Sheets Api,您好,这很好&我已经按照我的要求进行了编辑,但我在这里遇到的问题是,我想从“工作表”和“更新”工作表中按标题名称(行1)复制列,而不是复制和粘贴整个数据 这里有几个列标题名称:EmployeeID、电子邮件、日期、员工姓名、电话 toFilter(); var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var sheet1 = spreadsheet.getSheetByName("Worksheet"); var sheet2 =

您好,这很好&我已经按照我的要求进行了编辑,但我在这里遇到的问题是,我想从“工作表”和“更新”工作表中按标题名称(行1)复制列,而不是复制和粘贴整个数据

这里有几个列标题名称:EmployeeID、电子邮件、日期、员工姓名、电话

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);
}
toFilter();
var电子表格=SpreadsheetApp.getActiveSpreadsheet();
var sheet1=电子表格.getSheetByName(“工作表”);
var sheet2=电子表格.getSheetByName(“更新”);
var data=sheet1.getDataRange().getValues();
var数组=[];
对于(变量i=0;i

请帮帮我

试试这样的方法:

//员工ID、电子邮件、日期、员工姓名、电话

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);
}
函数toFilter(){
var电子表格=SpreadsheetApp.getActiveSpreadsheet();
var sheet1=电子表格.getSheetByName(“工作表”);
var sheet2=电子表格.getSheetByName(“更新”);
var hA=sheet1.getRange(1,1,1,sh.getLastColumn()).getValues()[0];
var hObj={};
hA.forEach(函数(e,i){hObj[e]=i;});
var data=sheet1.getDataRange().getValues();
var数组=[];
对于(变量i=0;i
如果您使用数组公式,请尝试以下方法:

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);
}
函数toFilter(){
var电子表格=SpreadsheetApp.getActiveSpreadsheet();
var sheet1=电子表格.getSheetByName(“工作表”);
var sheet2=电子表格.getSheetByName(“更新”);
var hA=sheet1.getRange(1,1,1,sh.getLastColumn()).getValues()[0];
var hObj={};
var col='在此处输入列号'
hA.forEach(函数(e,i){hObj[e]=i;});
var data=sheet1.getRange(1,1,getColumnHeight(col,sheet1,电子表格),sheet1.getLastRow()).getValues();
var数组=[];
对于(变量i=0;i
尝试以下方法:

//员工ID、电子邮件、日期、员工姓名、电话

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);
}
函数toFilter(){
var电子表格=SpreadsheetApp.getActiveSpreadsheet();
var sheet1=电子表格.getSheetByName(“工作表”);
var sheet2=电子表格.getSheetByName(“更新”);
var hA=sheet1.getRange(1,1,1,sh.getLastColumn()).getValues()[0];
var hObj={};
hA.forEach(函数(e,i){hObj[e]=i;});
var data=sheet1.getDataRange().getValues();
var数组=[];
对于(变量i=0;i
如果您使用数组公式,请尝试以下方法:

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);
}
函数toFilter(){
var电子表格=SpreadsheetApp.getActiveSpreadsheet();
var sheet1=电子表格.getSheetByName(“工作表”);
var sheet2=电子表格.getSheetByName(“更新”);
var hA=sheet1.getRange(1,1,1,sh.getLastColumn()).getValues()[0];
var hObj={};
var col='在此处输入列号'
hA.forEach(函数(e,i){hObj[e]=i;});
var data=sheet1.getRange(1,1,getColumnHeight(col,sheet1,电子表格),sheet1.getLastRow()).getValues();
var数组=[];
对于(变量i=0;i
非常有效,谢谢!但当我将数组公式放入工作表列A&B
=ARRAYFORMULA(IF(E2:E=”“,“”,IF(COUNTIF)(E2:2,E2:E)>1,“Yes”,“No”
时,执行脚本需要2分钟以上,但如果我将相同的公式放入不带数组
=IF(E2:E=“”,“”,IF(COUNTIF)(E2:2,E2:E)>1,“Yes”,“No”
它在10秒内执行为什么?如何让它执行得更快?可能是因为数组函数弄乱了getDataRange()中的lastRow()计算。我有一个ColumnHeight()我可以使用的函数。你能告诉我哪列不包含forrmulas吗?我们可以试试看它是否有用。A列和B列包含上述公式,分别在E列和K列中查找重复项,S列包含涉及K到R范围的自定义自定义自定义项。我不知道是否需要此信息-我不想c列中的任何一列opy有公式扫描您共享工作表的图像吗?这是工作表:黄色格式的列包含公式。非常感谢!但是当我将数组公式放入工作表列A&B
=ARRAYFORMULA(IF(E2:E=“”,”,IF(COUNTIF(E2:2,E2:E)>1“是”,“否”时,执行脚本需要2分钟以上的时间
但是如果我把相同的公式放在不带数组的地方
=if(E2:E=“”,”,if(COUNTIF(E2:2,E2:E)>1,“是”,“否”
它会在10秒内执行