Mostrar los primeros 100 archivos & carpetas de tu unidad de Google Drive

1. Usa las APIs de Google Workspace

En este codelab, aprenderás a usar las APIs de RESTful basadas en HTTP de Google Workspace (antes G Suite). El ejemplo se realizará en Python por cuestiones de brevedad y disponibilidad, pero también puedes elegir usar tu lenguaje de desarrollo favorito. Conocerás temas introductorios, por ejemplo, cómo usar Play Console para crear y administrar proyectos, cómo instalar las bibliotecas cliente de la API y cómo obtener credenciales de autorización. Una vez resueltos los formalidades, escribirás una aplicación que muestre los primeros 100 archivos y de Google Drive con su API.

Qué aprenderás

  • Cómo crear un proyecto con Google o Cloud Developers Console
  • Obtener y Usar credenciales de aplicación de OAuth2 en tu app
  • Más información sobre el uso de las bibliotecas cliente de las APIs de Google
  • Escribir aplicaciones con Google & APIs de Google Workspace
  • Cómo obtener información de archivos y carpetas con la API de Google Drive

Requisitos

  • Acceso a Internet y un navegador web
  • Una Cuenta de Google (las cuentas de Google Workspace pueden requerir la aprobación del administrador)
  • Conocimiento de sistemas que cumplen con POSIX, como Linux y Mac OS X
  • Saber crear archivos fuente con un editor de código o comandos de shell
  • Habilidades básicas de Python (2 o 3), pero puedes usar cualquier lenguaje compatible
  • Algunos archivos o carpetas de tu Google Drive.

2. Encuesta

¿Cómo usarás este instructivo de codelab?

Ler Leer y completar los ejercicios

¿Cómo calificarías tu experiencia con las herramientas para desarrolladores de Google Workspace y APIs?

Principiante Intermedio Avanzado .
.

3. Descripción general

En este codelab, aprenderás a hacer lo siguiente:

  1. Descarga la biblioteca cliente de las APIs de Google para Python
  2. Cómo crear un proyecto nuevo en Google/Cloud Developers Console
  3. Obtén las credenciales necesarias para tu app
  4. Usar esas credenciales para acceder a la API de Google Drive

Si prefieres no usar Python, puedes implementar el codelab en tu herramienta de desarrollo favorita (las bibliotecas cliente de los lenguajes compatibles están disponibles aquí) y simplemente consultar los ejemplos de Python como pseudocódigo (ejecutable).

4. Confirma el entorno de Python

Este codelab requiere que uses el lenguaje Python (aunque muchos lenguajes son compatibles con las bibliotecas cliente de las APIs de Google, así que puedes crear algo equivalente en tu herramienta de desarrollo favorita y simplemente usar Python como seudocódigo). En particular, este codelab es compatible con Python 2 y 3, pero recomendamos pasar a la versión 3.x lo antes posible.

Cloud Shell es un servicio conveniente disponible para los usuarios directamente en la consola de Cloud y no requiere un entorno de desarrollo local, por lo que este instructivo se puede realizar completamente en la nube con un navegador web. Cloud Shell es especialmente útil si estás desarrollando o planeas seguir desarrollando con productos de GCP y APIs Específicamente, para este codelab, Cloud Shell ya preinstaló ambas versiones de Python.

Cloud Shell también tiene instalado IPython. Recomendamos que utilices un intérprete de Python interactivo de nivel superior, especialmente si formas parte de una comunidad de ciencia de datos o aprendizaje automático. Si lo eres, IPython es el intérprete predeterminado de los notebooks de Jupyter y de Colab, los notebooks de Jupyter que se alojan en Google Research.

IPython prioriza un intérprete de Python 3, pero recurre a Python 2 si 3.x no está disponible. Se puede acceder a IPython desde Cloud Shell, pero también se puede instalar en un entorno de desarrollo local. Sal con ^D (Ctrl-d) y acepta la propuesta para salir. Un resultado de ejemplo del inicio de ipython se verá de la siguiente manera:

$ ipython
Python 3.7.3 (default, Mar 4 2020, 23:11:43)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.13.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]:

Si IPython no es tu preferencia, el uso de un intérprete interactivo estándar de Python (ya sea Cloud Shell o tu entorno de desarrollo local) es perfectamente aceptable (también sal con ^D):

$ python
Python 2.7.13 (default, Sep 26 2018, 18:42:22)
[GCC 6.3.0 20170516] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 
$ python3
Python 3.7.3 (default, Mar 10 2020, 02:33:39)
[GCC 6.3.0 20170516] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

En el codelab, también se supone que tienes la herramienta de instalación pip (administrador de paquetes de Python y agente de resolución de dependencias). Viene incluido en las versiones 2.7.9 o posterior, o 3.4 o posterior. Si tienes una versión anterior de Python, consulta esta guía para obtener instrucciones de instalación. Según tus permisos, es posible que necesites tener acceso de sudo o de superusuario, pero, por lo general, este no es el caso. También puedes usar pip2 o pip3 de forma explícita para ejecutar pip en versiones específicas de Python.

En el resto del codelab, se supone que usas Python 3. Se proporcionarán instrucciones específicas para Python 2 si difieren significativamente de 3.x.

*Crear y usar entornos virtuales

Esta sección es opcional y solo es obligatoria para quienes deben usar un entorno virtual para este codelab (según la barra lateral de advertencia anterior). Si solo tienes Python 3 en tu computadora, puedes emitir este comando para crear un virtualenv llamado my_env (puedes elegir otro nombre si lo deseas):

virtualenv my_env

Sin embargo, si tienes Python 2 y 3 en tu computadora, te recomendamos instalar un virtualenv de Python 3, que puedes hacer con -p flag de la siguiente manera:

virtualenv -p python3 my_env

Para ingresar el entorno virtual que acabas de crear, “activa” de la siguiente manera:

source my_env/bin/activate

Para confirmar que estás en el entorno, observa que la solicitud de shell ahora aparece precedida por el nombre del entorno, es decir,

(my_env) $ 

Ahora deberías poder pip install todos los paquetes requeridos, ejecutar el código en este eivonment, etc. Otro beneficio es que, si lo arruinas por completo, llegas a una situación en la que tu instalación de Python está dañada, etc., puedes destruir todo este entorno sin afectar al resto del sistema.

