recorrer objeto leer externo estructura ejemplo crear con buscar archivo json google-sheets

objeto - Acceso a una hoja de Google(de nuevo estilo, pública) como JSON



leer json javascript (4)

¿Cómo puedo acceder al contenido de una hoja de Google (estilo nuevo) de un JSON? Mi objetivo es acceder a los valores desde JavaScript, por lo que necesito poder descargar el JSON a través de HTTP.

Ejemplo: ¿cómo puedo descargar los datos de esta hoja como JSON?

Traté de encontrar la respuesta a través de una búsqueda en la web, pero finalmente fallé:


Aquí se explica cómo obtener el JSON utilizando esos mismos parámetros de URL:

"https://spreadsheets.google.com/feeds/list/" + spreadsheetID + "/od6/public/values?alt=json";

Creditos a @jochen en la respuesta con la ruta hasta XML "https://spreadsheets.google.com/feeds/list/" + spreadsheetID + "/od6/public/" + sheetID;

Como explica la respuesta de @ jochen, este sheetID se basa en el orden de las hojas en la hoja de cálculo.


Finalmente he resuelto (tipo de) mi problema. Solo para futuras referencias, y en caso de que alguien más tenga los mismos problemas, aquí se me ocurrió la solución:

  1. Para que la hoja de cálculo sea de acceso público, uno debe hacer que la hoja de cálculo sea de acceso público. Esto se hace en la interfaz web de Google Sheets, usando las entradas del menú File > Publish to the web ... > link > publish . Es posible publicar la hoja de cálculo completa o las hojas de trabajo individuales.

  2. Una API para acceder a los datos de Google Sheets mediante programación se describe en las páginas web de la API de Google Sheets . Esta API utiliza URLS del formulario https://spreadsheets.google.com/feeds/.../ key / worksheetId /... Un poco extraño, el significado de key y worksheetId no parece explicarse en la documentación de la API.

    Mis experimentos muestran que el valor clave se puede encontrar al formar parte de las URL utilizadas para acceder a la hoja a través de la interfaz web (consulte también here ). La clave es todo después de la /d/ , hasta la siguiente barra. Para la hoja de cálculo en la pregunta, la clave es, por lo tanto, 1mhv1lpzufTruZhzrY-ms0ciDVKYiFJLWCMpi4OOuqvI . El worksheetId parece ser un número entero, dando la posición de la hoja de cálculo en la hoja de cálculo. Para el ejemplo de la pregunta, uno tiene que saber que la hoja que se muestra es la segunda hoja de trabajo, la hoja de trabajo que en este caso es 2 .

    La API definió solicitudes public y private . Para acceder a un recurso exportado sin autenticación, se deben utilizar solicitudes public .

  3. Las llamadas a la API para obtener datos de la hoja de cálculo se explican en la sección "Recuperación de una fuente basada en listas" (haga clic en la pestaña "Protocolo" en los ejemplos). La URL requerida para extraer los datos de la hoja de cálculo en la pregunta es

    https://spreadsheets.google.com/feeds/list/1mhv1lpzufTruZhzrY-ms0ciDVKYiFJLWCMpi4OOuqvI/2/public/full

    Una solicitud GET de HTTP a esta URL devuelve esos datos como XML. (No he encontrado una manera de obtener los datos como JSON.)

  4. Las protecciones habituales en las solicitudes entre sitios dificultan el acceso a los datos a través de llamadas XML RPC de JavaScript en una aplicación web. Una forma de solucionar este problema es enviar las llamadas a la API a través del servidor web ( por ejemplo, utilizando la directiva proxy_pass de nginx).

Los pasos anteriores son al menos una solución parcial al problema en la pregunta. La única dificultad es que los datos se devuelven como XML en lugar de como JSON. Dado que la documentación de la API no menciona JSON, ¿quizás ya no sea posible extraer los datos en este formato?


Si desea utilizar la última API (v4), deberá hacer lo siguiente:

  1. Genere una clave API de hojas de cálculo (consulte las instrucciones a continuación).
  2. Haga su hoja de acceso público.
  3. Utilice una solicitud del formulario:

    https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID/values/RANGE?key=API_KEY

