En este artículo, abordaremos el problema de cómo descargar archivos públicos compartidos de Google Drive utilizando Node.js y la biblioteca googleapis
. El objetivo es identificar un archivo CSV por su nombre y descargarlo diariamente, ya que el mantenedor de la carpeta crea una nueva versión cada día.
Problema
El código proporcionado intenta obtener una lista de archivos en una carpeta compartida públicamente en Google Drive, pero devuelve un arreglo vacío. Parece que el problema radica en que se está intentando buscar el ID de la carpeta en el contexto del servicio de Google Drive, sin embargo, el acceso público no se está manejando correctamente.
const googleDrive = async() => {
const drive = google.drive({version: 'v3', auth})
return drive
}
export const readPublicGoogleFolder = async(folderId: string) => {
try {
const gd = await googleDrive();
const shareLink = `${folderId}`
console.log({shareLink})
const publicFiles = await gd.files.list({q:`'${shareLink}' in parents`})
console.log({publicFiles })
return publicFiles;
}
catch(err: any){
console.log({err});
return null;
}
}
Solución Propuesta
-
Verificar el ID de carpeta: Asegúrate de que estás utilizando el ID correcto de la carpeta. El ID se puede encontrar en la URL de la carpeta compartida en Google Drive.
-
Uso del acceso público: Asegúrate de que la carpeta realmente esté configurada para ser accesible públicamente. Si la carpeta no está configurada correctamente, no podrás acceder a ella incluso si el ID es correcto.
-
Configurar la consulta adecuadamente: Cambia la consulta en
gd.files.list
para buscar archivos dentro delfolderId
directamente en lugar de usar la URL compartida. Así deberías garantizar que se enumeren adecuadamente los archivos. Ejemplo de la consulta:const publicFiles = await gd.files.list({ q: `'${folderId}' in parents and trashed = false` });
- Revisar permisos del servicio: Si aún encuentras problemas, revisa los permisos del servicio de cuenta en Google Cloud Console. Tu servicio debe tener acceso a los archivos públicos.
Conclusión
Siguiendo estos pasos, deberías ser capaz de listar y descargar los archivos desde la carpeta pública en Google Drive. Asegúrate de verificar que las configuraciones de permisos y las propiedades de la carpeta sean correctas. Si continúas experimentando problemas, considera consultar la documentación oficial de Google para obtener más detalles sobre el acceso y manejo de archivos en Google Drive.