Cómo incrustar una carpeta de Google Drive en una página web

10 minutos de lectura

Avatar de usuario de Mori
mori

Tengo una carpeta en Google Drive que me gustaría incrustar en mi página web. No puedo encontrar un código de inserción ni nada documentado en los artículos de ayuda de Google Drive.

  • ¿Hay alguna manera de usar <embed> para autodimensionar el contenido mejor que un <iframe>?

    – Merchako

    8 mayo 2019 a las 21:17

  • Para una mejor alternativa (con capacidad para navegar a subcarpetas y vista previa de archivos), vea esto: medium.com/@thesumitsingh/…

    – sy

    28 ene a las 20:30

Avatar de usuario de Mori
mori

  1. Ve a tu Google Drive.
  2. Haga clic derecho en la carpeta.
  3. Seleccionar Conseguir enlace.
  4. Abre el Acceso general Menú desplegable.
  5. Seleccionar Cualquiera con el link para publicar su carpeta.
  6. Hacer clic Copiar link y luego Hecho.
    Obtendrá una URL como la siguiente:
    https://drive.google.com/drive/folders/1qGwpjmQIQO8rN1odas0njDSf72VRrTCa?usp=compartir_enlace

    Puede ver su ID de carpeta en negrita: 1qGwpjmQIQO8rN1odas0njDSf72VRrTCa

  7. Las carpetas de Google Drive se pueden incrustar y mostrar en list y grid puntos de vista. Ponga el ID de la carpeta en uno de los siguientes iframe fuentes:

Vista de la lista

<iframe src="https://drive.google.com/embeddedfolderview?id=FOLDER-ID#list" style="width:100%; height:600px; border:0;"></iframe>

Vista en cuadrícula

<iframe src="https://drive.google.com/embeddedfolderview?id=FOLDER-ID#grid" style="width:100%; height:600px; border:0;"></iframe>

  • Acabo de probar esto extensamente. Nada en absoluto se procesa en mis iframes. Google Docs siempre ha parecido tan cerca de ser mucho mejor de lo que es. Suspiro. Incluso si tuviera que pagar un poco por una URL que funcionara, lo consideraría.

    – James T Snell

    21 de febrero de 2014 a las 0:28

  • Esto funciona bien, ¿hay alguna forma de obtener solo las URL?

    – Richard Griffiths

    1 de febrero de 2015 a las 16:13

  • Esto funciona bien en los últimos Firefox y Chrome. Una preocupación menor aquí es que todos los enlaces de carpeta/documento se abren en una ventana separada. ¿Hay alguna manera de buscar carpetas de unidades dentro del mismo iframe? ¿Hay alguna manera de que podamos usar ?

    – Anuruddha

    12 de marzo de 2015 a las 7:16

  • @Doc solía obtener un espacio en blanco IFRAME cuando no tenia permiso Creo que es mejor ahora, ya que aparece un mensaje que dice necesitas permiso. La vista de carpeta incrustada también devuelve algunos botones para ayudarlo Solicitar acceso o Cambiar cuentas. Lamentablemente, estos botones no funcionan dentro de un IFRAME (al menos no con la versión de Chrome que estoy usando). Si su navegador le permite abrir el marco en otra pestaña, puede evitarlo. Si necesita cambiar de cuenta para obtener acceso, el acceso incrustado original no cambiará, pero puede usar el que no tiene pestañas.

    – Fuhrmanator

    13 de enero de 2016 a las 17:57


  • ¿Hay alguna manera de cambiar el orden de clasificación?

    – pihentagia

    29 de abril de 2020 a las 13:00

Incrustar un directorio de Google Drive en un IFRAME

Las carpetas de Google Drive se pueden incrustar y mostrar en list y grid vistas (en las que todo lo que puede hacer es hacer clic en un archivo o carpeta para abrirlo en una nueva pestaña). Para hacerlo, simplemente reemplace ID DE CARPETA y para carpetas privadas (a partir de 2022) CLAVE DE RECURSO con el tuyo en:

Vista de la lista

<iframe src="https://drive.google.com/embeddedfolderview?id=FOLDER-ID&resourcekey=RESOURCE-KEY#list" style="width:100%; height:600px; border:0;"></iframe>

o sin especificar un modo, ya que el modo de lista es el predeterminado:

<iframe src="https://drive.google.com/embeddedfolderview?id=FOLDER-ID&resourcekey=RESOURCE-KEY" style="width:100%; height:600px; border:0;"></iframe>

Vista en cuadrícula

<iframe src="https://drive.google.com/embeddedfolderview?id=FOLDER-ID&resourcekey=RESOURCE-KEY#grid" style="width:100%; height:600px; border:0;"></iframe>

Obtención de su ID de carpeta

Simplemente puede reemplazar drive/folders/ con embeddedfolderview?id= en un enlace para compartir de Drive estándar.

El id es el hash (galimatías alfanuméricas) después folders/ en la URL de la carpeta. Puede ver la URL en la barra de direcciones de su navegador cuando abre la carpeta de Drive. La clave de recursos que puede encontrar en el enlace para compartir, después de copiarlo. Por ejemplo, en:

`https://drive.google.com/drive/folders/0B9s5Ht8qysnFMXhaZDFfQlJEalE&resourcekey=0-in7UrBAlXKTSN6poaUSl9g`

La identificación de la carpeta es 0B9s5Ht8qysnFMXhaZDFfQlJEalE y la clave de recurso es 0-in7UrBAlXKTSN6poaUSl9g.

Carpeta con dominio de G Suite/Google Apps

Desde la introducción del parámetro Resource Key en 2022 y a partir de enero de 2023, la inserción de carpetas de dominio de G Suite falla con un error 403 (“Lo sentimos, pero no tiene acceso a esta página. Eso es todo lo que sabemos”). . Se deja lo siguiente por si en algún momento lo arreglan.

Si su carpeta es parte de un dominio de Google Apps, puede agregar el dominio a la URL para aliviar los problemas de permisos (detallados más adelante):

<iframe src="https://drive.google.com/a/MY.DOMAIN.COM/embeddedfolderview?id=FOLDER-ID#grid" style="width:100%; height:600px; border:0;"></iframe>

solo reemplaza MI.DOMINIO.COM y ID DE CARPETA contigo mismo.

Advertencia con carpetas que requieren permiso

Esta técnica funciona mejor para carpetas con acceso público. Las carpetas que se comparten solo con ciertas cuentas de Google pueden causar problemas cuando las incrusta de esta manera, según las cuentas de Google que estén activas en el navegador del usuario:

  1. Si el usuario no ha iniciado sesión en ninguna cuenta de Google, entonces nada aparece en el marco.
  2. Si el usuario ha iniciado sesión en una cuenta sin autorización para acceder a la carpeta, el marco contendrá el mensaje necesitas permisocon unos botones para Solicitar acceso o Cambiar cuentaspero si hace clic en este último, el marco se queda en blanco.
  3. Si el usuario inicia sesión en una cuenta sin los permisos adecuados y luego agrega la cuenta autorizada, al cargar la unidad integrada, Google recurrirá a la primera cuenta activa y el usuario verá necesitas permisoa menos que…
  4. Si la URL contiene un dominio de Google Suite y el usuario ha iniciado sesión en la cuenta de ese dominio, la vista incrustada funcionará. incluso si el usuario inició sesión en otra cuenta primero.

Los marcos en blanco se deben a que Google prohíbe incrustar su página de inicio de sesión en un IFRAME (presumiblemente para evitar el robo de cuentas), a través de la X-Frame-Options encabezado, que si se establece en SAMEORIGIN hará que cualquier navegador que se comporte bien se niegue a cargar la página si no está en el mismo dominio (vg drive.google.com). Puede ver esto en la consola de desarrollador de su navegador.

TL;RD

Para obtener una vista de lista o cuadrícula de una carpeta de Drive (en la que todo lo que puede hacer es hacer clic en un archivo o carpeta para abrirlo en una nueva pestaña), use:

<iframe src="https://drive.google.com/embeddedfolderview?id=FOLDER-ID&resourcekey=RESOURCE-KEY#grid" style="width:100%; height:600px; border:0;"></iframe>

Para Google Suite/Apps Drive, lo siguiente no funciona a partir de enero de 2023:

<iframe src="https://drive.google.com/a/MY.DOMAIN.COM/embeddedfolderview?id=FOLDER-ID#grid" style="width:100%; height:600px; border:0;"></iframe>

Reemplazar MI.DOMINIO.COM y ID DE CARPETA contigo mismo; eliminar #grid para obtener una lista detallada de archivos.

Para carpetas privadas, haga que sus usuarios inicien sesión en la cuenta correcta antes de cargar la página con la carpeta incrustada; si la carpeta está en un dominio de Google Apps, puede agregar el dominio a la URL. De lo contrario, deben iniciar sesión en la cuenta autorizada antes que cualquier otra.

(esta respuesta es una edición de Mori, pero fue rechazada porque cambió su intenciónde alguna manera)

  • ¿Hay alguna forma de obtener una tecla de flecha de carrusel (>) para ampliar las imágenes del iframe?

    – Kuhan

    4 de enero de 2020 a las 16:18

