SKRIPT
Emailové notifikace o provozních stavech
v databázi zaměstnanců
Emailové notifikace o provozních stavech
v databázi zaměstnanců
function sendEmails1() {
var ui = SpreadsheetApp.getUi();
// Zobrazení úvodního hlášení s instrukcemi
var response = ui.alert('UPOZORNĚNÍ',
'Označili jste v listu DTB řádek se zaměstnancem, jehož novou smlouvu chcete oznámit?',
ui.ButtonSet.YES_NO);
// Kontrola odpovědi uživatele
if (response == ui.Button.NO) {
ui.alert('Upozornění', 'Nejprve označte správný řádek a spusťte skript znovu.', ui.ButtonSet.OK);
return;
}
var ss = SpreadsheetApp.getActiveSpreadsheet();
var dtbSheet = ss.getSheetByName('DTB');
// Zjištění označeného řádku
var checkedRow;
var dataRange = dtbSheet.getRange('A4:A').getValues();
for (var i = 0; i < dataRange.length; i++) {
if (dataRange[i][0] === true) {
checkedRow = i + 4;
break;
}
}
if (!checkedRow) {
ui.alert('Upozornění', 'Nenašel se žádný označený řádek.', ui.ButtonSet.OK);
return;
}
// Načtení dat z označeného řádku
var rowData = dtbSheet.getRange(checkedRow, 1, 1, dtbSheet.getLastColumn()).getValues()[0];
var datasetSheet = ss.getSheetByName('DATASET');
// Načtení e-mailových adres
var emailRange = datasetSheet.getRange('H24:H33');
var emailAddresses = emailRange.getValues().flat();
// Načtení předmětu e-mailu
var subject = datasetSheet.getRange('A23').getValue();
// Načtení těla e-mailu a doplnění informací
var bodyRange = datasetSheet.getRange('A24:A31');
var bodyValues = bodyRange.getValues();
var body = bodyValues.map(function(row, index) {
var text = row[0];
switch(index) {
case 0:
text += "\n"; // Prázdný řádek mezi 1. a 2. řádkem
break;
case 1:
text += " " + rowData[4] + " " + rowData[5] + " " + rowData[6] + " " + rowData[7];
break;
case 2:
text += " " + rowData[33];
break;
case 3:
var date = new Date(rowData[35]);
var formattedDate = date.getDate() + ". " + (date.getMonth() + 1) + ". " + date.getFullYear();
text += " " + formattedDate;
break;
case 4:
text += " " + rowData[2] + "\n"; // Prázdný řádek mezi 5. a 6. řádkem
break;
case 6:
text += "\n"; // Prázdný řádek mezi 7. a 8. řádkem
case 7:
break;
}
return text;
}).join('\n');
// Odeslání e-mailů
emailAddresses.forEach(function(emailAddress) {
if (emailAddress) {
MailApp.sendEmail(emailAddress, subject, body);
}
});
// Zobrazení zprávy o úspěšném odeslání
ui.alert('E-maily byly úspěšně odeslány.');
}
function sendEmails2() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var parametrySheet = ss.getSheetByName('parametry');
// Načtení hodnoty z buňky J1
var j1Value = parametrySheet.getRange('J1').getValue();
// Pokud je hodnota J1 rovna 0, ukončí skript
if (j1Value == 0) {
return;
}
// Načtení hodnoty z buňky F2
var f2Value = parametrySheet.getRange('F2').getValue();
var dtbSheet = ss.getSheetByName('DTB');
var datasetSheet = ss.getSheetByName('DATASET');
// Načtení všech dat z listu DTB počínaje řádkem 4
var dtbData = dtbSheet.getRange(4, 1, dtbSheet.getLastRow() - 3, dtbSheet.getLastColumn()).getValues();
var emailContentBlocks = [];
for (var i = 0; i < dtbData.length; i++) { // Začínáme od 0, protože jsme začali načítat od řádku 4
var row = dtbData[i];
// Kontrola, jestli je ve sloupci G (index 6) neprázdná buňka
if (!row[6]) {
continue; // Přeskočíme řádky s prázdnou hodnotou ve sloupci G
}
// Kontrola, jestli je ve sloupci AL (index 37) prázdná buňka
if (row[37]) {
continue; // Přeskočíme řádky, kde ve sloupci AL není prázdná buňka
}
// Kontrola, jestli je ve sloupci AK (index 36) platné datum
var akValue = row[36]; // Sloupec AK
if (!(akValue instanceof Date) || isNaN(akValue.getTime())) {
continue; // Přeskočíme řádky, kde v AK není platné datum
}
var afDate = new Date(row[36]); // Sloupec AL (index 37)
var today = new Date();
var dateDiff = Math.floor((afDate - today) / (1000 * 60 * 60 * 24)); // Rozdíl v dnech (afDate - today)
if (dateDiff < 0 || dateDiff > f2Value) {
continue;
}
var texta = [
datasetSheet.getRange('A39').getValue() + " " + (row[4] || "") + " " + (row[5] || "") + " " + (row[6] || "") + " " + (row[7] || ""),
datasetSheet.getRange('A40').getValue() + " " + (row[33] || ""),
datasetSheet.getRange('A41').getValue() + " " + formatDate(row[36]),
datasetSheet.getRange('A42').getValue() + " " + dateDiff
].join('\n');
emailContentBlocks.push(texta);
}
// Sestavení těla e-mailu
var emailBody = [
datasetSheet.getRange('A38').getValue(),
'',
emailContentBlocks.join('\n\n'),
'',
datasetSheet.getRange('A43').getValue(),
datasetSheet.getRange('A44').getValue(),
'',
datasetSheet.getRange('A45').getValue()
].join('\n');
// Načtení předmětu e-mailu
var subject = datasetSheet.getRange('A37').getValue();
// Načtení e-mailových adres
var emailAddresses = datasetSheet.getRange('H38:H47').getValues().flat();
// Odeslání e-mailů
emailAddresses.forEach(function(emailAddress) {
if (emailAddress) {
MailApp.sendEmail(emailAddress, subject, emailBody);
}
});
}
// Pomocná funkce pro formátování datumu
function formatDate(date) {
var d = new Date(date);
return d.getDate() + ". " + (d.getMonth() + 1) + ". " + d.getFullYear();
}
function sendEmails3() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var parametrySheet = ss.getSheetByName('parametry');
// Načtení hodnoty z buňky J3
var j3Value = parametrySheet.getRange('J2').getValue();
// Pokud je hodnota J3 rovna 0, ukončí skript
if (j3Value == 0) {
return;
}
var datasetSheet = ss.getSheetByName('DATASET');
// Načtení e-mailových adres
var emailRange = datasetSheet.getRange('H51:H60');
var emailAddresses = emailRange.getValues().flat().filter(String); // Odstraní prázdné hodnoty
// Načtení předmětu e-mailu
var subject = datasetSheet.getRange('A50').getValue();
// Sestavení těla e-mailu
var body = [
datasetSheet.getRange('A51').getValue(),
datasetSheet.getRange('A52').getValue(),
datasetSheet.getRange('A53').getValue(),
'',
datasetSheet.getRange('A54').getValue()
].join('\n');
// Odeslání e-mailů
emailAddresses.forEach(function(emailAddress) {
if (emailAddress) {
MailApp.sendEmail(emailAddress, subject, body);
}
});
}