5. Instala la biblioteca cliente de las API de Google para Python

Este codelab requiere el uso de la biblioteca cliente de las APIs de Google para Python, por lo que es un proceso de instalación simple o es posible que no tengas que realizar ninguna acción.

Anteriormente, recomendamos que consideres usar Cloud Shell para tu comodidad. Puedes completar todo el instructivo desde un navegador web en la nube. Otro motivo para usar Cloud Shell es que muchas herramientas de desarrollo populares y las bibliotecas necesarias ya están preinstaladas.

Instalar bibliotecas cliente

(opcional) Se puede omitir si usas Cloud Shell o un entorno local en el que ya instalaste las bibliotecas cliente. Solo necesitas hacerlo si estás desarrollando de manera local y aún no las instalaste (o no estás seguro de haberlas instalado). La forma más sencilla es usar pip (o pip3) para realizar la instalación (incluida la actualización de pip, si es necesario):

pip install -U pip google-api-python-client oauth2client

Confirmar instalación

Este comando instala la biblioteca cliente, así como los paquetes de los que depende. Ya sea que uses Cloud Shell o tu propio entorno, verifica que la biblioteca cliente esté instalada importando los paquetes necesarios y confirma que no haya errores de importación (ni resultados):

python3 -c "import googleapiclient, httplib2, oauth2client"

Si, en su lugar, usas Python 2 (desde Cloud Shell), recibirás una advertencia que indica que la compatibilidad dejó de estar disponible:

*******************************************************************************
Python 2 is deprecated. Upgrade to Python 3 as soon as possible.
See https://cloud.google.com/python/docs/python2-sunset

To suppress this warning, create an empty ~/.cloudshell/no-python-warning file.
The command will automatically proceed in seconds or on any key.
*******************************************************************************

Cuando ejecutes la prueba de importación (sin errores/resultados), podrás comenzar a comunicarte con las APIs de Google.

Resumen

Como este es un codelab introductorio, se da por sentado que es la primera vez que usas las APIs de Google y Google Workspace. Si ya tienes experiencia en la creación de proyectos y la creación de autorizaciones de usuario "ID de cliente de OAuth". Si es así, crea o reutiliza un proyecto existente, crea o reutiliza un ID de cliente de OAuth existente y omite los siguientes dos módulos y ve directamente a "Mostrar tus archivos de Drive y aplicación de carpetas" o ve a “Uso avanzado de devconsole” para revisar estos pasos con menos orientación.

6. Especifica el proyecto en la consola de Cloud

Una aplicación que usa las APIs de Google requiere un proyecto. Se administran en Google Cloud Developers Console o simplemente “devconsole”. En este codelab, solo usaremos la API de Google Drive, por lo que tenemos un vínculo mágico (más abajo en el paso 1) que hace lo siguiente:

  • Te lleva a devconsole
  • Se explica cómo crear un proyecto nuevo (o elegir uno existente).
  • Habilita automáticamente la API de Drive

¡Deja que lo hagamos!

  1. Navega a console.developers.google.com/start/api?id=drive y accede a tu Cuenta de Google.
  2. Si aún no tienes ningún proyecto, verás esta pantalla para aceptar las Condiciones del Servicio de las APIs de Google:

e3b2076ba58a7cd7.png Una vez que aceptes las condiciones, se creará un nuevo proyecto con el nombre "My Project". se creará y la API de Drive se habilitará automáticamente. 3. En cambio, si ya creaste un proyecto (¿quizás tu codelab anterior?), verás esta pantalla: 50b3b8ace6721f1f.png. Cuando hagas clic en el menú desplegable Crear un proyecto, elige un proyecto existente o crea uno nuevo. 69db3867445ad9e5.png Una vez que hayas elegido un proyecto (nuevo o existente), la API de Drive se habilitará automáticamente. 4. Sabrás que se habilitó la API de Drive con esta confirmación: 365e7de1377493bb.png 5. Haz clic en Ir a Credenciales para continuar con el siguiente paso.

7. *Autorizar solicitudes a la API (autorización de usuarios)

Puedes omitir esta sección si ya creaste credenciales de autorización de cuentas de usuario y estás familiarizado con el proceso. Es diferente de la autorización de la cuenta de servicio cuya técnica es diferente, así que continúe a continuación.

Introducción a la autorización (además de algo de autenticación)

Para realizar solicitudes a las APIs, tu aplicación debe tener la autorización adecuada. Autenticación, una palabra similar, describe las credenciales de acceso: te autenticas cuando accedes a tu Cuenta de Google con una cuenta y contraseña. Una vez realizada la autenticación, el paso siguiente es si estás (o mejor, tu código) está autorizado para acceder a datos, como archivos BLOB en Cloud Storage o archivos personales de un usuario en Google Drive.

Las APIs de Google admiten varios tipos de autorización, pero la más común para los usuarios de la API de Google Workspace es la autorización de usuarios, ya que la aplicación de ejemplo de este codelab accede a datos que pertenecen a los usuarios finales. Esos usuarios finales deben otorgar permiso para que tu app acceda a sus datos. Esto significa que tu código debe obtener credenciales de OAuth2 para la cuenta de usuario.

Si quieres obtener credenciales de OAuth2 para la autorización del usuario, vuelve al administrador de API y selecciona la opción "Credenciales" en el panel de navegación izquierdo:

Y33PZ_rJC1y7NH7Rrvq1kN_WxZ9CppDGJK8tTSaha298Jlm5pMqgnyweIO4oX34fcLy0_VI4gihYu5wpEM_LeJg1iDAFoidhUVyfqJX3QTzODQ_OGjHLXYBxPpUvihCJi9JGwvMREw

Cuando llegues, verás todas tus credenciales en tres secciones separadas:

ComE4qh76dwZbIehkDUm1QawHGia_qVe7w7rkmgbeo_wjWS--kqXCt4_zvm55iy_RXA8dKYKvBxIKazkcYQ8871SA_kNslbvum_n1Ju4k9qJJSMtDhPAnofcvIlqlKm1nu7PBQhmEg

