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`
    );
  }
}