Tengo los siguientes scripts en Google Apps Script que admitirán un evento JSON. Quiero los datos en el elemento "eventos", pero siempre me devuelven "Indefinido".
Supongo que tal vez sea porque events es una matriz JSON y no puedo usarla directamente en JS.
Aquí está mi código:
function doPost(e) { var msg = JSON.parse(JSON.stringify(e.postData.contents)); console.log(msg); //log succesfully console.log(msg.events); //"Undefined" }Si trato de registrar los elementos en los eventos en lugar de los eventos de la matriz en sí:
console.log(msg.events[0].replyToken); //"TypeError: Cannot read property '0' of undefined at doPost(app:26:25)"El resultado de msg will está a continuación:
{ "destination": "U656de3c6b48c8e0d44edda4fd3f05e06", "events": [ { "type": "message", "message": { "type": "text", "id": "*********", "text": "Hi" }, "timestamp": 1642616050062, "source": { "type": "group", "groupId": "***********", "userId": "*************" }, "replyToken": "************", "mode": "active" } ] }He visto varios problemas similares para matrices en JS. Los probé pero ninguno funcionó, por favor ayúdenme.
Supongo que el resultado que obtiene de su API como e.postData.contents es una cadena JSON.
En este caso algo como esto:
var msg = JSON.parse(JSON.stringify(e.postData.contents)); primero intentaría convertir algo en una cadena JSON ( JSON.stringify ) y luego convertirlo en un objeto JavaScript mediante JSON.parse . En otras palabras, JSON.stringify es inútil.
Prueba esto en su lugar:
var msg = JSON.parse(e.postData.contents);Si el valor de "e.postData.contents" ya es una cadena, no tiene que hacer JSON.stringify. Si hace JSON.parse (JSON.stringify (cualquier cadena), se agrega una barra invertida" a los valores. Por ejemplo
let str = '{name: "John"}'; let myJSON = JSON.stringify(str);miJSON = "{nombre: "Juan"}"
Por lo tanto, asegúrese de que "e.postData.contents" no sea una cadena.