Luego obtendrás una respuesta JSON limpia de nuevo:

{ "range": "Sheet1!A1:D5", "majorDimension": "ROWS", "values": [ ["Item", "Cost", "Stocked", "Ship Date"], ["Wheel", "$20.50", "4", "3/1/2016"], ["Door", "$15", "2", "3/15/2016"], ["Engine", "$100", "1", "30/20/2016"], ["Totals", "$135.5", "7", "3/20/2016"] ], }

Tenga en cuenta que si desea especificar todo el contenido de una página, un identificador como Sheet1 es perfectamente válido .

Ver Lectura Básica para más información.

A partir de la API v4, todas las solicitudes deben ir acompañadas de un identificador (por ejemplo, clave de API):

Las solicitudes de datos públicos a la API de Google Sheets deben ir acompañadas de un identificador, que puede ser una clave de API o un token de acceso.

Siga los pasos en el documento vinculado para crear una clave API en la página de credenciales .

Asegurate que:

  1. Crea una nueva aplicación en Google Cloud Platform.
  2. Crea una nueva clave API.
  3. Agregue la API de Google Sheets. (Administrador de API> Panel de control> Habilitar API)

Tenga en cuenta que todavía puede acceder a datos públicos sin obligar al usuario a iniciar sesión:

En el nuevo Sheets API v4, no hay una declaración explícita de visibilidad. Las llamadas a la API se realizan utilizando los ID de hoja de cálculo. Si la aplicación no tiene permiso para acceder a la hoja de cálculo especificada, se devuelve un error. De lo contrario, la llamada procede.

Tenga en cuenta que no es necesario publicar la hoja en la web. Todo lo que necesita hacer es asegurarse de que cualquier persona con el enlace pueda acceder a la hoja.

(Por ejemplo, cuando hace clic en Crear credenciales en la API de Google Sheets, selecciona Otros datos de usuario que no son de UI y dice "No se puede acceder a los datos de usuario desde una plataforma sin una IU porque requiere la interacción del usuario para iniciar sesión". ignore ese mensaje de forma segura. La clave API es todo lo que realmente necesita, ya que se trata de datos públicos.)

Mensajes de error comunes:

A la solicitud le falta una clave de API válida.

No incluyó la key= param en su llamada.

La clave API no es válida. Por favor pase una clave de API válida. Consola de desarrolladores de Google

Usted suministró una clave de API incorrecta. Asegúrese de que ha escrito su clave correctamente. Si aún no tiene una clave, vaya a la consola de desarrolladores de Google y cree una.

Clave API no encontrada. Por favor pase una clave de API válida.
Clave API de la consola de desarrollador de Google

La clave de la API probablemente sea correcta, pero lo más probable es que no haya agregado el permiso de Google Sheets. Vaya a la página clave de la API de la consola de desarrollador de Google y agregue el permiso de las hojas.

La persona que llama no tiene permiso

Tu hoja no está configurada para ser de acceso público.


Una solución más rápida aquí es usar este https://gist.github.com/ronaldsmartin/47f5239ab1834c47088e para envolver su hoja de cálculo existente.

Primero debe cambiar el acceso de la hoja a Anyone with link can View

Agregue el id y la sheet html param a la URL a continuación.

https://script.google.com/macros/s/AKfycbzGvKKUIaqsMuCj7-A2YRhR-f7GZjl4kSxSN1YyLkS01_CfiyE/exec

Por ejemplo: su id es su identificación de hoja que es

1mhv1lpzufTruZhzrY-ms0ciDVKYiFJLWCMpi4OOuqvI

y tu hoja que es

Sheet2

En su caso, puede ver sus datos aquí como json en

https://script.google.com/macros/s/AKfycbzGvKKUIaqsMuCj7-A2YRhR-f7GZjl4kSxSN1YyLkS01_CfiyE/exec?id=1mhv1lpzufTruZhzrY-ms0ciDVKYiFJLWCMpi4OOuqvI&sheet=Sheet2

Para estar seguro, debe implementar el código sheetAsJson.gs en el github gist anterior como su propio en su Google Drive.