javascript - read - sheet id google sheets
Parse JSON de Google Spreadsheet (3)
¿Has encontrado cómo puedo acceder a las hojas de cálculo de Google Sheet solo con Javascript? ? Hay una respuesta que apunta a https://github.com/mikeymckay/google-spreadsheet-javascript .
Además, https://developers.google.com/apps-script/service_spreadsheet parece ser prometedor.
EDITAR: entry.content.$t
es el campo incorrecto para acceder a celdas individuales. entry.gsx $ [ encabezado de columna de celda ] es el método correcto. Disculpas y gracias por ayudar a resolver esto.
Pregunta original:
Estoy tratando de analizar datos JSON de una hoja de cálculo de Google . El problema es que el campo de entradas devuelve una cadena que es una fila completa de la hoja de cálculo, pero aparece como un objeto mal formado. ¿Cómo están analizando otras personas esta información? Aquí se muestra el aspecto del nodo de contenido:
"content":
{
"type" :"text",
"$t" :"location: 780 Valencia St San Francisco, CA 94110,
phonenumber: (555) 555-5555,
website: http://www.780cafe.com,
latitude: 37.760505,
longitude: -122.421447"
},
Mire cuidadosamente, el campo $t
devuelve una cadena completa que es una fila en la hoja de cálculo de Google. Entonces entry.content.$t
devuelve una cadena: location: 780 Valencia St San Francisco, CA 94110, phonenumber: (555) 555-5555...
Además, este problema se ve agravado por el hecho de que algunas de las celdas de la hoja de cálculo tienen comas (como direcciones) que no se han escapado ni se han citado. Algo como
jQuery.parseJSON(entry.content.$t)
o
eval(''(''+ entry.content.$t + '')'')
arroja un error. Supongo que la expresión regular es una opción, pero espero que otros puedan haber resuelto esto de una manera más elegante. ¡Gracias por la ayuda!
El "texto" dentro del atributo $t
no es JSON. De acuerdo con la documentación, los nodos de texto se transfiguran en atributos $t
, por lo que no se puede confiar en nada porque se haya formateado JSON correctamente.
Sugeriría usar una expresión regular en su lugar, aunque te advertiré que analizar esa salida requerirá algunas cosas sofisticadas. Terminará usando una aserción ya que no puede dividir las comas; tendrá que buscar (/w+):
pero para encontrar el siguiente elemento, deberá llevar todo hasta otra coincidencia (/w+):
pero tampoco engullirlo. Se puede hacer.
Recientemente, tuve el mismo problema.
Para analizar el contenido de $ t , puede usar este RegEx:
/(/w+): (.+?(?=(?:, /w+:|$)))/mgi
devolverá pares de clave-valor.
Ejemplo de JavaScript:
var currentPropertiesText = jsonEntry[''content''][''$t''];
// var propsArray = currentPropertiesText.split(", ");
var re = /(/w+): (.+?(?=(?:, /w+:|$)))/mgi;
var propsArray = re.exec(currentPropertiesText)
var props = {};
while (propsArray != null) {
var propName = propsArray[1];
var propValue = propsArray[2];
props[propName] = propValue;
propsArray = re.exec(currentPropertiesText);
}
Eso debería ayudar :-)