从与 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;
我正在尝试以下操作:
在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;