Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.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/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
Javascript Google脚本GetRange,基于列中的值进行筛选,并仅选择某些列_Javascript_Google Apps Script_Google Sheets - Fatal编程技术网

Javascript Google脚本GetRange,基于列中的值进行筛选,并仅选择某些列

Javascript Google脚本GetRange,基于列中的值进行筛选,并仅选择某些列,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我有一个35列300行的数据集。我想获得只包含第30列(名称)中某些值的行的范围。要筛选数据的名称基于处于活动状态的报告表中的报告文件单元格B6。到目前为止,我试过: var report = SpreadsheetApp.getActiveSpreadsheet(); var tsheet = report.getSheetByName("Transactions"); var areport = SpreadsheetApp.getActiveSheet(); var a

我有一个35列300行的数据集。我想获得只包含第30列(名称)中某些值的行的范围。要筛选数据的名称基于处于活动状态的报告表中的报告文件单元格B6。到目前为止,我试过:

var report = SpreadsheetApp.getActiveSpreadsheet();
var tsheet = report.getSheetByName("Transactions");
var areport = SpreadsheetApp.getActiveSheet();
var agent = areport.getRange('B6').getValues();

var criteria = SpreadsheetApp.newFilterCriteria().whenTextEqualTo(agent).build();
var trange = tsheet.getRange().createFilter().setColumnFilterCriteria(30, criteria); // ERROR
var tdata = trange.getValues();
我收到一个错误异常:参数()与SpreadsheetApp.Sheet.getRange的方法签名不匹配

第二部分,我只想得到几个列,5,6,7,13,15。我无法使用电子表格应用程序创建另一个过滤器,因此,制作数组并从中过滤出所需数据的唯一方法是什么?我只是想先考虑一下,减少计算量。

试试:

要从
tdata
do中选择特定列,请执行以下操作:

var cr_data = getCols(tdata,[5,6,7, 13, 15]);
其中定义如下:

function getCols(arr,cols) {
  return arr.map(row =>
    row.filter((_,i) => cols.includes(++i)))
}
最后,您可以将
cr\u数据
复制到特定的位置/表格,如下所示:

sheet.getRange(1,1,cr_data.length,cr_data[0].length).setValues(cr_data);
关于你问题的第二部分,我想让你转到这个帖子:

试试:

要从
tdata
do中选择特定列,请执行以下操作:

var cr_data = getCols(tdata,[5,6,7, 13, 15]);
其中定义如下:

function getCols(arr,cols) {
  return arr.map(row =>
    row.filter((_,i) => cols.includes(++i)))
}
最后,您可以将
cr\u数据
复制到特定的位置/表格,如下所示:

sheet.getRange(1,1,cr_data.length,cr_data[0].length).setValues(cr_data);
关于你问题的第二部分,我想让你转到这个帖子:


谢谢你,马里奥斯。它工作得很好。最初我希望var数据能够得到已经过滤过的范围,以节省制作另一个按列值过滤的变量的时间,但这将很好地工作。@Mike1-23很高兴它起到了作用!请点击我答案左侧的勾选按钮接受我的答案好吗?谢谢后续问题。我想根据第二列条件添加另一个筛选器:行[5]='Closed'如何将其添加到筛选器(函数)?
var tdata=data.filter(函数(行){return row[29]==agent&&row[5]='Closed';})谢谢。我运行了它,tdata返回一个空数组。它运行时没有错误,但它不喜欢:var tdata=data.filter(函数(行){return row[29]==agent&&row[5]='Closed';//从0开始,列A是0。});谢谢你,马里奥斯。它工作得很好。最初我希望var数据能够得到已经过滤过的范围,以节省制作另一个按列值过滤的变量的时间,但这将很好地工作。@Mike1-23很高兴它起到了作用!请点击我答案左侧的勾选按钮接受我的答案好吗?谢谢后续问题。我想根据第二列条件添加另一个筛选器:行[5]='Closed'如何将其添加到筛选器(函数)?
var tdata=data.filter(函数(行){return row[29]==agent&&row[5]='Closed';})谢谢。我运行了它,tdata返回一个空数组。它运行时没有错误,但它不喜欢:var tdata=data.filter(函数(行){return row[29]==agent&&row[5]='Closed';//从0开始,列A是0。});