Javascript Google脚本GetRange,基于列中的值进行筛选,并仅选择某些列
我有一个35列300行的数据集。我想获得只包含第30列(名称)中某些值的行的范围。要筛选数据的名称基于处于活动状态的报告表中的报告文件单元格B6。到目前为止,我试过: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
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。});