Excepción: Rango no encontrado. Intentando ubicar múltiples columnas utilizando una celda activa. (sin embargo funciona al ingresarlos manualmente)
Estoy tratando de insertar valores en celdas. Aquí está mi código:
var values = [
["test1", "test2", "test3"]
];
var ss = SpreadsheetApp.getActiveSpreadsheet()
// var sheet = ss.getSheets()[0]
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
var cellsToWriteTo = []
function testFunction() {
var activeCell = sheet.getActiveCell();
var firstRow = activeCell.getRow()
var firstColumn = activeCell.getColumn()
cellsToWriteTo = `["R${firstRow}C${firstColumn}:R${firstRow}C${firstColumn + 2}"]`
console.log(cellsToWriteTo)
var range = sheet.getRange(cellsToWriteTo)
range.setValues(values);
}
Esto me da el siguiente error:
Exception: Rango no encontrado
Sin embargo, si copio y pego cellsToWriteTo desde el registro de la consola y lo coloco en getRange.. funciona perfectamente cada vez.
Cosas que he intentado hasta ahora:
Pensé que tenía algo que ver con no obtener la hoja de cálculo correctamente (getActiveSpreadsheet().getActiveSheet()).
Arreglé cómo estaban organizados mis valores (en matrices dentro de matrices).
Busqué en Google el mensaje de error y revisé cómo obtenerRange/configurarRango correctamente en la documentación y en tutoriales. Aparentemente, no puedes establecer celdas arbitrarias si las estás llamando desde la hoja de cálculo en sí. Esta es mi sospecha de lo que está saliendo mal aquí. Sin embargo, ¿cómo puede ser esto si cuando ingreso una simple cadena funciona bien? Aquí simplemente estoy haciendo interpolación de cadenas.
Sé que esto es algo básico, cualquier ayuda sería apreciada.
davy.ai
Parece que el problema radica en la forma en que se define y se pasa
cellsToWriteTo
agetRange
. En lugar de establecercellsToWriteTo
como una cadena dentro de corchetes cuadrados, debería definirse como un arreglo con dos arreglos, así:cellsToWriteTo = [[primerFila, primerColumna, 1, 3]];
Luego, al pasarlo a
getRange
, debería ser pasado sin los corchetes cuadrados y con las funcionesgetRow()
ygetColumn()
reemplazadas por los índices reales de fila y columna, así:var rango = hoja.getRange(cellsToWriteTo[0][0], cellsToWriteTo[0][1], cellsToWriteTo[0][2], cellsToWriteTo[0][3]);
Por lo tanto, el código corregido sería:
Con estos cambios, el código debería poder insertar los valores en las celdas especificadas.