El primero es para las claves de API, el segundo para los ID de cliente de OAuth 2.0 y las últimas cuentas de servicio de OAuth2; usaremos el que está en el medio.

Crea las credenciales

En la página Credenciales, haz clic en el botón + Crear credenciales en la parte superior. Aparecerá un cuadro de diálogo en el que puedes seleccionar “ID de cliente de OAuth”:

C7jTddfrczo3GewPGCxbxX13GawtFc6FGvAPFusPc_IW-tr5M6xgXd1OzOHOUTo86WDa9fXiCITogv9b3wAgOcYM7xS3AmVNaPdTxbAynIe_sia2_x3LEPsBrdbX8NjeI2WaHRioOA

En la siguiente pantalla, verás 2 acciones: configurar la "pantalla de consentimiento" de autorización de tu app. y elegir el tipo de aplicación:

El9_aqPQ6Q9hOsOp3JUC5qnCm_A_BVI-oCEfPk_MsvybnWBmC5lT6CtXSoZ7EQoFzrcBEzo4zF9s8CbhXyo0e-eSY3pZ1zg0BRvT0YssMMhbzEG-gP_jiO8v9q9HYTjg-QW5jJ0RDA

Si no configuraste una pantalla de consentimiento, verás la advertencia en la consola y deberás hacerlo ahora. (Omite los siguientes pasos si ya se configuró tu pantalla de consentimiento).

Haz clic en "Configurar pantalla de consentimiento". donde seleccionas una opción "Externo" (o "Interna" si eres cliente de Google Workspace [anteriormente "Google Workspace")]:

5w-9R6gPvUHFzODZxXy-0GEhL8ZGDGNea3QtMp1FFYDv5DJ_MIDD21NEh3CzI-GKNzy6bkhH7bohxOG8icQTegiWlavOQhQqhSy7K31Ma3YTI9aAP3P-LmTBanPslX1cnjKLVZBi8A

Ten en cuenta que, para los fines de este ejercicio, no importa cuál elijas porque no publicarás la muestra de tu codelab. La mayoría de las personas seleccionarán la opción "Externo" que te llevará a una pantalla más compleja, pero en realidad solo necesitas completar el campo "Nombre de la aplicación" en la parte superior:

8e9z_RQz8lumYbDIcBvm57_Gpptn9uhrVQHoRzJ01AJNOFmXloDO7Eg3hhzJZZIU2F5rR0MxTCw-oXVFCq683xUwD4O33pXeuFsOMtM8EZhyjDoYc8Kv4hEoaG0Ztq9ePx6De7YmfA

Lo único que necesitas en este momento es solo el nombre de una aplicación, así que elige a alguien que refleje el codelab que estás haciendo y, luego, haz clic en Guardar.

Creación de un ID de cliente de OAuth (autenticación de cuenta de usuario)

Ahora, regresa a la pestaña Credenciales para crear un ID de cliente de OAuth2. Aquí, verás una variedad de IDs de cliente de OAuth que puedes crear:

f8reuhsxOUNLcVrEIyRVsmP_fX_ceIlLvEKql1YHwSPW9jk9Mm9fJ0UlfUoi8eRN3QQXar4xtpo071zj6LSczNN7TYY8zB96Dn6ICZuvCAtjIgJSKdMSlX-ZhMuSWFpxxv661aUemw

Estamos desarrollando una herramienta de línea de comandos, que es Other, así que elige esa opción y haz clic en el botón Create. Elige un nombre de ID de cliente que refleje la aplicación que estás creando o simplemente elige el nombre predeterminado, que suele ser "Otro cliente N".

Guardando tus credenciales

  1. Aparecerá un diálogo con las credenciales nuevas. Haz clic en OK para cerrar

rAwekj_GNEuVwGbZOYYlGDQjlu4flE61OPEZIUmwMI5vGi3W365UwVCxi0mVNhg4WZSSczZywrZZ6NDM_U0FJ4b-TOIMEC189uybOJjgn8F_axesVMopel9RlehRBXdEFhN4d41WGQ

  1. De nuevo en la página Credenciales, desplázate hacia abajo hasta "IDs de cliente de OAuth2". En esta sección, busca el ícono de descarga aAmje6kT_xSUM4BKIlPREpjosx7C_xxwpWqBgiGVfVWxQ8nnQOfxTPhuU0QwSnmbjykZffGrqyP1nnKrEQ7D7OqYaGw_Uzscs9gX2RwwP4AmvtHIiTFLa0gkprzJSjG9pQSx7HtmSQ en la parte inferior derecha del ID de cliente que acabas de crear. x-vb-sKZy-X8a1X4uTsBWotSd4wn0PGt4mHMNv6DUrq5J5ihpujUyTiIVr5SHw0p2ZDy0KTP-zqOaFX-Az9BYDWG90KNFmsRLTUOo1mUVk7dYRJiK3VwYJNU0bbxjsbbpqcTr5_oLw
  2. Se abrirá un diálogo para guardar un archivo llamado client_secret-LONG-HASH-STRING.apps.googleusercontent.com.json, probablemente en tu carpeta Descargas. Te recomendamos acortarla a un nombre más fácil, como client_secret.json (que es lo que usa la app de ejemplo) y, luego, guardarlo en el directorio o carpeta donde crearás la app de ejemplo en este codelab.

Resumen

Con las credenciales a mano, ya puedes acceder a la API de Drive desde tu aplicación. Sin embargo, ten en cuenta que el propósito del ID de cliente de OAuth es que los usuarios deban otorgar permiso a tu aplicación para que acceda a sus datos en Google Drive.

NOTA: Se proporcionan más detalles sobre cómo crear proyectos, habilitar APIs y obtener credenciales de forma manual, es decir, sin el uso del "asistente" que se muestra más arriba, estará disponible una vez que finalice este codelab para su posterior estudio.

8. Cómo mostrar tus archivos de Drive y aplicación de carpetas

Ya sea en tu entorno de desarrollo local o en Cloud Shell, en el mismo directorio en el que se encuentra tu archivo de credenciales client_id.json, crea un nuevo archivo de Python llamado drive_list.py y agrega las siguientes líneas de código:

from __future__ import print_function

from googleapiclient import discovery
from httplib2 import Http
from oauth2client import file, client, tools

