gas-fakesCrie uma pasta de projeto e rode:
mkdir gas-drive-duplicates cd gas-drive-duplicates npm init -y npm install gas-fakes googleapis @google-cloud/local-auth
.envAdicione suas credenciais OAuth do Google Cloud:
GOOGLE_CLIENT_ID=SEU_CLIENT_ID GOOGLE_CLIENT_SECRET=SEU_CLIENT_SECRET GOOGLE_REDIRECT_URI=http://localhost GOOGLE_REFRESH_TOKEN=SEU_REFRESH_TOKEN
Essas credenciais são obtidas no Google Cloud Console, com a Google Drive API habilitada.
findDuplicates.jsAqui está um exemplo funcional completo que encontra arquivos duplicados no Google Drive, rodando fora do Apps Script:
// findDuplicates.js import 'dotenv/config'; import { google } from 'googleapis'; import { DriveApp } from 'gas-fakes'; // 🔹 Inicializa o cliente da API Drive com OAuth async function authorize() { const auth = new google.auth.OAuth2( process.env.GOOGLE_CLIENT_ID, process.env.GOOGLE_CLIENT_SECRET, process.env.GOOGLE_REDIRECT_URI ); auth.setCredentials({ refresh_token: process.env.GOOGLE_REFRESH_TOKEN }); return google.drive({ version: 'v3', auth }); } // 🔹 Simulação do DriveApp do GAS com gas-fakes async function findDuplicateFiles() { const drive = await authorize(); const fakeDrive = new DriveApp(drive); const filesMap = new Map(); let pageToken = null; do { const res = await drive.files.list({ fields: 'nextPageToken, files(id, name, md5Checksum)', pageSize: 1000, pageToken: pageToken || undefined, }); for (const file of res.data.files) { const key = file.md5Checksum || file.name; if (!key) continue; if (!filesMap.has(key)) filesMap.set(key, []); filesMap.get(key).push(file); } pageToken = res.data.nextPageToken; } while (pageToken); // 🔹 Identifica duplicados const duplicates = [...filesMap.values()].filter(arr => arr.length > 1); console.log(`🔍 ${duplicates.length} grupos de duplicados encontrados:`); for (const group of duplicates) { console.log(`\n📂 Arquivos duplicados: ${group[0].name}`); group.forEach(f => console.log(` - ${f.id}`)); } } findDuplicateFiles().catch(console.error);
O pacote gas-fakes recria objetos e métodos do Apps Script (DriveApp, SpreadsheetApp, etc.) localmente.
Você executa o script em Node.js, mas ele acessa as APIs reais do Google via googleapis.
Como está fora do ambiente Apps Script, não há limite de 6 minutos.
Você pode usar async/await, bibliotecas externas e armazenar progresso localmente (por exemplo, salvando checkpoints em JSON).
⚡ Paginar resultados: sempre use pageToken ao listar arquivos grandes.
💾 Salvar progresso: se estiver auditando dezenas de milhares de arquivos, salve checkpoints a cada lote processado.
🔐 Segurança: mantenha suas credenciais no .env e nunca faça commit desse arquivo.
🧱 Logs estruturados: use console.table() ou grave logs em CSV/JSON para auditar os resultados.
Google Drive API (Node.js): https://developers.google.com/drive/api/v3/reference
gas-fakes: https://github.com/laramartin/gas-fakes
OAuth 2.0 for Google APIs: https://developers.google.com/identity/protocols/oauth2
--
You received this message because you are subscribed to the Google Groups "Google Apps Script Community" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-apps-script-c...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/google-apps-script-community/6abbfd59-5833-4e1d-a89e-170c2eadbe3fn%40googlegroups.com.

--