Este código busca algunos archivos dentro de una carpeta. Funciona bien en mi disco, pero lo necesito para una carpeta compartida en mi empresa y no obtiene nombres de archivos e identificaciones. He leído sobre {supportsAllDrives: true} pero no sé cómo implementarlo en el código (ni siquiera sé si es la solución). Drive API y DriveActivity API están habilitados en mi proyecto.
var expFolder = carpetabasecs.searchFolders(searchFor); while (expFolder.hasNext()) { var expFolderDef = expFolder.next(); var expFolderId = expFolderDef.getId(); var mask = 'TXT'; var query = `title contains "${mask}" and trashed = false and "${expFolderId}" in parents`; var findings = Drive.Files.list({ q: query }) || []; var table = [['Archivos exportados', 'IDs'], ...findings.items.map(f => [f.title, f.id]).sort()]; sh.getRange(2,1,table.length,2).setValues(table);
Gracias
¿Intentaste así?
var findings = Drive.Files.list( { q: query, useDomainAdminAccess: true }) || [];
Cambia esto:
var findings = Drive.Files.list({ q: query }) || [];
A esto:
var findings = Drive.Files.list({ q: query, supportsAllDrives: true }) || [];
Recuerde que está utilizando Drive v2 (no v3)
Finalmente estoy usando este método para filtrar los archivos. Funciona bien en unidades compartidas.
var sufix = 'TXT' // adapt as necessary var list = []; var files = expFolderDef.getFiles(); while (files.hasNext()) { file = files.next(); list.push([file.getName(),file.getId()]) } var result = [['Archivos exportados','IDs'], ...list.filter(r => r[0].includes(sufix)).sort()] sh.getRange(2,1, result.length, result[0].length).setValues(result);
De todos modos, todavía estoy interesado en entender cómo usar el comando Drive.Files.list, useDomaininAdminAccess y supportAllDrives no hacen el trabajo. He leído que el comando está en Advanced Drive Service, ¿esa API es la misma que Drive API? Porque no puedo encontrar Advanced Drive Service en Cloud Services.