从与 google 应用程序脚本中的索引值匹配的一行或多行中获取值

get values ​from one or more rows matching an index value in google apps script

我正在尝试以下操作:

在sheet“Pedidos articulos”的行中查找sheet“Pedidos”的值。当找到包含这些搜索值的一行或多行匹配项时,则获取整行的值。

我需要获取匹配行的数据,但是,我不需要将它们粘贴到sheet上的任何地方,因为这个函数是在一个模态对话框中显示这些数据html 通过 Scriptlet 的模板。

我的问题是什么:

我的问题是我设法在“Pedidos articulos”sheet 中找到值 (numPedido) 的匹配项 sheet,但是,它总是 returns 匹配行的索引。我无法获取那些匹配行的数据。

我的代码:

function obtenerProductos3(){

  //Hoja Pedidos

  var hojaPedidos = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Pedidos');
  var fila = hojaPedidos.getCurrentCell().getRow();
  var numeroPedidoPE = hojaPedidos.getRange(fila,3,1,1).getDisplayValue();
  Logger.log(numeroPedidoPE)

  //Hoja Pedidos artículos

  var hojaPedidosArticulos = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Pedidos Artículos'); 
  var numPedidoAR = hojaPedidosArticulos.getRange('C7:C').getValues();
  var articulos = hojaPedidosArticulos.getRange(7,3, hojaPedidosArticulos.getLastRow()-6, hojaPedidosArticulos.getLastColumn()-1).getValues();

  //var articulos = hojaPedidosArticulos.getRange('C7:O').getDisplayValues();

  Logger.log(numPedidoAR)
  Logger.log(articulos)
  
  var newData =  articulos.map(function(r){ return r[0]; });
  Logger.log(newData)

  var indexes = newData.map((element, i) => element === numeroPedidoPE ? i : "")
                      .filter(element => element !== "");

  Logger.log(indexes)
  
  return (hojaPedidosArticulos.getRange(indexes, 2, indexes, hojaPedidosArticulos.getLastColumn()).getDisplayValues());


}

非常感谢所有帮助。

indexes 是一个数组。请迭代。

  const values = hojaPedidosArticulos.getRange(7, 2, hojaPedidosArticulos.getLastRow() - 6, hojaPedidosArticulos.getLastColumn() - 1).getDisplayValues();
  const results = values.filter((e, i) => indexes.includes(i));
  return results;