¿Cómo se resuelve el error "Los parámetros (número []) no coinciden con la firma del método para SpreadsheetApp.Range.setValues"?
Recibo este error:
"Los parámetros (número []) no coinciden con la firma del método para SpreadsheetApp.Range.setValues".
en mi Google Apps Script cuando intento escribir una matriz de valores en una hoja.
A continuación se muestra una versión abreviada (simplificada) del código. El código real recorre unos 10.000 registros.
El error se genera en la última línea, cuando se setValues
llama.
Sé que me estoy perdiendo algo súper simple aquí.
function writeArrayToSheet() {
var ss = SpreadsheetApp.openById("Spreadsheet_ID");
var orderSheet = ss.getSheetByName("Sheet_Name");
var vTable = orderSheet.getRange(1,6,5,11).getValues(); //Raw data
var vWriteTable = []; //Data that will be written to sheet
var updateTime = new Date();
var i = 0;
var vSeconds = 0;
while (i < 5 && vTable[i][0] != "") {
//Logic section that calculated the number of seconds between
if (vSeconds == 0) {
vWriteTable.push("");
} else {
if (vTable[i][6] < certain logic) {
vWriteTable.push("Yes");
} else {
vWriteTable.push("");
}
}
i = i + 1;
} // End while
orderSheet.getRange(1,20,vWriteTable.length,1).setValues(vWriteTable);
} //End Function
Esto es lo que vWriteTable
parece al depurar:
setValues
acepta (y getValues()
devuelve):
- 1 argumento de tipo:
Object[][]
una matriz bidimensional de objetos
NO acepta una matriz unidimensional. Un rango siempre es bidimensional, independientemente de la altura o el ancho del rango, o ambos .
Si A1:A2 es el rango, entonces la matriz de valores correspondiente sería como:
[[1],[3]]
De manera similar, A1:B1 sería
[[1,2]]
A1:B2 sería
[[1,2],[3,4]]
Observe cómo las dos dimensiones proporcionan dirección y que siempre es una matriz 2D, incluso si la altura o el ancho del rango es solo 1.
Solución:
Empuje una matriz 1D para hacer que la matriz de salida sea 2D.
Retazo:
vWriteTable.push(/*Added []*/["Yes"]);
Más información:
Para obtener una explicación más detallada de las matrices en las hojas de Google, consulte mi respuesta aquí .
Simplemente puede hacer esto, poner el valor entre corchetes []:
en tu caso:
WriteTable.push([""]) or WriteTable.push(["yes"])