SCOPES = 'https://www.googleapis.com/auth/drive.readonly.metadata'
store = file.Storage('storage.json')
creds = store.get()
if not creds or creds.invalid:
    flow = client.flow_from_clientsecrets('client_id.json', SCOPES)
    creds = tools.run_flow(flow, store)
DRIVE = discovery.build('drive', 'v3', http=creds.authorize(Http()))

files = DRIVE.files().list().execute().get('files', [])
for f in files:
    print(f['name'], f['mimeType'])

Estructura de la aplicación

Esta aplicación tiene tres secciones principales:

  1. Importaciones de Python para incorporar la funcionalidad de la biblioteca
  2. Obtén credenciales de la aplicación
  3. Recuperar archivo y nombres de carpetas y Tipos de MIME en la carpeta de Google Drive del usuario y publicidad gráfica

NOTA: Una vez concluido este codelab, podrás acceder a una explicación detallada del código y revisar una explicación detallada al respecto para realizar un estudio más detallado.

Ejecuta la aplicación

Asígnale un nombre al archivo, como drive_list.py. La primera vez que ejecute la secuencia de comandos, no tendrá autorización para acceder a los archivos del usuario en Drive (el suyo). El resultado se ve de la siguiente manera con la ejecución pausada:

$ python3 ./drive_list.py
/usr/local/lib/python3.6/site-packages/oauth2client/_helpers.py:255: UserWarning: Cannot access storage.json: No such file or directory
 warnings.warn(_MISSING_FILE_MESSAGE.format(filename))

Your browser has been opened to visit:
  https://accounts.google.com/o/oauth2/auth?client_id=LONG-STRING.apps.googleusercontent.com&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2F&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.readonly.metadata&access_type=offline&response_type=code

If your browser is on a different machine then exit and re-run this
application with the command-line parameter

 --noauth_local_webserver

Desde el entorno de desarrollo local

La secuencia de comandos de la línea de comandos se detiene cuando se abre una ventana del navegador y te muestra el diálogo de permisos de OAuth2:

c2648f37bcb7a0c1.png

Aquí es donde la aplicación le solicita al usuario los permisos que solicita el código (a través de la variable SCOPES). En este caso, es la capacidad de ver los metadatos del archivo desde la unidad de Google Drive del usuario. Sí, en tu código, estos alcances de permisos aparecen como URIs, pero se traducen al idioma que se especifica en tu configuración regional en la ventana de diálogo del flujo de OAuth2. El usuario debe dar una autorización explícita para los permisos solicitados; de lo contrario, se debe ejecutar el "flujo de ejecución" parte del código arrojará una excepción y la secuencia de comandos no continuará.

NOTA: Algunos usuarios tienen varios navegadores, y es posible que la solicitud de autorización aparezca en un navegador no preferido. Si ese es el caso, simplemente copia la URL completa de la ventana del navegador que no quieras usar y pégala en la barra de direcciones del navegador que quieras usar.

Desde Cloud Shell

Si no estabas prestando atención y ejecutaste el programa en Cloud Shell, no se abrió ninguna ventana del navegador, lo que te dejó atascado. Observa que el mensaje de diagnóstico que aparece en la parte inferior está dirigido a ti. Este es el siguiente:

If your browser is on a different machine then exit and re-run this
application with the command-line parameter

 --noauth_local_webserver

Cuando lo ejecutes de esta manera, obtendrás el siguiente resultado:

$ python3 drive_list.py --noauth_local_webserver
/usr/local/lib/python3.7/site-packages/oauth2client/_helpers.py:255: UserWarning: Cannot access storage.json: No such file or directory
 warnings.warn(_MISSING_FILE_MESSAGE.format(filename))

Go to the following link in your browser:

  https://accounts.google.com/o/oauth2/auth?client_id=xxx.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.readonly.metadata&access_type=offline&response_type=code

Enter verification code:

Si sigues las instrucciones y vas a otra pestaña del navegador con esa URL, obtendrás una experiencia casi idéntica a la descrita anteriormente para los entornos de desarrollo locales. La diferencia clave está al final, donde verás una pantalla más con el código de verificación que debes ingresar en Cloud Shell:

f6da2c335fb7c6a.png

Corta y pega este código en la ventana de terminal.

Resumen

Una vez que el usuario haga clic en Permitir o se pegue el código de verificación en el mensaje, la app (continuará) ejecutándose, por lo que se espera ver un resultado que incluya archivos o carpetas de Drive y sus MIME. A continuación, se incluye un ejemplo de una de nuestras cuentas de prueba:

$ python3 ./drive_list.py
Travel expenses application/vnd.google-apps.spreadsheet
Gmail Add-ons codelab application/vnd.google-apps.script
Google Workspace Developer Intro application/vnd.google-apps.presentation
Baseball Sheets application/vnd.google-apps.folder
My Resume application/vnd.google-apps.document
  . . .

Ten en cuenta que, en las ejecuciones sucesivas, ya no se te solicita autorización (ya que las bibliotecas auth la almacenaron en caché), y pasarás directamente al resultado. ¿No es emocionante ver tus documentos en una terminal por primera vez? ¡Creemos que sí!

9. Conclusión

Ya tienes todo listo para obtener más información sobre la API de Drive o explorar otros servicios de Google Workspace (Gmail, Documentos, Hojas de cálculo, Presentaciones, Calendario de Google) y otras APIs de Google (Maps, Analytics, YouTube, etcétera). ¡Felicitaciones por haber llegado al final!

El código que aparece en este codelab también está disponible en su repositorio de GitHub, en github.com/googlecodelabs/gsuite-apis-intro. (Nuestro objetivo es mantener este codelab sincronizado con el repo). ¿Todo listo para avanzar? Aquí tienes varios recursos a los que puedes acceder para ayudarte a profundizar en el material que vimos en este codelab, o si quieres ampliar tu mente y explorar otras formas de acceder a las tecnologías de Google de manera programática.

Como se indicó anteriormente, si no eres un desarrollador habitual de Python, te invitamos a rehacer este ejemplo de codelab en tu lenguaje de desarrollo favorito. Las bibliotecas cliente para lenguajes compatibles están disponibles aquí.

Estudio adicional

