poergen
Goto Top

EMail bei Ergebnis - (keine) EMail bei keinem Ergebnis

Hallo zusammen,

Hier geht es um eine Spindregistrierung zu An- und Abmelden über ein QR-Code. Die Daten werden dann über Formulare in eine Tabelle eingefügt und verglichen (Zählen-wenn-Funktion / Bild 1). Dadurch wird festgestellt, ob der Spind belegt oder frei ist (Beispiel: Spind 001 wurde 2x eingebucht und 1x ausgebucht-bedeutet er ist belegt (Bild 2). Bei gleichen Zahlen ist er frei.) Ich möchte durch die Kontrolle verhindern, dass jemand sich einbucht, ohne dass man merkt, dass sich der andere vorher nicht ausgebucht hat. Daher darf die Toleranz nicht höher sein als 1). Wenn die Toleranz überschritten wurde, heißt dass, dass sich jemand wahrscheinlich nicht ausgebucht hat. Das kann ich dann anhand des Formulars sehen, wer sich nicht ordnungsgemäß ausgebucht hat. Ich hoffe ihr versteht!

Im folgenden Code soll die Kontrolle auf Toleranz eine EMail senden, wenn etwas gefunden wurde, was außerhalb der Toleranz ist.

Problem: Es wird mir auch eine EMail geschickt, wenn nichts gefunden wurde. Es soll aber nur eine EMail kommen, wenn etwas gefunden wurde.

EMail, wenn etwas gefunden wurde --> Bild 3 mit Beispieltext
EMail, wenn nicht gefunden wurde --> Bild 4 mit Beispieltext

Ich bin Anfänger und hab schon vieles versucht, doch leider keine Lösung gefunden.

function vergleicheUndSendeHTMLEmail() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('CheckIn/Out D+H H245 1.OG');  
  var lastRow = sheet.getLastRow();

  var htmlBody = "<ul>";  

  // Toleranzwert für die Differenz
  var toleranz = 1;

  for (var row = 4; row <= lastRow; row++) {
    var spalten = [3, 4, 6, 7, 9, 10, 12, 13, 15, 16, 18, 19, 21, 22, 24, 25, 27, 28, 30, 31];
    
    var isValid = false;

    for (var i = 0; i < spalten.length; i += 2) {
      var wertAktuell = sheet.getRange(row, spalten[i]).getValue();
      var wertNaechst = sheet.getRange(row, spalten[i + 1]).getValue();
      
      var differenz = Math.abs(wertAktuell - wertNaechst);

      if (differenz > toleranz) {
        isValid = true;
        break;
      }
    }

    if (isValid) {
      htmlBody += "<li>In Zeile " + row + " ist mindestens eine Differenz außerhalb des erlaubten Bereichs.</li>";  
    }
  }

  htmlBody += "</ul>";  

  if (htmlBody !== "") {  
    // Hier den Code für das Senden einer HTML-E-Mail einfügen
MailApp.sendEmail({
    to: 'ziel@abc.de',  
    subject: 'Spinde D+H H245 1.OG',  
    htmlBody: htmlBody
    });
    Logger.log("HTML-E-Mail wurde gesendet.");  
  } else {
    Logger.log("Keine Differenzen außerhalb des erlaubten Bereichs gefunden. Keine E-Mail gesendet.");  
  }
}
ausschnitt1
ausschnitt2
ausschnitt3
ausschnitt4

Content-ID: 83940315541

Url: https://administrator.de/contentid/83940315541

Ausgedruckt am: 24.11.2024 um 17:11 Uhr

10138557388
Lösung 10138557388 17.01.2024 aktualisiert um 13:31:00 Uhr
Goto Top
Leg dir einfach ein bool Variable dafür an die du setzt sobald etwas gefunden wurde und die du dann am Ende in der IF-Abfrage prüfst.
function vergleicheUndSendeHTMLEmail() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('CheckIn/Out D+H H245 1.OG');    
  var lastRow = sheet.getLastRow();
  // changes to true if there are differences
  var hasDifferences = false;
  var htmlBody = "<ul>";    

  // Toleranzwert für die Differenz
  var toleranz = 1;

  for (var row = 4; row <= lastRow; row++) {
    var spalten = [3, 4, 6, 7, 9, 10, 12, 13, 15, 16, 18, 19, 21, 22, 24, 25, 27, 28, 30, 31];
    
    var isValid = false;

    for (var i = 0; i < spalten.length; i += 2) {
      var wertAktuell = sheet.getRange(row, spalten[i]).getValue();
      var wertNaechst = sheet.getRange(row, spalten[i + 1]).getValue();
      
      var differenz = Math.abs(wertAktuell - wertNaechst);

      if (differenz > toleranz) {
        isValid = true;
        hasDifferences = true;
        break;
      }
    }

    if (isValid) {
      htmlBody += "<li>In Zeile " + row + " ist mindestens eine Differenz außerhalb des erlaubten Bereichs.</li>";    
    }
  }

  htmlBody += "</ul>";    

  if (hasDifferences) {  
    // Hier den Code für das Senden einer HTML-E-Mail einfügen
    MailApp.sendEmail({
        to: 'ziel@abc.de',    
        subject: 'Spinde D+H H245 1.OG',    
        htmlBody: htmlBody
    });
    Logger.log("HTML-E-Mail wurde gesendet.");    
  } else {
    Logger.log("Keine Differenzen außerhalb des erlaubten Bereichs gefunden. Keine E-Mail gesendet.");    
  }
}
pj
Poergen
Poergen 17.01.2024 um 13:44:59 Uhr
Goto Top
Ja, wunderbar, passt.... Vielen Dank!