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
-
Ok, vielen Dank. Werde das mal in den nächsten Tagen ausprobieren.
-
Funktioniert, vielen Dank