Ahora que ya tienes experiencia con la API de Drive, a continuación, te presentamos algunos ejercicios recomendados para desarrollar aún más tus habilidades:

  1. Archivos ZIP: Escribe una aplicación que cree una copia de seguridad de varios archivos ZIP en Drive y los descomprima sobre la marcha para que cada nombre de archivo ZIP sea el nombre de la carpeta en la que se encuentran esos archivos. CRÉDITO ADICIONAL: Admite archivos ZIP recurrentes dentro de otros archivos ZIP con carpetas de Drive incorporadas en otras carpetas. Si te das por vencido, consulta esta app de ejemplo de Node.js.
  2. Álbumes de fotos: Escribe el comienzo de una herramienta de generación de álbumes de fotos que sube varias imágenes a Google Drive y las organiza en carpetas separadas por marca de tiempo y la ubicación geográfica. CRÉDITO ADICIONAL: Encuentra una biblioteca de manipulación de imágenes de código abierto y une todas las fotos de cada carpeta para representar eventos que puedas haber experimentado (un viaje, una cena, etcétera).
  3. Explora GCP: Escribe una app que conecte Google Workspace y Google Cloud Platform (GCP). Escribir una herramienta que admita archivos de imagen de copia de seguridad de Google Drive a Google Cloud Storage (GCS), otro "almacenamiento de archivos en la nube" de Google Cloud. Lo creas o no, usar GCS será más sencillo que Drive debido a sus bibliotecas cliente avanzadas.
  4. Analiza y registro: Extiende tu solución al tercer paso. Para ello, analiza cada imagen de copia de seguridad pasándola a la API de Google Cloud Vision y obtén las “etiquetas” principales (3, 5 y 10). de lo que la API ve en esas imágenes. Para cada imagen, escribe una fila en una hoja de cálculo de Google que contenga el análisis de Cloud Vision y la ubicación de la copia de seguridad en GCS. Si te das por vencido, consulta este codelab de Python.

10. Recursos adicionales

Documentación

Novedades y actualizaciones

Otros codelabs

Introductorio

Intermedio

Avanzado

Apps de referencia

11. *Explicación detallada de la aplicación

Esta sección opcional se puede usar como autoaprendizaje después de que finalice la sesión para llenar los vacíos que puedan haber surgido o para realizar más investigaciones.

Importaciones de Python para incorporar la funcionalidad de la biblioteca

from __future__ import print_function

from googleapiclient import discovery
from httplib2 import Http
from oauth2client import file, client, tools
  • La primera sentencia import permite que este código se ejecute en Python 2 y se puede descartar por completo si solo usas Python 3.
  • Una pauta de estilo de Python es separar las importaciones de la biblioteca estándar de las importaciones de módulos de terceros, para eso se usa la línea en blanco.
  • Las siguientes tres importaciones aportan las clases necesarias de la biblioteca cliente de las APIs de Google... son necesarias para que podamos escribir esta app. En resumen, esto es lo que hacen:
  • googleapiclient se enfoca en conectarse a las APIs de Google
  • httplib2 proporciona un cliente HTTP para que la app lo use.
  • oauth2client nos ayuda a administrar credenciales de OAuth2.

Autorizar y obtener credenciales de aplicaciones

SCOPES = 'https://www.googleapis.com/auth/drive.readonly.metadata'
store = file.Storage('storage.json')
creds = store.get()
if not creds or creds.invalid:
    flow = client.flow_from_clientsecrets('client_id.json', SCOPES)
    creds = tools.run_flow(flow, store)
DRIVE = discovery.build('drive', 'v3', http=creds.authorize(Http()))
  • Los SCOPES de la aplicación son los permisos que una app le solicitará al usuario que la ejecute. Para proteger los datos de los usuarios, las apps no pueden ejecutarse sin que se les otorgue permiso
  • Una práctica recomendada es usar los permisos más restrictivos que necesita tu app para funcionar. ¿Por qué?
  • ¿No es molesto que una app solicite un gran conjunto de permisos cuando la instalas o la ejecutas? ¿Sabía que Ahora, estás del otro lado de la moneda y les pides a los usuarios todos estos permisos. El uso de alcances más restrictivos hace que los usuarios se sientan mejor cuando instalan tu app, ya que solicitas menos acceso.
  • La mayoría de los alcances parecen URLs largas, y el alcance de los metadatos de Drive no es la excepción.
SCOPES = 'https://www.googleapis.com/auth/drive.readonly.metadata'
  • Se requiere un token para que las apps se comuniquen con los servidores de Google. Los tokens válidos que provienen de Google se guardarán en el archivo de almacenamiento de tokens, storage.json. Si no guardas estos tokens, deberás volver a autorizar tu app cada vez que la ejecutes.
store = file.Storage('storage.json')
  • Esta app primero verifica si ya tenemos credenciales válidas en el almacenamiento (consulta el condicional de la declaración if).
creds = store.get()
if not creds or creds.invalid:
  • Si no tienes credenciales o ya vencieron, se debe crear un nuevo flujo de autorización [a través de oauth2client.client.flow_from_clientsecrets()] a partir de tu ID de cliente de OAuth y Secret en el archivo client_id.json que descargaste].
if not creds or creds.invalid:
    flow = client.flow_from_clientsecrets('client_id.json', SCOPES)
  • Una vez que tu app tenga un flujo, deberá ejecutarse para presentarle la pantalla de permisos de OAuth2 al usuario [a través de oauth2client.tools.run_flow()], como se describió e ilustrado anteriormente.
    creds = tools.run_flow(flow, store)
  • Si haces clic en Permitir, los usuarios darán su consentimiento para que tu app acceda a los metadatos de sus archivos de Google Drive y los servidores de Google mostrarán tokens para acceder a la API. Se muestran como creds y se almacenan en caché en el archivo storage.json.
  • En este punto, tu app ya tiene credenciales válidas para realizar llamadas a la API. Llamar a googleapiclient.discovery.build() crea un extremo de servicio para la API que estás usando.
  • Para usar build(), pasa el nombre de la API ('drive') y versión deseada (actualmente, 'v3').
  • El parámetro final es un cliente HTTP que se usa para llamadas a la API encriptadas.
DRIVE = discovery.build('drive', 'v3', http=creds.authorize(Http()))

