function compartirArchivosPorLotes() {
const FOLDER_ID = "1h3kE132v9PxAUwbcDT7Acy6vik5Ub7bu";
const BATCH_SIZE = 130; // 🔹 cantidad de archivos por ejecución
const props = PropertiesService.getScriptProperties();
let lastIndex = Number(props.getProperty("LAST_INDEX")) || 0;
const folder = DriveApp.getFolderById(FOLDER_ID);
const files = folder.getFiles();
const allFiles = [];
while (files.hasNext()) {
allFiles.push(files.next());
}
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// Crear encabezados solo una vez
if (sheet.getLastRow() === 0) {
sheet.appendRow(["Nombre del juego", "Link público"]);
}
let processed = 0;
for (let i = lastIndex; i < allFiles.length; i++) {
if (processed >= BATCH_SIZE) break;
const file = allFiles[i];
// Compartir públicamente
file.setSharing(
DriveApp.Access.ANYONE_WITH_LINK,
DriveApp.Permission.VIEW
);
const fileName = file.getName();
const fileUrl = file.getUrl();
const cleanName = fileName
.replace(/\[.*?\]/g, "")
.replace(/Español/i, "")
.replace(/\.zip$/i, "")
.trim();
sheet.appendRow([cleanName, fileUrl]);
processed++;
lastIndex = i + 1;
}
// Guardar progreso
props.setProperty("LAST_INDEX", lastIndex);
if (lastIndex >= allFiles.length) {
props.deleteProperty("LAST_INDEX");
SpreadsheetApp.getUi().alert("✅ PROCESO COMPLETADO\nTodos los archivos fueron compartidos.");
} else {
SpreadsheetApp.getUi().alert(
`⏳ Progreso guardado\nProcesados: ${lastIndex} / ${allFiles.length}\nEjecuta nuevamente para continuar`
);
}
}