-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path58_JobQueueHelpers.gs
More file actions
79 lines (67 loc) · 1.93 KB
/
Copy path58_JobQueueHelpers.gs
File metadata and controls
79 lines (67 loc) · 1.93 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
/**
* JobQueueHelpers - Funções auxiliares para gerenciamento de jobs
*/
/**
* Cria a aba JobQueue se não existir
*/
function createJobQueueSheet() {
try {
const ss = SpreadsheetProvider.getInstance();
let sheet = ss.getSheetByName(JOB_QUEUE_SHEET);
if (!sheet) {
sheet = ss.insertSheet(JOB_QUEUE_SHEET);
sheet.appendRow([
'jobId',
'jobName',
'status',
'payload',
'timestamp_enqueued',
'user_email',
'timestamp_claimed',
'timestamp_completed',
'result',
'errorCode',
'errorMessage'
]);
// Formata cabeçalho
const headerRange = sheet.getRange(1, 1, 1, 11);
headerRange.setFontWeight('bold');
headerRange.setBackground('#4285f4');
headerRange.setFontColor('#ffffff');
// Congela primeira linha
sheet.setFrozenRows(1);
Logger.log('JobQueue sheet created successfully');
}
return sheet;
} catch (error) {
Logger.log('Error creating JobQueue sheet: ' + error.message);
throw error;
}
}
/**
* Limpa jobs antigos (mais de 30 dias)
*/
function cleanupOldJobs() {
try {
const ss = SpreadsheetProvider.getInstance();
const sheet = ss.getSheetByName(JOB_QUEUE_SHEET);
if (!sheet) return;
const data = sheet.getDataRange().getValues();
const cutoffDate = new Date();
cutoffDate.setDate(cutoffDate.getDate() - 30);
const rowsToDelete = [];
for (let i = data.length - 1; i >= 1; i--) {
const timestamp = new Date(data[i][4]);
if (timestamp < cutoffDate) {
rowsToDelete.push(i + 1);
}
}
// Deleta em ordem reversa para não afetar índices
rowsToDelete.forEach(row => {
sheet.deleteRow(row);
});
Logger.log('Cleaned up ' + rowsToDelete.length + ' old jobs');
} catch (error) {
Logger.log('Error cleaning up old jobs: ' + error.message);
}
}