NEWS
Email filtern
-
Hallo,
da ich nicht so der Programmierer bin, stehe ich nun vor einem Problem. Ich habe mit node-red eine email ausgewertet und diese in einem Datenpunkt gesetzt.
Jetzt möchte ich einen bestimmten Teil aus dem Text der Mail "ausschneiden" und in einen weiteren Datenpunkt verarbeiten. Z.B. eine Adresse. Da Name und Strasse immer anders lauten, komme ich da nicht weiter. Mit Blockly ist das Textfiltern sehr begrenzt. Was immer gleich ist in der Mail, die Adresse beginnt mit einem Punkt und endet mit einem Punkt. Würde z.B. so aussehen: "Name.Adresse.weiterer Text".
Angedacht ist das dann irgendwann in einer Karte darzustellen.
Hat da einer eine Idee, wie ich das umsetzen könnte?
Für eure Hilfe wäre ich euch sehr dankbar.
-
Hallo,
der Javascript Befehl der Wahl ist split https://www.w3schools.com/jsref/jsref_split.asp
var adresse_array = mailinhalt.split(".");adresse_array sieht dann so aus:
["Name","Adresse","weiterer Text"]Gruß
Pix
-
Es scheint also eine Lösung für mein Problem zu geben. :)
Da ich aber vom Programmieren null Ahnung habe, könntest du mir da vielleicht noch auf die Sprünge helfen, wie ich das jetzt schreiben muss?
Mein Mailtext liegt in javascript.0.Adresse.Text und soll in javascript.0.Adresse.Anschrift oder in je einen Datenpunkt Name, Anschrift, Text.
Wie würde da das Script aussehen? :roll:
Wie schon geschrieben, bastel ich sonst eher mit blockly.
Bis dahin schon mal Danke für die schnelle Hilfe
-
Hallo,
hier das Skript. Es legt drei Datenpunkte an, durchsucht dann bei Änderung deines vorhandenen Datenpuktes dessen Inhalt auf Punkte (".") und speichert,w as zwischen den Punkten steht in einem Array. Dann werden aus dem Array die neuen Datenpunkte befüllt.
Problem/Falle/Achtung: Wie beschrieben, wird nach Punkten gesucht. Wenn du also Namen oder Straßen mit Punkten schreibst, wird das Ergebnis falsch sein (aus "Herbert Mustermann.Hauptstr. 30 98765 Musterstadt.Traumkunde" wird dann Name="Herbert Mustermann";Adresse="Hauptstr";Notiz=" 30 98765 Musterstadt"). Überlegt dir also ein anderes Trennzeichen für die Quelle. Ich empfehle ein Semikolon.
! ````
/* Adresse aus Email filtern
! http://forum.iobroker.net/viewtopic.php?f=21&t=7516&sid=f57306f471525589c4029055b0c5bce7#p78424
! 05.08.2017 erstellt von pix für Heilu
! */
! const fC = false; // Wenn true, werden Datenpunkte beim Skriptstart NEU angelegt (überschrieben)
! const idName = 'javascript.' + instance + '.Adresse.Name';
const idAnschrift = 'javascript.' + instance + '.Adresse.Anschrift';
const idNotiz = 'javascript.' + instance + '.Adresse.Notiz';
! const idQuelle = 'javascript.0.Adresse.Text';
! // Objekte anlegen
createState(idName, '', fC, {
name: 'Name',
desc: 'Name aus der Email',
type: 'string',
def: '',
role: 'text'
});
! createState(idAnschrift, '', fC, {
name: 'Anschrift',
desc: 'Anschrift aus der Email',
type: 'string',
def: '',
role: 'text'
});
! createState(idNotiz, '', fC, {
name: 'Text',
desc: 'Weitere Notiz aus der Email',
type: 'string',
def: '',
role: 'text'
});
! // auf Änderung der Quelle reagieren
on(idQuelle, function(data) {
var quelle = data.state.val;
var quelle_array = quelle.split("."); // ["Name","Adresse","weiterer Text"]setState(idName, quelle_array[0]); setState(idAnschrift, quelle_array[1]); setState(idNotiz, quelle_array[2]); log('Email mit neuer Adresse verarbeitet');});
! ````
Gruß
Pix
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden