Update
This commit is contained in:
@@ -297,41 +297,62 @@ async function procesarArchivo(archivo) {
|
||||
|
||||
const datos = await obtenerDatosHoja(archivo.id);
|
||||
|
||||
const filasAProcesar = datos.slice(1)
|
||||
const todasLasFilas = datos.slice(1)
|
||||
.map((row, index) => ({
|
||||
valor: row[0], // Columna A
|
||||
fila: index + 2, // Número de fila real
|
||||
ultimaConsulta: row[1], // Columna B
|
||||
columnaC: row[2] // Columna C
|
||||
}))
|
||||
.filter(row => {
|
||||
if (!row.columnaC) return true; // Si la columna C está vacía, procesar
|
||||
}));
|
||||
|
||||
// Si la columna C no está vacía, verificar la fecha de última consulta en la columna B
|
||||
if (!row.ultimaConsulta) return true; // Si no hay fecha en B, procesar (aunque C no esté vacía)
|
||||
// Separate rows into three groups based on priority
|
||||
const filasVaciasC = todasLasFilas.filter(row => !row.columnaC);
|
||||
|
||||
// Parsear la fecha en formato español DD/MM/YYYY
|
||||
const [date, time] = row.ultimaConsulta.split(', ');
|
||||
const [day, month, year] = date.split('/');
|
||||
const [hours, minutes, seconds] = time.split(':');
|
||||
const filasConFechaB = todasLasFilas.filter(row => {
|
||||
if (!row.columnaC && !row.ultimaConsulta) return false; // Already handled by filasVaciasC or filasVaciasB
|
||||
if (!row.ultimaConsulta) return false; // Handled by filasVaciasB
|
||||
|
||||
const fechaUltimaConsulta = new Date(year, month - 1, day, hours, minutes, seconds);
|
||||
const ahora = new Date();
|
||||
const [date, time] = row.ultimaConsulta.split(', ');
|
||||
const [day, month, year] = date.split('/');
|
||||
const [hours, minutes, seconds] = time.split(':');
|
||||
|
||||
// Calcular la diferencia en horas
|
||||
const diferenciaHoras = (ahora - fechaUltimaConsulta) / (1000 * 60 * 60);
|
||||
const fechaUltimaConsulta = new Date(year, month - 1, day, hours, minutes, seconds);
|
||||
const ahora = new Date();
|
||||
|
||||
// Para fechas futuras, no procesar
|
||||
if (fechaUltimaConsulta > ahora) return false;
|
||||
const diferenciaHoras = (ahora - fechaUltimaConsulta) / (1000 * 60 * 60);
|
||||
|
||||
return diferenciaHoras > 1; // Procesar solo si ha pasado más de 1 hora
|
||||
});
|
||||
if (fechaUltimaConsulta > ahora) return false; // For future dates, return false to skip processing
|
||||
|
||||
console.log(filasAProcesar);
|
||||
return diferenciaHoras > 1; // Process only if more than 1 hour has passed
|
||||
});
|
||||
|
||||
console.log(`📊 Total de filas a procesar: ${filasAProcesar.length}`);
|
||||
const filasVaciasB = todasLasFilas.filter(row => {
|
||||
return !row.ultimaConsulta && row.columnaC; // Empty F, but G is not empty
|
||||
});
|
||||
|
||||
if (filasAProcesar.length > 0) {
|
||||
// Sort rows with date in B by oldest date first
|
||||
filasConFechaB.sort((a, b) => {
|
||||
const [dateA, timeA] = a.ultimaConsulta.split(', ');
|
||||
const [dayA, monthA, yearA] = dateA.split('/');
|
||||
const [hoursA, minutesA, secondsA] = timeA.split(':');
|
||||
const fechaA = new Date(yearA, monthA - 1, dayA, hoursA, minutesA, secondsA);
|
||||
|
||||
const [dateB, timeB] = b.ultimaConsulta.split(', ');
|
||||
const [dayB, monthB, yearB] = dateB.split('/');
|
||||
const [hoursB, minutesB, secondsB] = timeB.split(':');
|
||||
const fechaB = new Date(yearB, monthB - 1, dayB, hoursB, minutesB, secondsB);
|
||||
|
||||
return fechaA - fechaB; // Ascending order (oldest first)
|
||||
});
|
||||
|
||||
// Combine the arrays in the specified priority order
|
||||
const filasOrdenadas = [...filasVaciasC, ...filasConFechaB, ...filasVaciasB];
|
||||
|
||||
console.log(filasOrdenadas);
|
||||
|
||||
console.log(`📊 Total de filas a procesar: ${filasOrdenadas.length}`);
|
||||
|
||||
if (filasOrdenadas.length > 0) {
|
||||
console.log('🌐 Iniciando navegador...');
|
||||
let browser = await initBrowser(platform);
|
||||
let page = (await browser.pages())[0];
|
||||
@@ -339,9 +360,9 @@ async function procesarArchivo(archivo) {
|
||||
const MAX_FALLOS_CONSECUTIVOS = 3;
|
||||
|
||||
let procesadas = 0;
|
||||
for (const element of filasAProcesar) {
|
||||
for (const element of filasOrdenadas) {
|
||||
procesadas++;
|
||||
console.log(`\n⏳ Procesando fila ${element.fila} (${procesadas}/${filasAProcesar.length})`);
|
||||
console.log(`\n⏳ Procesando fila ${element.fila} (${procesadas}/${filasOrdenadas.length})`);
|
||||
console.log(`📝 Valor a consultar: ${element.valor}`);
|
||||
|
||||
// Guardar la fecha y hora actual
|
||||
|
||||
Reference in New Issue
Block a user