Encontré este script muy útil aquí para devolver de forma iterativa una lista de métricas de archivos por directorio en GDrive. Mi problema es que quiero agregar columnas que excluyan correos electrónicos de un dominio determinado. Por ejemplo, en fileItem.getEditors , es posible que desee devolver una lista que excluya a los editores en el dominio "@mycompany.com".
var childFolders = parent.getFolders(); var childFiles = parent.getFiles(); var allValues = []; // Added while (childFiles.hasNext()){ var fileItem = childFiles.next(); data = [ parentName + "/" + fileItem.getName() + "/" + fileItem.getName(), fileItem.getName(), fileItem.getMimeType(), fileItem.getUrl(), fileItem.getAccess(Session.getActiveUser()), fileItem.getSharingPermission(), fileItem.isShareableByEditors(), fileItem.getOwner().getEmail(), fileItem.getEditors().map(function(e){return [e.getEmail(), e.getName()]}).join(","), fileItem.getViewers().map(function(e){return [e.getEmail(), e.getName()]}).join(","), ]; allValues.push(data); // Added } sheet.getRange(sheet.getLastRow() + 1, 1, allValues.length, allValues[0].length).setValues(allValues); // AddedLa respuesta de Cooper ya es excelente, pero no necesita incluir @ en la comparación.
Filtre sus datos agregando un filter antes del map que obtiene el correo electrónico y el nombre:
.filter(function(e){e.getDomain() != "mycompany.com"})Producción:
fileItem.getEditors().filter(function(e){e.getDomain() != "mycompany.com"}) .map(function(e){return [e.getEmail(), e.getName()]}).join(","),