avatar de usuario de ssy
ssy

Al momento de escribir esta respuesta, no había ningún método para incrustar que permitiera al usuario navegar dentro de las carpetas y ver los archivos sin salir del sitio web (el método en otras respuestas hace que todo se abra en una nueva pestaña en el sitio web de Google Drive), así que hice mi propia herramienta para ello. Para incrustar una unidad, pegue el siguiente código iframe en su HTML:

<iframe src="https://googledriveembedder.collegefam.com/?key=YOUR_API_KEY&folderid=FOLDER_ID_WHIHCH_IS_PUBLICLY_VIEWABLE" style="border:none;" width="100%"></iframe>

En el código anterior, debe tener su propia clave API y la ID de la carpeta. Puede establecer la altura según su deseo.

Para obtener la clave API:

1.) Ir a https://console.developers.google.com/ Crear un nuevo proyecto.

2.) En el botón de menú, vaya a ‘API y servicios’ –> ‘Panel’ –> Haga clic en ‘Habilitar API y servicios’.

3.) Busque ‘Google Drive API’, habilítelo. Luego vaya a la pestaña “credenciales” y cree credenciales. Mantenga su clave API sin restricciones.

4.) Copie la clave API recién generada.

Para obtener el ID de la carpeta:

1.) Vaya a la carpeta de Google Drive que desea incrustar (por ejemplo, drive.google.com/drive/u/0/folders/1v7cGug_e3lNT0YjhvtYrwKV7dGY-Nyh5u [this is not a real folder]) Asegúrese de que la carpeta se comparta públicamente y sea visible para cualquier persona.

2.) Copie la parte después de ‘carpetas/’, esta es su ID de carpeta.

Ahora coloque la clave API y la identificación de la carpeta en el código anterior e incruste.

Nota: Esto funciona solo para los archivos y subcarpetas que cargó en la carpeta GDrive, no para las subcarpetas que agrega como ‘acceso directo’. Si una subcarpeta se muestra incorrectamente, descargue su contenido y súbalo a la unidad dentro de esa carpeta específica. Si ‘Mover’ la carpeta dentro de Google Drive, GDrive la agrega como un ‘acceso directo’.

Para ocultar el botón de descarga de archivos, agregue ‘&allowdl=no’ al final de la URL src del iframe.

Hice el widget teniendo en cuenta a los usuarios de dispositivos móviles, sin embargo, se adapta tanto a dispositivos móviles como de escritorio. Si tiene problemas, deje un comentario aquí. He adjuntado algunas capturas de pantalla del contenido del iframe aquí.

La vista previa del archivo se ve así
El contenido del iframe se ve así

  • Solo muestra el texto: “Examinar archivos”

    – Fichas147

    19 oct 2020 a las 12:37

  • @ Chips147 probablemente la clave API o la identificación de la carpeta se copiaron incorrectamente. O tal vez la carpeta específica que está tratando de mostrar no se puede ver públicamente (permisos de uso compartido-> cualquier persona con enlace puede ver)

    – sy

    20 oct 2020 a las 20:45

  • ¡Gracias por la solución! Nota: todas las subcarpetas y archivos también deben estar abiertos. Preguntas: 1) ¿Existe un código abierto para el proyecto? 2) ¿Puede el desarrollador ponerse en contacto conmigo o con mi cliente? Quieren pedir ayuda con una tarea similar.

    – Max Makhrov

    4 de abril de 2022 a las 7:25

  • @MaxMakhrov el código no está abierto. Puede conectarse conmigo para obtener ayuda específica en studyforexams en gmail punto com

    – sy

    5 abr 2022 a las 9:00

  • @AnkitChauhan Puede colocar restricciones de seguridad en su clave API de GCP, lo que la hará segura. Incluso pensé en esto antes, pero luego vi que en Google Drive, incluso la clave de Google está expuesta. (puede consultar las llamadas a la API que hace Google Drive). Lo han protegido agregando restricciones de dominio. Entonces, si alguien más obtiene la llave, no puede usarla.

    – sy

    7 sep 2022 a las 13:22

Para aplicaciones comerciales/Gsuite o como las llamen, puede especificar el dominio (tuvo un problema con 500 errores con la respuesta original cuando inició sesión en varias cuentas de Google).

<iframe 
  src="https://drive.google.com/a/YOUR_COMPANY_DOMAIN/embeddedfolderview?id=FOLDER-ID" 
  style="width:100%; height:600px; border:0;"
>
</iframe>

¿Ha sido útil esta solución?