Repository navigation
Expand file tree
/
Copy pathgmail-cleanup.js
More file actions
100 lines (85 loc) · 2.75 KB
/
Copy pathgmail-cleanup.js
File metadata and controls
100 lines (85 loc) · 2.75 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
/**
* Gmail Cleanup Script
*
* Este script automatiza la limpieza de correos electrónicos en Gmail según criterios
* personalizables para mantener tu bandeja de entrada organizada.
*
* Autor: RanuK12
* Licencia: MIT
*/
// Configuración principal
const BATCH_LIMIT = 100; // Límite de procesamiento por lote
/**
* Función principal que inicia el proceso de limpieza.
*/
function cleanup() {
// Configuración de las consultas de búsqueda
const queryArray = [
"category:promotions in:inbox AND -in:starred older_than:"
];
// Configuración de períodos para cada consulta
// index: corresponde a la posición en queryArray
// type: unidad de tiempo (year, month, day)
// value: cantidad de unidades
const delayInfo = [
{index: 0, type: "year", value: 1}
];
// Procesa cada consulta configurada
for (let i = 0; i < queryArray.length; i++) {
let isQueryValid = false;
let finalQuery = queryArray[i];
// Construye la consulta final con el período correspondiente
for (let j = 0; j < delayInfo.length; j++) {
if (delayInfo[j].index == i) {
finalQuery += delayInfo[j].value;
switch(delayInfo[j].type) {
case "year":
case "month":
case "day":
finalQuery += delayInfo[j].type.charAt(0);
isQueryValid = true;
break;
default:
isQueryValid = false;
Logger.log("Tipo de período no válido");
}
}
}
// Ejecuta limpieza si la consulta es válida
if (isQueryValid) {
Logger.log("Ejecutando limpieza con consulta: " + finalQuery);
messageCleanup(finalQuery, BATCH_LIMIT);
}
}
}
/**
* Elimina los mensajes que coinciden con la consulta especificada.
*
* @param {string} query - Consulta de búsqueda en formato Gmail
* @param {number} batchSize - Tamaño del lote para procesar
*/
function messageCleanup(query, batchSize) {
let threads;
let processedCount = 0;
Logger.log("Iniciando limpieza con consulta: " + query);
do {
// Busca hilos que coincidan con la consulta
threads = GmailApp.search(query, 0, batchSize);
if (threads.length > 0) {
// Mueve los hilos encontrados a la papelera
GmailApp.moveThreadsToTrash(threads);
// Actualiza contadores y registro
processedCount += threads.length;
Logger.log("Procesados " + threads.length + " hilos. Total: " + processedCount);
// Pausa para evitar exceder cuotas de API
Utilities.sleep(1000);
}
} while (threads.length > 0);
Logger.log("Limpieza completada. Total eliminado: " + processedCount + " hilos.");
}
/**
* Función para ejecutar el script manualmente desde el editor.
*/
function runCleanup() {
cleanup();
}