HTML2Spreadsheet

Der HTML2Spreadsheetopen in new window Step kann (wie der HTMLParseropen in new window) einzelne HTML-Elemente aus einem Input heraus extrahieren und daraus ein neues Spreadsheet erzeugen. Als Input kann ein FILE, FILELIST oder SPREADSHEET dienen. Ist der Input ein SPREADSHEET, kann man eine Spalte auswählen, die den zu parsenden HTML-Text enthält.

Beispiel

Input: SPREADSHEET mit HTML-Code in der Spalte "description" z.B.

<a href="http://synesty.com/1">my link</a>

Einlesen / Parsen:

Das *processingTemplate *wird für jede Zeile des Input-Spreadsheets angewendet, um daraus HTML-Elemente zu extrahieren. Dazu dient die Funktion selectHTML()

selectHTML("a").attr("href")

  • selectHTML() ist eine Synesty-eigene Funktion, die als Parameter einen CSS-Ausdruck erhält (ähnlich wie be jQuery), und alle passenden Elemente als sog. Elements-Objekt zurückgibt (sozusagen eine Liste aller gefundenen HTML-Elemente). Im Beispiel werden alle Links (<a> Tags selektiert und davon das href-Attribut ausgelesen)
  • Das Ergebnis ist ein sog. Elements-Objekt des verwendeten JSOUP-Frameworks, womit auf die Element zugegriffen werden kann.
  • Weitere Informationen zum Selektieren der Elemente unter http://jsoup.org/cookbook/extracting-data/selector-syntax

Ausgabe:

Im processingTemplate werden in diesem Beispiel alle URLs aus allen Links (href-Attribut bei a-Tags> extrahiert und in eine Spalte "selectedHtml" geschrieben.

Zugriff auf die Spreadsheet-Spalten

Man kann im processingTemplate auch auf die anderen Spalten des Input-Spreadsheets zuzugreifen. Meistens wird das genutzt in Verbindung mit dem SpreadsheetURLDownload und der dortigen Möglichkeit Spalten über die Option outputSourceColumns durchzuschleifen (z.B. Artikelnummer / SKU).

Dafür existiert eine Variable inputRow
Damit haben Sie  immer die aktuelle Zeile des Input-Spreadsheets verfügbar und können auf die Spaltenwerte zugreifen.

Beispiel:

${inputRow.get("meinSKUSpalte")!} 

Angenommen im Input-Spreadsheet gibt es eine Spalte meineSKUSpalte, die eine Artikelnummer enthält, und die auch wieder in der Ausgabe des HTML2Spreadsheet Steps auftauchen soll.

Sie können im processingTemplate dann grob folgendes machen, um eine Spalte "SKU" mit dieser Artikelnummer hinzuzufügen:

${row.addCol("SKU", inputRow.get("meinSKUSpalte") )}
Last Updated: