Mi objetivo es escribir en una Hoja de cálculo de Google existente a través de una llamada Ajax/JavaScript en el lado del cliente.
Sin embargo, actualmente recibo el siguiente error:
Carga útil JSON no válida recibida. Nombre desconocido "{"range":"Sheet1!A8:C8","majorDimension":"ROWS","values":[["Field1","Field2","Field3"]]}": no se puede vincular el parámetro de consulta . El campo '{"range":"Sheet1!A8:C8","majorDimension":"ROWS","values":[["Field1","Field2","Field3"]]}' no se pudo encontrar en la solicitud mensaje.
Este es mi código JavaScript:
const sheetID = "--privateField--"; const key = "--privateField--"; var url = "https://sheets.googleapis.com/v4/spreadsheets/"+sheetID+"/values:batchUpdate/?key="+key; $.ajax({ url: url, type: 'PUT', dataType: 'jsonp', valueInputOption: 'USER_ENTERED', data: JSON.stringify({ range: 'Sheet1!A8:C8', majorDimension: 'ROWS', values: [ ['Field1', 'Field2', 'Field3'] ] }), headers: { "Content-Type": "application/json" }, success: function(data) { console.log(data); }, error: function(data) { console.log(data); }Donde sheetID & key se reemplazan con valores de producción reales.
Probé muchas variaciones diferentes de esta llamada API en función de los diferentes resultados de desbordamiento de pila que encontré, pero no pude hacer que nada funcionara. Me parece que he especificado 'Valores' correctamente (una matriz de matrices), pero el mensaje de error parece indicar lo contrario.
He podido leer desde Google Sheets usando Ajax/JavaScript en el lado del cliente antes, y ahora estoy tratando de obtener un ejemplo que funcione para escribir en la hoja.
Cualquier consejo o sugerencia sería muy apreciada.
Desde My goal is to write to an existing Google Sheet via a Ajax/JavaScript call on the client-side. y su secuencia de comandos que muestra, en este caso, la clave API no se puede utilizar para actualizar la hoja de cálculo. Desafortunadamente, parece que esta es la especificación actual. En este caso, se requiere utilizar el token de acceso. Tenga cuidado con esto.
Para recuperar el token de acceso, pensé que este documento oficial es útil. Ref Y, creo que también puedes verlo en Stackoverflow.
Cuando desee utilizar el método spreadsheets.values.batchUpdate de Sheets API, en su secuencia de comandos, se requiere el uso del método POST.
Y se requiere modificar el cuerpo de la solicitud.
Pensé que la razón de su problema actual se debe a los puntos anteriores. Cuando estos puntos se reflejan en su guión, se convierte en lo siguiente.
const sheetID = "--privateField--"; const accessToken = "### your access token ###"; var url = "https://sheets.googleapis.com/v4/spreadsheets/" + sheetID + "/values:batchUpdate"; var requestBody = { valueInputOption: 'USER_ENTERED', data: [{ range: 'Sheet1!A8:C8', majorDimension: 'ROWS', values: [['Field1', 'Field2', 'Field3']] }] }; $.ajax({ url: url, type: 'POST', data: JSON.stringify(requestBody), headers: { "Content-Type": "application/json", "Authorization": "Bearer " + accessToken }, success: function (data) { console.log(data); }, error: function (data) { console.log(data); } });Cuando probé este script, confirmé que los valores de [['Field1', 'Field2', 'Field3']] se colocan en la fila 8 en "Sheet1".