SKRIPT
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);

    }

  });

}