Skip to end of metadata
Go to start of metadata

Diese Seite beschreibt Funktionen eines Spreadsheet-Objektes (siehe Spreadsheets) mit den dazugehörigen Objekten für Zeilen (Row) und Spalten (Col).
Diese Funktionen sind in der Regel im Mapper anwendbar oder in allen anderen Steps, die Freemarker-Skripte verarbeiten wie z.B. der TextHtmlWriter.

Voraussetzung

Zum Verständnis dieser Seite ist es hilfreich sich auch mit der Seite Scripting zu befassen.

Spreadsheet

FunktionAttributeRückgabewertBeispiel
getName()Gibt den Namen des Spreadsheets aus.-string
getNumberHeaderCols()Gibt die Anzahl der Spalten in der Kopfzeile aus.-int
Anzahl Spalten des Spreadsheet: ${myspreadsheet.getNumberHeaderCols()}
getHeader()Gibt das Zeilenobjekt (siehe Row) der Kopfzeile zurück.-Row
Listet alle Spaltentitel Semikolon-getrennt auf
${myspreadsheet.getHeader()?join(";")}
Listet alle Spaltentitel auf, die mit "price_" beginnen
${myspreadsheet.getHeader().getCols()?filter(headercol -> headercol.title?starts_with("price_"))?join(";")}
<#if myspreadsheet.getHeader().getCols()?seq_contains("description")>Ja Spalte "description" ist enthalten<#else>Nein, nicht gefunden</#if>

Kurzschreibweise:

Statt .getHeader().getCols() kann man auch .header.cols schreiben.

hasRows()Gibt true zurück wenn das Spreadsheet mindestens eine (Daten-)Zeile enthält  -boolean
<#if !spreadsheet@SearchMasterDatastore_1.hasRows()>Das Spreadsheet ist leer bzw. hat keine Datenzeilen.
</#if>
<#if !(spreadsheet@SearchMasterDatastore_1?? && spreadsheet@SearchMasterDatastore_1.hasRows())>
Das Spreadsheet ist leer oder existiert nicht. 
</#if>

getRows()Gibt alle Zeilen (siehe Rows) des Spreadsheets zurück - ohne Kopfzeile. -List<Row>
<#list spreadsheet@SearchMasterDatastore_1.getRows() as row>${row.get('id')}</#list>

Iteriert über alle Zeilen des Spreadsheets und gibt pro Zeile den Wert der Spalte id aus.

firstRow(String columnName)Gibt die angegebene  Spalte (columnName) aus der ersten Zeile des Spreadsheet zurückstringCol
Wert der Spalte "status" der ersten Zeile: ${output@SpreadsheetUrlDownload_2.firstRow("status")!}

Gibt den Wert der Spalte "Status" in der ersten Zeile aus.

firstRow(String columnName, String defaultValue);Wie firstRow(String columnName), gibt aber den defaultValue aus, falls die Spalte nicht vorhanden iststring, stringstring
Wert der Spalte "status" der ersten Zeile: ${output@SpreadsheetUrlDownload_2.firstRow("status", "open")!}

Gibt den Wert der Spalte "Status" in der ersten Zeile aus. Falls der Wert leer ist oder nicht existiert, wird der Default-Wert "open" zurück gegeben.

meta.map@KeyValueSpreadsheet.get(String Key)Gibt aus einem vorher erstellen KeyValueSpreadsheet, den Value des angegeben Keys zurückstringstring
Wert des Key1 aus KeyValueSpreadsheet1:
${meta.map@KeyValueSpreadsheet_1.get(Key1)}

Row

row Variable im Mapper