Recuperar y mostrar los primeros 100 archivos o carpetas de Drive y MIMEtypes)

files = DRIVE.files().list().execute().get('files', [])
for f in files:
    print(f['name'], f['mimeType'])
  • La siguiente línea de código llama al método list() de la colección files() para que la API de Drive compile la solicitud, a la que se llama inmediatamente con execute(). Se muestra una dict de Python desde la cual solicitamos la clave 'files' para obtener el archivo 100. nombres de las carpetas de la unidad de Google Drive del usuario (o menos si tienes menos archivos).
  • ¿Por qué el número 100? Es el valor predeterminado de DRIVE.files().list(). Si quieres cambiar este número, por ejemplo, a 10 archivos o 1,000, agrega el parámetro pageSize a tu solicitud: DRIVE.files().list(pageSize=10). Aquí encontrarás la documentación para ver más opciones.
  • La parte final de la secuencia de comandos recorre cada archivo y muestra sus nombres. y tipos de MIME de archivo.

Ya escribiste tu primera aplicación que usa una API de REST de Google. Felicitaciones. Además de las importaciones y el código de autorización, esta secuencia de comandos es solo un par de líneas de código (lo que puedes ver arriba). La mayoría de las APIs de Google funcionan de manera similar y solo necesitarás crear extremos de servicio para cada uno de los que quieras usar.

Cómo usar más de una API de Google en una app

Sí, puedes usar más de una API en la misma app. Este es un fragmento de código de Python para una app que reutiliza el mismo cliente HTTP y crea extremos de servicio para tres APIs de Google (sí, también con 3 SCOPES diferentes):

SCOPES = (
    'https://www.googleapis.com/auth/drive',
    'https://www.googleapis.com/auth/spreadsheets.readonly',
    'https://www.googleapis.com/auth/presentations',
)

    . . .

HTTP   = creds.authorize(Http())
DRIVE  = discovery.build('drive',  'v3', http=HTTP)
SHEETS = discovery.build('sheets', 'v4', http=HTTP)
SLIDES = discovery.build('slides', 'v1', http=HTTP)

Imagina que este código puede ser parte de una app que genera varias presentaciones (API de Presentaciones) basadas en datos de hojas de cálculo (API de Hojas de cálculo) y usa una plantilla de diapositivas que se copia (API de Drive) para cada presentación generada. Si bien esa app no existe, deberías poder compilar algo similar usando dos muestras existentes que el equipo de Google Workspace creó como componentes básicos:

  • Reemplazar texto y imágenes en diapositivas ( entrada de blog y video); usa la API de Drive para copiar una presentación de plantillas de diapositivas y, luego, emplea la API de Presentaciones para cambiar el texto y marcadores de posición de imagen
  • Generar diapositivas a partir de datos de hojas de cálculo ( entrada de blog y video): Lee datos de una hoja de cálculo (API de Hojas de cálculo) y crea diapositivas (API de Presentaciones) en función de esos datos

Tu desafío: crear esa app

12. *Uso avanzado de devconsole

En esta sección opcional, describimos cómo crear proyectos en devconsole, habilitar APIs y obtener credenciales, todo sin usar el asistente, como se explicó anteriormente en el codelab. Esto es para usuarios intermedios lo suficientemente cómodos como para hacerlo manualmente o que desean aprender a hacerlo.

Especifica el proyecto en la consola de Cloud

Cada vez que escribes una aplicación con las APIs de Google, necesitas tener un proyecto. Puedes reutilizar un proyecto existente o crear uno nuevo. Eso sucede en la consola de Cloud. Algunos codelabs proporcionan un vínculo mágico (es decir, como un asistente de configuración) que te ayuda a avanzar rápidamente y omite muchos de los pasos necesarios. Sin embargo, no todos lo hacen, por lo que están destinadas a brindar instrucciones generales sobre cómo crear proyectos.

Puedes crear proyectos desde la mayoría de las pantallas en la consola de Cloud, siempre y cuando hayas accedido con tus credenciales de Google y hayas visto un menú desplegable de proyectos en la parte superior de la consola. Ten en cuenta que la mayoría de las capturas de pantalla que se muestran aquí son tomadas del Administrador de API, también conocido como Play Console (se puede acceder fácilmente si haces clic en "Administrador de API" en el panel de navegación izquierdo o diriges directamente tu navegador a console.developers.google.com).

  1. Si aún no tienes proyectos, es posible que se te redireccione a...
  2. La página Panel (Dashboard): Gwkk2zcSPOHlRzCGsmBDqfdsEMopOgJyJzh6TunpVFOP3R7bN0-iGt81mNueGxoAei6wCqgQBENsamw3v4ozZJtQgKva6v_90dYJ-rvQjUn9U89avlG1tepDYT9HHjZmYixLD0hACQ
  3. la página Biblioteca (Library): NqfejNuo6fJfiTXERiCNAFTnno1JGgudf7M2zVyM9DzXP4E6ruoVxHvFQOPW-HFL5SZvm-WohzPTf7njBS9VCwuu4XnwhQ7CB83tNkH0jsYEx31hO6UMBVHPJS1BMjidg5kh-c7MEw
  4. o una página completamente en blanco: LcJ-wgOFlYa9uZm46fwUkfFTkXIcbhuk607KDaCz8_8NM09RHblz6T5JoWhH7uwSE2q6hKW9XnlutzUqd8yvRAEXFzQjqNNTuscj19yKGkMjbPixeUB8-F1y4Tz7eCpeOEzBUw70yw Si te aparece esta tercera, actualiza el navegador para ir a la página Biblioteca.
  5. En las páginas Panel o Biblioteca, haz clic en el selector de proyectos que se encuentra en la parte superior de la página: 3f5REVgveKDcJ8wG2C9gduFBftJb6RNtdQQJ79vwFmQCMU8_t_vxja8jPGIK-ZrpjSqGkRkY4k02xth-7FWNPj4GZUdcBmKQe97LporGaLvwIFzzR5wtH5mEEoA1a74_fnrh9YAqqg
  6. A continuación, verás el cuadro de diálogo del selector. Haz clic en el signo "+" En el lado derecho, para crear un proyecto nuevo: jNzs1bp1eWkpJT3S3AGTm9ejYT2mB3rEd1QajOhO0AR3YxcwaCcF4WlMzdmgOFtlIPQfGEMUysM6m7r89_Fc0Dyy--mjPhCEKdLRZjaozLOvoZOzKtIxdMoWFHCVc2N1K-2HES_k4Q
  7. Después de hacer clic en el signo "+", aparecerá la página New Project. Todas las cuentas personales tienen 12 proyectos de forma predeterminada. Antes de crear tu primer proyecto, deberás aceptar las Condiciones del Servicio de las APIs de Google: bCB0sQ6k5nfrajlhc-S61MVzyYYBqu6XVNKeRDzXNvKZUNlSeVJSLbkP8sPNi5A-5hWIFzhsQ5R_ER9BBb2bE_B02c1neY2iO5SSe6XDFldppsXbkWm63-0l3ugtSDQS-TeM1d773w

