HTML Download aus csv Liste

Hi,
leider komme ich seit Tagen nicht weiter und bitte deshalb um eure Hilfe.
Folgendes habe ich vor:
Ich möchte aus ITScope einen Produktdatenexport einlesen und die bereitgestellten Daten der Produkte (CPU, RAM; SSD; Farbe etc) in einzelnen spalten einer csv auf einen FTP Server speichern.
Das ist mein aktueller Stand:
flow
Leider sind nicht alle Produkteigenschaften in der import-csv von itscope (Schritt 1) enthalten, sondern stehen auf einer HTML Seite bereit, deren URL in einer Spalte der csv steht.

Ziel wäre es jetzt die HTML Seite aufzurufen, und die Produkteigenschaften in die export-csv (Schritt 4) in einzelne Spalten zu schreiben.

Hier stoße ich allerdings an meine Grenzen.

Ist das ganze umsetzbar?

Ich freue mich auf eure Antworten
Tobias

Hallo Tobias,

die HTML Seiten der URL Spalte könntest du mit dem SpreadsheetUrlDownload Step abrufen. Dazu verbindest du den input des Steps mit dem output des Filter Steps. Im host Feld muss der Name der Spalte mit der Url eingefügt werden (geht über das + neben dem Eingabefeld). Mit dieser Einstellung wird für jede Zeile des Inputs die entsprechende Url abgerufen.

Als outputMode kannst du „Fügt den Inhalt der Antwort zum Ausgabe Spreadsheet hinzu“ auswählen. Damit erhältst du als Ergebnis ein Spreadsheet, dass (pro Zeile des inputs) den Inhalt der HTML Seite
enthält.

Zusätzlich solltest du in den erweiterten Einstellungen im Feld outputSourceColumns noch eine „ID“ Spalte angeben, damit du die Zeilen im Ergebnis der richtigen Zeile im Input zuordnen kannst.

Damit du diese Ergebnisse in der Konfiguration (Mapping) JTLcreateArticleImportFile Step verwenden kannst, müsstest du diese mit Hilfe des DatastoreWriter Steps in einen Datastore speichern.
Als identifier kannst du die Spalte verwenden, die du im outputSourceColumns Feld angegeben hast („source_“ im Titel der Spalte wir automatisch vom Step angehängt)

In der Konfiguration des JTLcreateArticleImportFile kannst du dir dann über die Querverweis Funktion die abgerufene HTML Seite pro Zeile aus dem Datastore holen.

Ich hoffe das hilft dir erstmal ein Stück weiter. Falls du Fragen dazu hast, kannst du uns gern nochmal schreiben.

Viele Grüße
Torsten

1 „Gefällt mir“

Cool vielen Dank für die schnelle Hilfe.
Jetzt bin ich schon mal einen Schritt weiter =)
Aktueller Stand:

Im Datastore habe ich jetzt zu jeder puid den HTML Inhalt:

Blockzitat Datenblatt: Dell 5570 - Intel Core i7 12700H / 2.3 GHz - vPro Essentials - Win 10 Pro (mit Win 11 Pro Lizenz) :root { /* This is the height of the company logo (75px) + padding top and bottom (10px each) / --pdf-header-height: 62px; / Adjust to resulting footer height */ --pdf-footer-height: 72px; } @import url(‚https://cdn.itscope.com/vtemplate/fonts/ptsans/ptsans.css‘); body { max-width: 1024px; margin: 0 auto; background-color: #f2f2f2; } body, td { font-family: ‚PT Sans‘, Arial, Helvetica, sans-serif; font-size: 14px; line-height: 1.2; color: #616161; } p { font-size: 14px; -webkit-margin-before: 0.7em; -webkit-margin-after: 0.7em; -webkit-margin-start: 0; -webkit-margin-end: 0; } table { padding-bottom: 10px; width: 100%; } td.pn { font-size: 24px; color: #fff; padding: 15px 0 15px 20px; } h1 { padding: 0; font-weight: normal; font-size: 1.2em; left: 30px; margin: 0; position: absolute; top: 10px } h2 { -webkit-margin-before: 0.4em; -webkit-margin-after: 0.4em; -webkit-margin-start: 0; -webkit-margin-end: 0; font-size: 16px; font-weight: bold; } h3 { -webkit-margin-before: 0.3em; -webkit-margin-after: 0.3em; -webkit-margin-start: 0; -webkit-margin-end: 0; font-size: 14px; font-weight: bold; } td.copy { overflow: hidden; height: 15px; color: #757575; padding: 10px 5px; text-align: center; font-size: 12px; } table.container { margin: 0 auto; left: 0; text-align: left; font-size: 0.75em; } td.container { color: #3592bd; height: 5px; overflow: hidden; } a:hover { text-decoration: none; color: #0e92cb; } a { text-decoration: none; color: #35b8f1; } td.pn1 { padding: 4px 0 4px 20px; line-height: 24px; border-bottom: 1px solid #eee; border-top: 1px solid #eee; font-size: 18px; color: #fff; background-color: #555555; } td.pn1 a, td.pn1 a:hover { color: #fff; } td.pn2 { padding: 4px 20px; font-size: 11px; line-height: 24px; border-top: 1px solid #eee; border-bottom: 1px solid #eee; background-color: #555555; } td.ki { padding-bottom: 30px !important; border-bottom: 0 !important; color: #fff !important; } .logo { vertical-align: top; height: 42px; float: right; } .pic { max-width: 260px; max-height: 200px; margin: 0; } img.i { width: 50px; height: 38px; } td.pic { padding-left: 3px; } td.pictbl { color: #555; vertical-align: top; width: 335px; height: 250px; } td.h { color: #555; border-bottom: 1px solid #eee; vertical-align: top; padding: 4px 20px; } td.hh { color: #fff; padding: 4px 20px; width: 200px; } .header-space, .footer-space { height: 0; } td.ht { padding: 4px 20px; border-bottom: 1px solid #eee; } td.h2 { text-align: right; border-bottom: 1px solid #d6d6d6; } td.b { color: #555; vertical-align: top; border-bottom: 1px solid #eee; padding: 4px 20px; } td.r { background-color: #fff; } td.hb { color: #fff; padding: 4px 20px; } td.ba { color: #000; padding: 2px 2px 2px 20px; vertical-align: top; border-bottom: 1px solid #d6d6d6; } td.even { color: #000; padding: 2px 2px 2px 7px; vertical-align: middle; } td.odd { color: #000; background-color: #eef; padding: 2px 2px 2px 7px; vertical-align: middle; } .logo-header { background-color: #f2f2f2; width: 100%; float: right; } .ident { height: 25px; } .header-row, .header-row td { background-color: #555555; } .footer { background-color: #555555; padding: 15px 0 40px; width: 100%; } .footer a { color: rgba(255, 255, 255, .5); } .footer_link-separator { margin-right: 7px; color: rgba(255, 255, 255, .5); } .footer_company { color: rgba(255, 255, 255, .5); margin-right: 7px; } .footer_meta { text-align: center; } .gallery { position: relative; margin: 30px 20px; } .slides { display: none; } .single-pic { display: flex; } .picture-container { margin: 0 15px; width: 260px; height: 200px; border: 2px solid #9c9c9c; background-color: #FFFFFF; align-items: center; justify-content: center; } .prev, .next { cursor: pointer; position: absolute; top: 75px; left: -25px; width: auto; padding: 16px; color: white; font-weight: bold; font-size: 20px; border-radius: 0 3px 3px 0; user-select: none; -webkit-user-select: none; } .next { top: 75px; left: 275px; border-radius: 3px 0 0 3px; } @page { margin: 0; } .energy-efficiency-class{ position: relative; display: block; right: 48px; top:-70px; } .energy-efficiency-class img{ width: 70px; } .con-tooltip { position: relative; display: inline-block; transition: all 0.3s ease-in-out; cursor: default; z-index: 2; } .tooltip img{ width: 240px; padding-bottom:10px; border-radius: 4px; } .tooltip a{ color:white; text-decoration: underline; } .tooltip { visibility: hidden; position: absolute; z-index: -1; opacity: .40; display: block; width: 240px; top:-100px; left:-240px; padding: 20px 20px; text-align: center; background: #333; color: white; border-radius: 4px; transition: all 0.3s ease-in-out; box-shadow: 0 0 3px rgba(56, 54, 54, 0.86); } .con-tooltip:hover .tooltip{ visibility: visible; transform: translateX(-12px); opacity: 1; transition: .1s linear; } @media print { body { width: 100%; margin: 0; } .pdf-header, .header-space { height: var(–pdf-header-height); width: 100%; } .pdf-footer, .footer-space { height: var(–pdf-footer-height); width: 100%; } .pdf-header { position: fixed; top: 0; } .pdf-footer { position: fixed; bottom: 0; } .prev, .next { display: none; } }


Da müsste dann an den nächsten Schritt der Spaltentitel „Farbe“ und pro puid der Wert z.B. „Grau“ sein.
Ich glaube das müsste eigentlich mit HTML2Spreadsheet gehen, aber ich bekomme den Schritt zwischen DatastoreWriter und JTLcreateArtivleImportFile nicht hin.

Bitte nochmal um Hilfe

 
Dell 5570 - Intel Core i7 12700H / 2.3 GHz - vPro Essentials - Win 10 Pro (mit Win 11 Pro Lizenz)
RTX A2000 - 16 GB RAM - 512 GB SSD NVMe - 39.624 cm (15.6") Touchscreen 3840 x 2400 (Ultra HD Plus) - Wi-Fi 6E - Grau - mit 3 Jahre Dell ProSupport
Gruppe Notebooks
Hersteller Dell
Hersteller Art. Nr. NRN71
EAN/UPC 5397184731291
 
Beschreibung
Dell 5570 - Intel Core i7 12700H / 2.3 GHz - vPro Essentials - Win 10 Pro (mit Win 11 Pro Lizenz) - RTX A2000 - 16 GB RAM - 512 GB SSD NVMe - 39.624 cm (15.6") Touchscreen 3840 x 2400 (Ultra HD Plus) - Wi-Fi 6E - Grau - mit 3 Jahre Dell ProSupport

Hauptmerkmale 
ProduktbeschreibungDell 5570 - 39.624 cm (15.6") - Core i7 12700H - vPro Essentials - 16 GB RAM - 512 GB SSD
ProdukttypMobile Workstation
BetriebssystemWin 10 Pro + Windows 11 Pro Lizenz - Niederländisch / Englisch / Französisch / Deutsch/ Italienisch
Plattform-TechnologieIntel vPro Essentials
ProzessorIntel Core i7 (12. Gen.) 12700H / 2.3 GHz (4.7 GHz) / 24 MB Cache
Speicher16 GB DDR5 (2 x 8 GB)
Speicherkapazität512 GB SSD - NVMe
Bildschirm39.624 cm (15.6") WLED Touchscreen 3840 x 2400 / Ultra HD Plus @ 60 Hz - 290 ppi (Pixel pro Zoll)
GrafikNVIDIA RTX A2000
Videospeicher8 GB GDDR6 SDRAM
EingabegerätTastatur, Touchpad
Tastatur HinterbeleuchtungJa
Integrierte WebcamJa
NetzwerkBluetooth 5.2, 802.11a/b/g/n/ac/ax (Wi-Fi 6E)
Batterie6 Zellen
BesonderheitenBeschleunigungssensor, Umgebungslichtsensor, Näherungssensor, Magnetometer, Hall-Sensor, Deckel offen-Sensor
SicherheitTrusted Platform Module (TPM 2.0) Security Chip
FarbeGrau
Abmessungen (Breite x Tiefe x Höhe)34.44 cm x 23.014 cm x 1.854 cm
Gewicht2.1 kg
Services im Bundle3 Jahre Dell ProSupport
Technische Daten © 1WorldSync. Technische Änderungen und Irrtümer vorbehalten.

Ich bräuchte jetzt einige Attribute aus der HTML für den nächsten Schritt.
Z.B.

FarbeGrau

Hallo Tobias,

ein Html2Spreadsheet Step nach dem SpreadsheetUrlDownload Step wäre sicher noch sinnvoll. Den Input kannst du mit dem Output des SpreadsheetUrlDownload Steps verknüpfen und anschließen die „responseContent“ Spalte auswählen.

Auf Basis deines HTMLs Codes von oben müsste das processingTemplate in etwa wie folgt aussehen:

<#assign row = target.addRow()>
<#assign row = target.addRow()>

${row.addCol("identifier", inputRow.get("source_puid")!)}

<#assign selectedHtml = selectHTML("td") /> <#-- alle td Elemente auswählen -->
<#if selectedHtml??> 
  <#list selectedHtml as childElement>  <#-- alle td Element in Schleife durchlaufen -->
    <#if childElement.html()?contains("Farbe")>  <#-- Wenn das element "Farbe" enthält  -->
      ${row.addCol("Farbe", childElement.nextElementSibling().html()!)} <#-- dann den Inhalt des nächsten Elements als Wert in Spalte "Farbe" ausgeben -->
      <#break>
   </#if>
 </#list>
</#if>

Das Ergebnis sollte dann folgendermaßen aussehen:

Viele Grüße,
Torsten

ok wieder einen Schritt weiter. Danke Torsten :blush:
Also ich hab das jetzt so.

Beim Schritt HTML2Spreadsheet:
Wie bekomme ich das möglichst elegant auch noch die anderen Attribute wie Netzwerk, Eingabegerät, Bildschirm als neue Spalten in die Tabelle geschrieben?

Beim JTLcreateArticleImportFile
Wie kann ich da dann auf die Werte aus HTML2Spreadsheet zugreifen? muss ich über den DatastoreWriter gehen? Weil da kommt nichts sinnvolles raus bei mir.

Hallo Tobias,

Du kannst die Bedingung <#if childElement.html()?contains("Farbe") ... erweitern, sodass die weiteren Attribute auch ausgeben werden:

<#assign row = target.addRow()>
<#assign row = target.addRow()>

${row.addCol("identifier", inputRow.get("source_puid")!)}

<#assign selectedHtml = selectHTML("td") /> <#-- alle td Elemente auswählen -->
<#if selectedHtml??> 
  <#list selectedHtml as childElement>  <#-- alle td Element in Schleife durchlaufen -->
    <#if childElement.html()?contains("Farbe") || childElement.html()?contains("Netzwerk") || childElement.html()?contains("Eingabegerät")>  <#-- Wenn das element "Farbe", "Netzwerk" oder "Eingabegerät" enthält  -->
      ${row.addCol( childElement.html()!?trim, childElement.nextElementSibling().html()!)} <#-- dann den Inhalt des nächsten Elements als Wert in Spalte ausgeben -->
   </#if>
 </#list>
</#if>

Die neuen Spalten (z.B. Farbe) werden vermutlich noch nicht im Schema des Datastores vorhanden sein. Versuche mal die erweiterte Einstellung autoExtendSchema im DatastoreWriter zu aktiveren. Nach der Ausführung sollten die neuen Spalten dann im Datastore bzw. Schema vorhanden sein

Viele Grüße
Torsten

Hi Torsten,
vielen Dank schon mal für die tolle Unterstützung. Bis auf den Step JTLcreateArticleImportFile funktioniert jetzt alles.
Bei dem letzten Step finde ich die Spalten aus dem Datastore leider noch nicht.
Hier ist der aktuelle Stand vom DatastoreWriter mit den richtigen Attributen aus dem HTML2Spreadsheet

Und hier ist die Ansicht aus dem JTLcreateArticleImportFile: Da finde ich leider die Spalten nicht

Hallo Tobias,

kannst du bitte nochmal sicherstellen, dass du die Option autoExtendSchema im DatastoreWriter aktiviert hast und anschließend die Vorschau des DatastoreWriter Steps („Auge“) ausführen. Erst danach sind die neuen Spalten im Schema des Datastores vorhanden.

Viele Grüße
Torsten

Viele Grüße,
Torsten

Hi Torsten,
mir ist aufgefallen, dass ich scheinbar gesperrt werde, weil die Produktseiten in zu kurzer Zeit aufgerufen werden.
Ich habe jetzt das höhere Paket der Produktdaten für den Export von ITScope freigeschaltet. Jetzt stehen alle Produktdaten als html in der Spalte htmlSpecs:

<div id="HTML_SPEC" class="ITSs"><div class="ITSg">Allgemein</div><div class="ITSr0"><div class="ITSn">Produkttyp</div><div class="ITSv">Mobile Workstation</div></div><div class="ITSr1"><div class="ITSn">Betriebssystem</div><div class="ITSv">Windows 10 Pro + Windows 11 Pro Lizenz - Niederländisch / Englisch / Französisch / Deutsch/ Italienisch</div></div><div class="ITSg">Prozessor / Chipsatz</div><div class="ITSr0"><div class="ITSn">CPU</div><div class="ITSv">Intel Core i7 (12. Gen.) 12700H / 2.3 GHz</div></div><div class="ITSr1"><div class="ITSn">Max. Turbo-Taktfrequenz</div><div class="ITSv">4.7 GHz</div></div><div class="ITSr0"><div class="ITSn">Anz. der Kerne</div><div class="ITSv">14 Kerne</div></div><div class="ITSr1"><div class="ITSn">Cache</div><div class="ITSv">24 MB</div></div><div class="ITSr0"><div class="ITSn">Plattform-Technologie</div><div class="ITSv">Intel vPro Essentials</div></div><div class="ITSr1"><div class="ITSn">Funktionen</div><div class="ITSv">Intel Smart Cache, Intel Deep Learning Boost (DL Boost)</div></div><div class="ITSg">Speicher</div><div class="ITSr0"><div class="ITSn">RAM</div><div class="ITSv">16 GB (2 x 8 GB)</div></div><div class="ITSr1"><div class="ITSn">Max. unterstützter RAM-Speicher</div><div class="ITSv">64 GB</div></div><div class="ITSr0"><div class="ITSn">Technologie</div><div class="ITSv">DDR5 SDRAM</div></div><div class="ITSr1"><div class="ITSn">Geschwindigkeit</div><div class="ITSv">4800 MHz</div></div><div class="ITSr0"><div class="ITSn">Nenndrehzahl</div><div class="ITSv">4800 MHz</div></div><div class="ITSr1"><div class="ITSn">Formfaktor</div><div class="ITSv">SO DIMM 262-PIN</div></div><div class="ITSr0"><div class="ITSn">Anz. Steckplätze</div><div class="ITSv">2</div></div><div class="ITSr1"><div class="ITSn">Leere Steckplätze</div><div class="ITSv">0</div></div><div class="ITSg">Speicherkapazität</div><div class="ITSr0"><div class="ITSn">Hauptspeicher</div><div class="ITSv">512 GB SSD M.2 2280 PCIe 4.0 x4 - NVM Express (NVMe)</div></div><div class="ITSg">Bildschirm</div><div class="ITSr0"><div class="ITSn">Typ</div><div class="ITSv">39.624 cm (15.6")</div></div><div class="ITSr1"><div class="ITSn">LCD-Hintergrundbeleuchtung</div><div class="ITSv">WLED-Hintergrundbeleuchtung</div></div><div class="ITSr0"><div class="ITSn">Touchscreen</div><div class="ITSv">Ja (10-Punkt-Multi-Touch)</div></div><div class="ITSr1"><div class="ITSn">Auflösung</div><div class="ITSv">3840 x 2400 (Ultra HD Plus)</div></div><div class="ITSr0"><div class="ITSn">Vertikale Bildwiederholrate bei max. Auflösung</div><div class="ITSv">60 Hz</div></div><div class="ITSr1"><div class="ITSn">Breitbild</div><div class="ITSv">Ja</div></div><div class="ITSr0"><div class="ITSn">Pixeldichte (ppi)</div><div class="ITSv">290</div></div><div class="ITSr1"><div class="ITSn">Helligkeit</div><div class="ITSv">500 cd/m²</div></div><div class="ITSr0"><div class="ITSn">Farbraum</div><div class="ITSv">100% Adobe RGB, 94% DCI-P3</div></div><div class="ITSr1"><div class="ITSn">Besonderheiten</div><div class="ITSv">UltraSharp, entspiegelt, Premium Panel Guarantee, breiter Betrachtungswinkel, horizontaler Betrachtungswinkel von ±89°, vertikaler Betrachtungswinkel von ±89°, kompatibel mit HDR 400, Low Blue Light-Technologie, 0.09 mm Pixelabstand, 60 ms Ansprechrate</div></div><div class="ITSg">Audio & Video</div><div class="ITSr0"><div class="ITSn">Grafikprozessor</div><div class="ITSv">NVIDIA RTX A2000</div></div><div class="ITSr1"><div class="ITSn">Videospeicher</div><div class="ITSv">8 GB GDDR6 SDRAM</div></div><div class="ITSr0"><div class="ITSn">Kamera</div><div class="ITSv">Ja - 1280 x 720 (Standard), 576 x 360 (Infrarot)</div></div><div class="ITSr1"><div class="ITSn">Auflösung</div><div class="ITSv">0,92 Megapixel (Standard), 0,2 Megapixel (Infrarot)</div></div><div class="ITSr0"><div class="ITSn">Bildsensortyp</div><div class="ITSv">CMOS</div></div><div class="ITSr1"><div class="ITSn">Videoauflösungen</div><div class="ITSv">1280 x 720</div></div><div class="ITSr0"><div class="ITSn">Bildrate</div><div class="ITSv">30 Bilder pro Sekunde</div></div><div class="ITSr1"><div class="ITSn">Kameramerkmale</div><div class="ITSv">IR-/RGB-Kamera, 78,5 Grad</div></div><div class="ITSr0"><div class="ITSn">Ton</div><div class="ITSv">Stereolautsprecher, Dual-Array-Mikrofon</div></div><div class="ITSr1"><div class="ITSn">Codec</div><div class="ITSv">Realtek ALC3281</div></div><div class="ITSr0"><div class="ITSn">Kompatibilität</div><div class="ITSv">High-Definition-Audio</div></div><div class="ITSg">Eingang</div><div class="ITSr0"><div class="ITSn">Typ</div><div class="ITSv">Tastatur, Touchpad</div></div><div class="ITSr1"><div class="ITSn">Tastatur Hinterbeleuchtung</div><div class="ITSv">Ja</div></div><div class="ITSg">Kommunikationsformen</div><div class="ITSr0"><div class="ITSn">Drahtlos</div><div class="ITSv">Bluetooth 5.2, 802.11a/b/g/n/ac/ax (Wi-Fi 6E)</div></div><div class="ITSr1"><div class="ITSn">Drahtlos-Controller</div><div class="ITSv">Intel Wi-Fi 6E AX 211</div></div><div class="ITSr0"><div class="ITSn">Besonderheiten</div><div class="ITSv">Dual-Strom (2x2)</div></div><div class="ITSg">Batterie</div><div class="ITSr0"><div class="ITSn">Technologie</div><div class="ITSv">6 Zellen Lithium-Ionen</div></div><div class="ITSr1"><div class="ITSn">Kapazität</div><div class="ITSv">86 Wh</div></div><div class="ITSg">AC-Adapter</div><div class="ITSr0"><div class="ITSn">Eingang</div><div class="ITSv">Wechselstrom 100-240 V (50/60 Hz)</div></div><div class="ITSr1"><div class="ITSn">Ausgang</div><div class="ITSv">130 Watt, 20 V, 6.5 A</div></div><div class="ITSg">Verbindungen & Erweiterung</div><div class="ITSr0"><div class="ITSn">Steckplatz</div><div class="ITSv">2 x M.2 Card (1 frei)</div></div><div class="ITSr1"><div class="ITSn">Schnittstellen</div><div class="ITSv">2 x USB4 (supports Thunderbolt 4, DisplayPort 1.4a Alt Mode) (Power Delivery) ¦ USB-C 3.2 Gen 2 (supports DisplayPort Alt Mode) (Power Delivery) ¦ Kopfhörer-/Mikrofonkombinationsbuchse</div></div><div class="ITSr0"><div class="ITSn">Speicherkartenleser</div><div class="ITSv">Ja (SD-Karte, SDHC-Karte, SDXC-Karte)</div></div><div class="ITSg">Software</div><div class="ITSr0"><div class="ITSn">Software inbegriffen</div><div class="ITSv">Microsoft Office (30 Tage Testversion, ohne Office-Lizenz)</div></div><div class="ITSg">Verschiedenes</div><div class="ITSr0"><div class="ITSn">Farbe</div><div class="ITSv">Grau</div></div><div class="ITSr1"><div class="ITSn">Integrierte Optionen</div><div class="ITSv">Beschleunigungssensor, Umgebungslichtsensor, Näherungssensor, Magnetometer, Hall-Sensor, Deckel offen-Sensor</div></div><div class="ITSr0"><div class="ITSn">Sicherheit</div><div class="ITSv">Trusted Platform Module (TPM 2.0) Security Chip</div></div><div class="ITSr1"><div class="ITSn">Leistungsmerkmale</div><div class="ITSv">ExpressCharge</div></div><div class="ITSr0"><div class="ITSn">Diebstahl-/Einbruchschutz</div><div class="ITSv">Sicherheitsschloss-Schlitz (Kabelschloss wird separat verkauft)</div></div><div class="ITSr1"><div class="ITSn">Schlosstyp zur Diebstahlsicherung</div><div class="ITSv">Noble Wedge Slot</div></div><div class="ITSr0"><div class="ITSn">Zubehör im Lieferumfang</div><div class="ITSv">USB-C Stromadapter</div></div><div class="ITSr1"><div class="ITSn">Kennzeichnung</div><div class="ITSv">FIPS 140-2</div></div><div class="ITSg">Abmessungen und Gewicht</div><div class="ITSr0"><div class="ITSn">Abmessungen (Breite x Tiefe x Höhe)</div><div class="ITSv">34.44 cm x 23.014 cm x 1.854 cm</div></div><div class="ITSr1"><div class="ITSn">Gewicht</div><div class="ITSv">2.1 kg</div></div><div class="ITSg">Herstellergarantie</div><div class="ITSr0"><div class="ITSn">Services im Bundle</div><div class="ITSv">3 Jahre Dell ProSupport</div></div><div class="ITSg">Umgebungsbedingungen</div><div class="ITSr0"><div class="ITSn">Min Betriebstemperatur</div><div class="ITSv">0 °C</div></div><div class="ITSr1"><div class="ITSn">Max. Betriebstemperatur</div><div class="ITSv">35 °C</div></div><div class="ITSr0"><div class="ITSn">Zulässige Luftfeuchtigkeit im Betrieb</div><div class="ITSv">10 - 90 % (nicht-kondensierend)</div></div><div class="ITSr1"><div class="ITSn">Schocktoleranz (in Betrieb)</div><div class="ITSv">110 g @ 2 ms Halbsinus-Impuls</div></div><div class="ITSr0"><div class="ITSn">Schocktoleranz (nicht in Betrieb)</div><div class="ITSv">160 g @ 2 ms Halbsinus-Impuls</div></div><div class="ITSr1"><div class="ITSn">Vibrationstoleranz (in Betrieb)</div><div class="ITSv">0.66 g @ RMS (random)</div></div><div class="ITSr0"><div class="ITSn">Vibrationstoleranz (nicht in Betrieb)</div><div class="ITSv">1.3 g @ RMS (random)</div></div></div>

Daraus brauche ich jetzt wieder einige technische Daten CPU, RAM, Farbe

Wenn ich das analog zum vorigen Vorschlag mache kommt immer der Fehler:

<#assign row = target.addRow()>
<#assign row = target.addRow()>
${row.addCol(„identifier“, inputRow.get(„source_puid“)!)}
<#assign selectedHtml = selectHTML(„div“) /> <#-- alle td Elemente auswählen →
<#if selectedHtml??>
<#list selectedHtml as childElement> <#-- alle td Element in Schleife durchlaufen →
<#if childElement.html()?contains(„CPU“) || childElement.html()?contains(„RAM“) || childElement.html()?contains(„Farbe“)> <#-- Wenn das element „Farbe“, „Netzwerk“ oder „Eingabegerät“ enthält →
${row.addCol( childElement.html()!?trim, childElement.nextElementSibling().html()!)} <#-- dann den Inhalt des nächsten Elements als Wert in Spalte ausgeben →
</#if>
</#list>
</#if>

woran kann das liegen?
VG
Tobias

Hallo Tobias,

Die Fehlermeldung bedeutet, dass die Spalte source_puid im input Spreadsheet nicht vorhaden ist. Du hast den Flow sicherlich etwas umgebaut und den SpreadsheetUrlDownload Step entfernt. Die Spalte
source_puid gibt es vermutlich deshalb nicht mehr im input des HTML2Spreadsheet Steps.

Wenn du jetzt direkt den output des ITscopeGetProductExportCSV Steps als input verwendest, sollte die Spalte puid heißen.

<#assign row = target.addRow()>
<#assign row = target.addRow()>

${row.addCol("identifier", inputRow.get("puid")!)}

<#assign selectedHtml = selectHTML("div") /> <#-- alle td Elemente auswählen -->
<#if selectedHtml??> 
  <#list selectedHtml as childElement>  <#-- alle td Element in Schleife durchlaufen -->
    <#if childElement.attr("class") == "ITSn" && (childElement.html()?contains("Farbe") || childElement.html()?contains("Netzwerk") || childElement.html()?contains("Eingabegerät"))>  <#-- Wenn das element "Farbe", "Netzwerk" oder "Eingabegerät" enthält  -->
      ${row.addCol( childElement.html()!?trim, childElement.nextElementSibling().html()!)} <#-- dann den Inhalt des nächsten Elements als Wert in Spalte ausgeben -->
   </#if>
 </#list>
</#if>

Hier nochmal die Anpassungen als Screenshot:

Die Anpassung childElement.attr("class") == "ITSn" prüft ob das Element die Klasse „ITSn“ hat. Nur das zutrifft und „Farbe“, „Netzwerk“ oder „Eingabegerät“ enthalten ist, wird es als Spalte ausgegeben.

image

Viele Grüße
Torsten

ok das läuft jetzt. :blush:

Leider bekomme ich die Daten aber noch nicht im. Da steht immer nur no record found

In der Vorschau vom DatastoreWriter sind die Daten eigentlich drin:

Hast du den Flow ausgeführt ? Die Daten werden in der Vorschau Ausführung nicht in den Datastore geschrieben.

Du kannst auch in den „ITSCOPE“ Datastore schauen und prüfen ob es da eine Zeile mit identifier = 13912744000 gibt.

wenn ich den Flow ausführe kommt der Fehler

Im Datastore sind keine Einträge

Hallo Tobias,

das Datenzeilen Limit für dein Basis Paket (100 Zeilen) wurde beim schreiben in den Datastore überschritten. Du kannst zum testen im ITscopeGetProductExportCSV das limit Feld auf 100 (oder weniger) setzen.

Wenn du mehr Zeilen im Datastore speichern willst, kannst du in ein anderes Basis Paket Preise & Add-Ons wechseln oder ein Flex Upgrade buchen.

Viele Grüße
Torsten

Yipieee es funktioniert :smiling_face_with_three_hearts:

Jetzt baue ich mal das csv richtig um und schaue ob ich nochmal auf Probleme stoße.
Vielen herzlichen Dank schon mal
VG
Tobias

1 „Gefällt mir“