In den unteren Beispielen wird an einigen Stellen eine für sich allein stehende (ohne umschließende <#list> Anweisung) row-Variable verwendet.
Diese Variable ist automatisch im Mapper verfügbar und repräsentiert die aktuelle Quell-Zeile (Beispiel). Darüber hat man Zugriff auf alle Spalten (Col) dieser Zeile.

Beispiel - Wert einer der Spalte status ausgeben
${row.get("status")!}
Beispiel - alle Spalten als Key-Value Map mit Spaltentitel und Wert ausgeben
<#list row.getCols() as col>${col.getTitle()}=${col.get()}<#sep>;</#list>
Beispiel - alle Spaltenwerte komma-getrennt ausgeben
${row.getCols()?join(",")}

getCols()

Gibt alle Spalten der Zeile zurück.-ColumnList
bzw.
List<Col>
${row.getCols()?join(",")}

Fügt alle Spaltenwerte kommasepariert zusammen. 

${row.getCols()?filter(col -> col.getTitle()!?starts_with('price'))?join(",")}

Fügt alle Spaltenwerte kommasepariert zusammen, von Spalten, deren Titel mit dem Wort "price" beginnt. 

getRowNumber()

Gibt die aktuelle Zeilennumer aus.-int
Aktuelle Zeilennummer: ${row.getRowNumber()}
get(String headerColName)Gibt den Spaltenwert anhand des Spaltennamens aus.stringstring
Der Wert der Spalte 'status' ist: ${row.get("status")!}
isValid()Prüft ob alle Spalten entsprechend der Schema-Definition valide sind-boolean
<#list spreadsheet@SearchMasterDatastore_1.getRows() as row>
 <#if row.isValid()>
	Alle Spalten entsprechend dem im Datastore-Schema definierten Regeln (z.B. Pflichtfeld, Reg-Ex, Erlaubte Werte...)
 </#if>
</#list>

parent(String columnName)

Gibt die angegebene Spalte aus der Parentzeile (falls vorhanden) zurück.stringCol

Dies funktioniert nur bei Variant-Zeilen, die aus einem Datastore per SearchDatastore Step kommen. 

Siehe auch Auf Relationen zugreifen und Datastores - HierarchischeDaten.

${parent['columnname']!} - greift auf eine Spalte der Parent-Zeile zu
<#if row.parent()??>ja, ist Variante, weil Parent vorhanden<#else>Nein, ist keine Variante, da kein Parent vorhanden</#if>
master(String columnName)Gibt die angegebene Spalte aus der Master-Zeile (falls vorhanden) zurück. stringCol

Dies funktioniert nur bei Zeilen, die aus einem Child-Datastore per SearchDatastore Step kommen. 

Siehe auch Auf Relationen zugreifen und Datastores - HierarchischeDaten.

${master['columnname']!} - greift auf eine Spalte der Master-Zeile zu
<#if row.master()??>ja, ist Child-Zeile, weil Master vorhanden<#else>Nein, ist keine Child-Zeile, da kein Master vorhanden</#if>

variants()Gibt alle Varianten-Zeilen (sofern vorhanden) der aktuellen Parent-Zeile zurück.
List<Row>

Dies funktioniert nur bei Zeilen, die aus einem Datastore per SearchDatastore Step kommen.

Siehe auch Auf Relationen zugreifen und Datastores - HierarchischeDaten.

<#if (row.variants()?? && row.variants()?size > 0)>Diese Parentzeile hat ${row.variants()?size} Variantenzeilen<#else>Keine Variantenzeile vorhanden</#if>
<#if (row.variants()?? && row.variants()?size > 0)>
  
  <#list row.variants() as v>
    ${v.get('artikelnummer')!} -
  </#list>
  
</#if>
children()Gibt alle Child-Zeilen (sofern vorhanden) der aktuellen Master-Zeile zurück.

Dies funktioniert nur bei Zeilen, die aus einem Master-Datastore per SearchDatastore Step kommen und wenn es zu diesem Master-Datastore auch einen verknüpften Child-Datastore gibt. 

Siehe auch Auf Relationen zugreifen und Datastores - HierarchischeDaten.

<#if (row.children()?? && row.children()?size > 0)>Diese Masterzeile hat ${row.children()?size} Children<#else>Keine Children vorhanden</#if>
<#if (row.children()?? && row.children()?size > 0)>
  
  <#list row.children() as c>
    ${c.get('artikelnummer')!} -
  </#list>
  
</#if>
getSpreadsheet()Gibt das Spreadsheet-Objekt (siehe Spreadsheet) zurück, zu dem die aktuelle Zeile gehört. 
Spreadsheet

Col

get()Gibt den Textwert einer Spalte-string
${brandname.get()} ist das gleiche wie die Kurzform ${brandname!}. Das Ausrufezeichen am Ende sorgt dafür dass ein evtl. Null-Wert mit einem leeren String ("") ausgegeben wird.
get(String defaultValue)Wie get(), aber es wird der defaultValue ausgegeben, falls der Wert leer ist stringstring
${brandname.get("foo")} ist das gleiche wie die Kurzform ${brandname!"foo"}. Das Ausrufezeichen am Ende sorgt dafür dass ein evtl. Null-Wert mit einem leeren String ("") ausgegeben wird.
getTitle()Gibt den Spaltentitel aus.-string
${mycolumn.getTitle()}
getHeaderCol()Gibt die dazugehörigen  Kopfspalte aus.-Col
${mycolumn.getHeaderColumn().get()} ist das gleiche wie ${mycolumn.getTitle()!}
getRow()Gibt das Zeilenobjekt (siehe Row) zurück, zu der die Spalte gehört.
Row
Aktuelle Zeilennummer: ${mycolumn.getRow().getRowNumber()}

Fehlen Ihnen Beispiele?

Sollten Ihnen Beispiele fehlen, dann kontaktieren Sie uns gern über unseren Support oder schreiben eine Nachricht im Forum.

  • No labels