Una vez que lo hagas, las preguntas sobre las Condiciones del Servicio y la solicitud por correo electrónico desaparecerán cuando crees proyectos futuros:

Pj31ZKoAAnw_JiSz8io7e4yC2Xh3voETusvePf0DS64IMB4aVy9CtANg2r-2NgPxLjbqcfd-Vs33ZNdN7Diz7sZo3j-MKS83SuNXlhGT8ivdhpIvizP1dsYeK1MBQ4HlDZA5aQkIhg 5. Si creaste al menos un proyecto en el pasado, después de acceder, se te dirigirá al panel del último proyecto en el que trabajaste. Luego, crea un proyecto nuevo como lo harías cuando eliges Selecciona un proyecto. +. 6. Una vez que se haya creado el nuevo proyecto, volverás a la página Panel: ana4q1H1Q8KNTBEVb62Cc6NVA8VZbxb6BLgf4-bLqLV-p7n8UWv3WW3FN-49CE0x1kARav3pelxOBwNuUDELmitMRFhUNXuaw9-CH9DO3Lek_ifnaI3ZsxSy67Z1UsBO95SPFqlf8Q

Ya creaste un proyecto correctamente y estás listo para avanzar eligiendo las APIs que quieres usar en tu proyecto.

Habilita las APIs de Google

Antes de que puedas comenzar a usar las APIs de Google, debes habilitarlas. En el siguiente ejemplo, se muestra lo que harías para habilitar la API de Cloud Vision. En este codelab, es posible que uses una o más APIs, y debes seguir pasos similares para habilitarlas antes de usarlas.

Desde Cloud Shell

En Cloud Shell, puedes habilitar la API con el siguiente comando:

gcloud services enable vision.googleapis.com

Desde la consola de Cloud

También puedes habilitar la API de Vision en el Administrador de API. En la consola de Cloud, ve al Administrador de API y selecciona “Biblioteca”.

mg03by3QV6kco0rVVV_8IA6VobAoMG4Yoyl-PofNM0dHK8IcoDmpoLUwWeiKFFjpxHWlS1td5-0n7kNkfqHVhSsTSW_hUMvRu3D72g3LCFb7u4v4bla_Z4XyonTVK8PpigMLJcE01g

En la barra de búsqueda, comienza a escribir "vision", Luego, selecciona la API de Vision cuando aparezca. Mientras escribes, es posible que se vea de la siguiente manera:

B6fWWsVhymufgQx6oGIq4sgukK6JQ1VoguVOrSNf_anQb6Cv6RTLtsjx5Qdeu3-uO8-8PyqwZLYdDDjYW5o56R47cnsd_88RKTMqNkpFeDESW2hmBM_7FK2UAMz1_216yXERYSp_JA

Selecciona la API de Cloud Vision para que aparezca el diálogo que ves a continuación y, luego, haz clic en “Habilitar” :

D-MONPLi0UWH6Dp607Dod6JF-LJQZIiUQEPQNKM4Y0mSt09KfipbeeXRAE6cokArBYTfL9VQoONc4L0jlnsUYLsNytQIPfSKr9lCDrXmrrx-1w64LeWWa-byDxcyYWZdCI0mAcVzBw

Costo

Si bien muchas APIs de Google se pueden usar sin costo, el uso de GCP (productos y APIs) no es gratuito. Cuando habilites la API de Vision (como se describió anteriormente), es posible que se te solicite una cuenta de facturación activa. El usuario debe hacer referencia a la información de precios de la API de Vision antes de habilitarla. Ten en cuenta que algunos productos de Google Cloud Platform (GCP) cuentan con la función "Siempre gratuito". del nivel de servicio que debes superar para poder facturar. A los fines de este codelab, cada llamada a la API de Vision se considera en ese nivel gratuito y, siempre que te mantengas dentro de sus límites agregados (en cada mes), no deberías incurrir en cargos.

Algunas APIs de Google, p.ej., Google Workspace cubre el uso de una suscripción mensual, por lo que no hay facturación directa por el uso de las APIs de Gmail, Google Drive, Calendario, Documentos, Hojas de cálculo y Presentaciones, por ejemplo. Los diferentes productos de Google se facturan de manera diferente, así que asegúrate de consultar la documentación de tu API para obtener esa información.

Resumen

En este codelab, solo necesitas activar la API de Google Drive, por lo que debes seguir las instrucciones anteriores y buscar "Drive". Avanza cuando esté habilitada.

Autorizar solicitudes a la API (autorización de usuarios)

Introducción a la autorización (además de algo de autenticación)

Para realizar solicitudes a las APIs, tu aplicación debe tener la autorización adecuada. Autenticación, una palabra similar, describe las credenciales de acceso: te autenticas cuando accedes a tu Cuenta de Google con una cuenta y contraseña. Una vez realizada la autenticación, el paso siguiente es si estás (o mejor, tu código) está autorizado para acceder a datos, como archivos BLOB en Cloud Storage o archivos personales de un usuario en Google Drive.

Las APIs de Google admiten varios tipos de autorización, pero la más común para los usuarios de la API de Google Workspace es la autorización de usuarios, ya que la aplicación de ejemplo de este codelab accede a datos que pertenecen a los usuarios finales. Esos usuarios finales deben otorgar permiso para que tu app acceda a sus datos. Esto significa que tu código debe obtener credenciales de OAuth2 para la cuenta de usuario.

Si quieres obtener credenciales de OAuth2 para la autorización del usuario, vuelve al administrador de API y selecciona la opción "Credenciales" en el panel de navegación izquierdo:

Y33PZ_rJC1y7NH7Rrvq1kN_WxZ9CppDGJK8tTSaha298Jlm5pMqgnyweIO4oX34fcLy0_VI4gihYu5wpEM_LeJg1iDAFoidhUVyfqJX3QTzODQ_OGjHLXYBxPpUvihCJi9JGwvMREw

Cuando llegues, verás todas tus credenciales en tres secciones separadas:

ComE4qh76dwZbIehkDUm1QawHGia_qVe7w7rkmgbeo_wjWS--kqXCt4_zvm55iy_RXA8dKYKvBxIKazkcYQ8871SA_kNslbvum_n1Ju4k9qJJSMtDhPAnofcvIlqlKm1nu7PBQhmEg

El primero es para las claves de API, el segundo para los ID de cliente de OAuth 2.0 y las últimas cuentas de servicio de OAuth2; usaremos el que está en el medio.

Crea las credenciales

En la página Credenciales, haz clic en el botón + Crear credenciales en la parte superior. Aparecerá un cuadro de diálogo en el que puedes seleccionar “ID de cliente de OAuth”:

C7jTddfrczo3GewPGCxbxX13GawtFc6FGvAPFusPc_IW-tr5M6xgXd1OzOHOUTo86WDa9fXiCITogv9b3wAgOcYM7xS3AmVNaPdTxbAynIe_sia2_x3LEPsBrdbX8NjeI2WaHRioOA

En la siguiente pantalla, verás 2 acciones: configurar la "pantalla de consentimiento" de autorización de tu app. y elegir el tipo de aplicación:

El9_aqPQ6Q9hOsOp3JUC5qnCm_A_BVI-oCEfPk_MsvybnWBmC5lT6CtXSoZ7EQoFzrcBEzo4zF9s8CbhXyo0e-eSY3pZ1zg0BRvT0YssMMhbzEG-gP_jiO8v9q9HYTjg-QW5jJ0RDA

Si no configuraste una pantalla de consentimiento, verás la advertencia en la consola y deberás hacerlo ahora. (Omite los siguientes pasos si ya se configuró tu pantalla de consentimiento).

Haz clic en "Configurar pantalla de consentimiento". donde seleccionas una opción "Externo" (o "Interna" si eres cliente de Google Workspace):

5w-9R6gPvUHFzODZxXy-0GEhL8ZGDGNea3QtMp1FFYDv5DJ_MIDD21NEh3CzI-GKNzy6bkhH7bohxOG8icQTegiWlavOQhQqhSy7K31Ma3YTI9aAP3P-LmTBanPslX1cnjKLVZBi8A

Ten en cuenta que, para los fines de este ejercicio, no importa cuál elijas porque no publicarás la muestra de tu codelab. La mayoría de las personas seleccionarán la opción "Externo" que te llevará a una pantalla más compleja, pero en realidad solo necesitas completar el campo "Nombre de la aplicación" en la parte superior:

8e9z_RQz8lumYbDIcBvm57_Gpptn9uhrVQHoRzJ01AJNOFmXloDO7Eg3hhzJZZIU2F5rR0MxTCw-oXVFCq683xUwD4O33pXeuFsOMtM8EZhyjDoYc8Kv4hEoaG0Ztq9ePx6De7YmfA

Lo único que necesitas en este momento es solo el nombre de una aplicación, así que elige a alguien que refleje el codelab que estás haciendo y, luego, haz clic en Guardar.

Creación de un ID de cliente de OAuth (autenticación de cuenta de usuario)

Ahora, regresa a la pestaña Credenciales para crear un ID de cliente de OAuth2. Aquí, verás una variedad de IDs de cliente de OAuth que puedes crear:

f8reuhsxOUNLcVrEIyRVsmP_fX_ceIlLvEKql1YHwSPW9jk9Mm9fJ0UlfUoi8eRN3QQXar4xtpo071zj6LSczNN7TYY8zB96Dn6ICZuvCAtjIgJSKdMSlX-ZhMuSWFpxxv661aUemw

Estamos desarrollando una herramienta de línea de comandos, que es Other, así que elige esa opción y haz clic en el botón Create. Elige un nombre de ID de cliente que refleje la aplicación que estás creando o simplemente elige el nombre predeterminado, que suele ser "Otro cliente N".

Guardando tus credenciales

  1. Aparecerá un diálogo con las credenciales nuevas. Haz clic en OK para cerrar

rAwekj_GNEuVwGbZOYYlGDQjlu4flE61OPEZIUmwMI5vGi3W365UwVCxi0mVNhg4WZSSczZywrZZ6NDM_U0FJ4b-TOIMEC189uybOJjgn8F_axesVMopel9RlehRBXdEFhN4d41WGQ

  1. De nuevo en la página Credenciales, desplázate hacia abajo hasta "IDs de cliente de OAuth2". En esta sección, busca el ícono de descarga aAmje6kT_xSUM4BKIlPREpjosx7C_xxwpWqBgiGVfVWxQ8nnQOfxTPhuU0QwSnmbjykZffGrqyP1nnKrEQ7D7OqYaGw_Uzscs9gX2RwwP4AmvtHIiTFLa0gkprzJSjG9pQSx7HtmSQ en la parte inferior derecha del ID de cliente que acabas de crear. x-vb-sKZy-X8a1X4uTsBWotSd4wn0PGt4mHMNv6DUrq5J5ihpujUyTiIVr5SHw0p2ZDy0KTP-zqOaFX-Az9BYDWG90KNFmsRLTUOo1mUVk7dYRJiK3VwYJNU0bbxjsbbpqcTr5_oLw
  2. Se abrirá un diálogo para guardar un archivo llamado client_secret-LONG-HASH-STRING.apps.googleusercontent.com.json, probablemente en tu carpeta Descargas. Te recomendamos acortarla a un nombre más fácil, como client_secret.json (que es lo que usa la app de ejemplo) y, luego, guardarlo en el directorio o carpeta donde crearás la app de ejemplo en este codelab.