{"id":5908,"date":"2026-10-05T09:59:39","date_gmt":"2026-10-05T07:59:39","guid":{"rendered":"https:\/\/wordpress.sprintcx.net\/zoho-analytics-custom-functions-und-wahrungs-api-im-reporting-tutorial\/"},"modified":"2026-10-05T15:15:04","modified_gmt":"2026-10-05T13:15:04","slug":"zoho-analytics-custom-functions-und-wahrungs-api-im-reporting-tutorial","status":"publish","type":"post","link":"https:\/\/wordpress.sprintcx.net\/de\/zoho-analytics-custom-functions-und-wahrungs-api-im-reporting-tutorial\/","title":{"rendered":"Zoho Analytics Custom Functions und W\u00e4hrungs-API im Reporting-Tutorial"},"content":{"rendered":"<h2>Zoho Analytics am Limit? So l\u00f6st Du komplexe Reporting-Anforderungen mit Custom Functions und externen APIs<\/h2>\n<p>Daten sind das Gold des 21. Jahrhunderts \u2013 eine oft geh\u00f6rte Phrase, die jedoch selten den Weg zur praktischen Umsetzung beleuchtet. Mit <a href=\"\/de\/zoho-analytics\/\" target=\"_blank\">Zoho Analytics<\/a> hast Du ein m\u00e4chtiges Werkzeug zur Hand, um Deine Gesch\u00e4ftsdaten zu visualisieren und fundierte Entscheidungen zu treffen. Doch was passiert, wenn die Standardfunktionen an ihre Grenzen sto\u00dfen? Wenn Deine Anforderungen so spezifisch werden, dass einfache Drag-and-Drop-Berichte nicht mehr ausreichen? Genau hier zeigt sich die wahre St\u00e4rke des Zoho-\u00d6kosystems: die Erweiterbarkeit durch Custom Functions, SQL-Abfragen und die Anbindung an externe Dienste. In diesem Artikel zeigen wir Dir anhand eines realen Szenarios, wie Du typische H\u00fcrden im Reporting \u00fcberwindest und Dein Dashboard zu einer pr\u00e4zisen Steuerungseinheit machst.<\/p>\n<h3>Die Herausforderung: Ein Praxisbeispiel aus der Medienbranche<\/h3>\n<p>Stell Dir ein Unternehmen vor, das im internationalen Lizenzhandel t\u00e4tig ist. Es nutzt <a href=\"\/de\/zoho-crm\/\" target=\"_blank\">Zoho CRM<\/a>, um Deals, Ums\u00e4tze und Kosten zu verwalten. Die Herausforderung: Die Ums\u00e4tze werden in US-Dollar (USD) erfasst, w\u00e4hrend die damit verbundenen Produktionskosten in Euro (EUR) in einem anderen Modul oder System anfallen. Ziel ist es, in <a href=\"\/de\/zoho-analytics\/\" target=\"_blank\">Zoho Analytics<\/a> ein &#8222;Performance Dashboard&#8220; zu erstellen, das den tats\u00e4chlichen Return on Invest (ROI) f\u00fcr jedes Produkt korrekt darstellt. Dabei treten folgende, sehr praxisnahe Probleme auf:<\/p>\n<ul>\n<li><strong>W\u00e4hrungsinkonsistenz:<\/strong> Eine direkte Berechnung des ROI (Umsatz \/ Kosten) liefert falsche Ergebnisse, da USD und EUR nicht 1:1 verrechnet werden k\u00f6nnen.<\/li>\n<li><strong>Fehlerhafte Zeitfilter:<\/strong> Der Standardfilter &#8222;Letzte 3 Monate&#8220; in Zoho Analytics schlie\u00dft den aktuellen, unvollst\u00e4ndigen Monat mit ein. F\u00fcr eine saubere Auswertung abgeschlossener Perioden ist dieser Filter unbrauchbar.<\/li>\n<li><strong>Limitierte Formatierung:<\/strong> Wichtige Daten, wie das bald ablaufende Enddatum einer Lizenz, sollen visuell hervorgehoben werden. Die Standardregeln f\u00fcr bedingte Formatierungen sto\u00dfen hier an ihre Grenzen.<\/li>\n<li><strong>Fehlende Sortierfunktionen:<\/strong> Die erstellte Tabelle l\u00e4sst sich nicht nach den wichtigsten Kennzahlen wie &#8222;Umsatz&#8220; oder &#8222;ROI&#8220; sortieren, was die Analyse erschwert.<\/li>\n<\/ul>\n<p>Diese Probleme sind nicht auf die Medienbranche beschr\u00e4nkt. Jedes Unternehmen, das mit mehreren W\u00e4hrungen, genauen Zeitraumen oder spezifischen KPIs arbeitet, kennt diese H\u00fcrden. Sehen wir uns an, wie Du sie Schritt f\u00fcr Schritt l\u00f6sen kannst.<\/p>\n<h3>Schritt-f\u00fcr-Schritt-Anleitung zur L\u00f6sung<\/h3>\n<h4>1. W\u00e4hrungsinkonsistenz mit einer API und Deluge beheben<\/h4>\n<p>Um den ROI korrekt zu berechnen, m\u00fcssen wir die Kosten von EUR in USD umrechnen. Anstatt einen statischen Umrechnungskurs zu verwenden, der schnell veraltet ist, nutzen wir eine externe W\u00e4hrungs-API. Dies sorgt f\u00fcr Genauigkeit und Automatisierung. Dienste wie <strong>exchangerate.host<\/strong> oder die <strong>API der Europ\u00e4ischen Zentralbank (EZB)<\/strong> bieten kostenlose Zugriffspunkte.<\/p>\n<p>Wir erstellen in <a href=\"\/de\/zoho-analytics\/\" target=\"_blank\">Zoho Analytics<\/a> eine benutzerdefinierte Funktion (Custom Function) mit Deluge, der Skriptsprache von Zoho. Diese Funktion fragt den aktuellen Kurs ab und gibt den umgerechneten Wert zur\u00fcck.<\/p>\n<p><strong>Schritt 1: Erstelle eine neue Custom Function<\/strong><br \/>\nGehe in Deiner Zoho Analytics Arbeitsumgebung zu &#8222;Daten&#8220; -&gt; W\u00e4hle Deine Tabelle aus -&gt; &#8222;Neu&#8220; -&gt; &#8222;Neue benutzerdefinierte Formel&#8220;. W\u00e4hle als Typ &#8222;Function&#8220; und gib ihr einen Namen, z.B. <code>convertEURtoUSD<\/code>.<\/p>\n<p><strong>Schritt 2: F\u00fcge das Deluge-Skript ein<\/strong><br \/>\nDas Skript nimmt den Euro-Betrag als Input, ruft die API auf, parst die Antwort und gibt den Dollar-Betrag zur\u00fcck.<\/p>\n<pre><code>\n\/\/ Deluge Custom Function for Zoho Analytics\n\/\/ Funktion, um einen EUR-Betrag in USD umzurechnen via API\n\/\/ Input: eur_value (Decimal) - Der Kostenwert in Euro\n\n\/\/ API-Endpunkt f\u00fcr die Umrechnung von EUR zu USD\n\/\/ Wir verwenden hier einen einfachen, kostenlosen Dienst. F\u00fcr Produktionsumgebungen empfiehlt sich ein robusterer Anbieter.\napi_url = \"https:\/\/api.exchangerate.host\/latest?base=EUR&amp;symbols=USD\";\n\ntry \n{\n\t\/\/ API-Aufruf mit invokeurl\n\tresponse = invokeurl\n\t[\n\t\turl :api_url\n\t\ttype :GET\n\t];\n\n\t\/\/ Extrahieren des USD-Kurses aus der JSON-Antwort\n\tusd_rate = response.get(\"rates\").get(\"USD\");\n\n\t\/\/ Pr\u00fcfen, ob ein g\u00fcltiger Kurs zur\u00fcckgegeben wurde\n\tif(usd_rate != null)\n\t{\n\t\t\/\/ Umrechnung durchf\u00fchren und auf 2 Dezimalstellen runden\n\t\tusd_value = (eur_value * usd_rate).round(2);\n\t\treturn usd_value;\n\t}\n\telse\n\t{\n\t\t\/\/ Fallback, falls die API keine Daten liefert: Gib den Originalwert zur\u00fcck\n\t\treturn eur_value;\n\t}\n}\ncatch (e)\n{\n\t\/\/ Fehlerbehandlung: Wenn die API nicht erreichbar ist, gib ebenfalls den Originalwert zur\u00fcck\n\t\/\/ F\u00fcr eine bessere Fehlersuche k\u00f6nntest du hier eine Benachrichtigung via Zoho Cliq senden\n\t\/\/ info e; \n\treturn eur_value;\n}\n<\/code><\/pre>\n<p><strong>Schritt 3: Verwende die Funktion in einer neuen Spalte<\/strong><br \/>\nErstelle nun in Deiner Datentabelle eine neue &#8222;Formelspalte&#8220;. Nenne sie z.B. &#8222;Kosten_USD&#8220;. Die Formel lautet einfach:<\/p>\n<p><code>convertEURtoUSD(\"Deine_Kosten_Spalte_EUR\")<\/code><\/p>\n<p>Ersetze <code>\"Deine_Kosten_Spalte_EUR\"<\/code> durch den tats\u00e4chlichen Namen Deiner Kostenspalte. Zoho Analytics wird nun f\u00fcr jede Zeile die Funktion ausf\u00fchren und die Kosten korrekt in USD umrechnen. Dein ROI ist jetzt aussagekr\u00e4ftig!<\/p>\n<h4>2. Pr\u00e4zise Zeitfilter mit einer SQL-Abfrage realisieren<\/h4>\n<p>Das Problem der ungenauen Zeitfilter umgehen wir, indem wir die Logik selbst in die Hand nehmen. Wir erstellen eine Hilfsspalte, die uns anzeigt, ob ein Datensatz zu einem vollst\u00e4ndig abgeschlossenen Monat geh\u00f6rt. Dies l\u00e4sst sich am besten direkt in <a href=\"\/de\/zoho-analytics\/\" target=\"_blank\">Zoho Analytics<\/a> mit einer SQL-Abfrage umsetzen.<\/p>\n<p><strong>Schritt 1: \u00d6ffne Deine Tabelle in der Abfrage-Ansicht<\/strong><br \/>\nGehe zu Deiner Datentabelle und w\u00e4hle &#8222;Bearbeiten&#8220; -&gt; &#8222;In SQL-Ansicht bearbeiten&#8220;.<\/p>\n<p><strong>Schritt 2: F\u00fcge eine CASE-Anweisung hinzu<\/strong><br \/>\nWir f\u00fcgen eine neue Spalte namens <code>Period_Status<\/code> hinzu. Diese Spalte pr\u00fcft, ob das Datum eines Eintrags im selben Monat wie das heutige Datum liegt.<\/p>\n<pre><code>\nSELECT\n    \"DeinDatum\" AS \"Transaktionsdatum\",\n    \"DeinUmsatz\" AS \"Umsatz\",\n    \"DeineKosten\" AS \"Kosten\",\n    CASE \n        WHEN date_trunc('month', \"DeinDatum\") = date_trunc('month', now()) \n        THEN 'Aktueller Monat'\n        ELSE 'Abgeschlossener Monat'\n    END AS \"Period_Status\"\nFROM \n    \"DeineTabelle\"\n<\/code><\/pre>\n<p><strong>Schritt 3: Nutze die neue Spalte als Filter<\/strong><br \/>\nNach dem Speichern dieser Abfrage hast Du eine neue Spalte &#8222;Period_Status&#8220;. In Deinem Dashboard kannst Du nun einen Benutzerfilter f\u00fcr diese Spalte hinzuf\u00fcgen. Deine Nutzer k\u00f6nnen jetzt explizit &#8222;Abgeschlossener Monat&#8220; ausw\u00e4hlen. Um einen Filter f\u00fcr &#8222;Letzte 3 abgeschlossene Monate&#8220; zu erstellen, m\u00fcsstest Du die SQL-Logik entsprechend erweitern, was aber nach demselben Prinzip funktioniert.<\/p>\n<h4>3. Bedingte Formatierung f\u00fcr F\u00e4lligkeiten und Sortierprobleme<\/h4>\n<p>Um auslaufende Lizenzen (z.B. &#8222;endet in den n\u00e4chsten 90 Tagen&#8220;) hervorzuheben, nutzen wir einen \u00e4hnlichen SQL-Trick wie bei den Zeitfiltern.<\/p>\n<p><strong>Schritt 1: Erstelle eine SQL-Spalte f\u00fcr den Lizenzstatus<\/strong><br \/>\nF\u00fcge Deiner SQL-Abfrage eine weitere <code>CASE<\/code>-Anweisung hinzu, die den Status basierend auf dem Enddatum der Lizenz berechnet.<\/p>\n<pre><code>\nSELECT\n    ..., -- Deine anderen Spalten\n    \"LicenseEndDate\",\n    CASE\n        WHEN \"LicenseEndDate\" &lt; now() THEN &#039;Abgelaufen&#039;\n        WHEN &quot;LicenseEndDate&quot; BETWEEN now() AND now() + interval &#039;90 day&#039; THEN &#039;L\u00e4uft bald ab&#039;\n        ELSE &#039;Aktiv&#039;\n    END AS &quot;Lizenz_Status&quot;\nFROM\n    &quot;DeineTabelle&quot;\n<\/code><\/pre>\n<p><strong>Schritt 2: Wende die bedingte Formatierung an<\/strong><br \/>\nIn Deinem Bericht kannst Du jetzt eine einfache Regel f\u00fcr die bedingte Formatierung erstellen. Formatiere die Zeile rot, wenn der Wert in der Spalte &#8222;Lizenz_Status&#8220; gleich &#8222;L\u00e4uft bald ab&#8220; ist. Dies ist weitaus flexibler als die Standard-Datumsfilter.<\/p>\n<p><strong>Sortierprobleme l\u00f6sen:<\/strong><br \/>\nDass sich eine Spalte nicht sortieren l\u00e4sst, liegt oft daran, wie sie erstellt wurde. Insbesondere berechnete Spalten (Aggregatformeln) k\u00f6nnen dieses Verhalten zeigen. Stelle sicher, dass die Spalten, nach denen Du sortieren m\u00f6chtest (z.B. &#8222;Umsatz&#8220;, &#8222;ROI&#8220;), als numerischer Datentyp in der Basistabelle vorliegen und nicht erst im Bericht dynamisch berechnet werden. Wenn Du die Konvertierungen und Berechnungen wie oben beschrieben in der Datentabelle durchf\u00fchrst, sind die resultierenden Spalten in der Regel problemlos sortierbar.<\/p>\n<h3>Exkurs: DNS-Management f\u00fcr Dein Reporting-Portal<\/h3>\n<p>In unserem Praxisbeispiel wurde das Reporting-Dashboard unter einer eigenen Subdomain wie <code>reporting.deinefirma.de<\/code> bereitgestellt. Dies erfordert eine Konfiguration im DNS (Domain Name System) Deines Domain-Anbieters (z.B. <strong>Cloudflare<\/strong>, <strong>United Domains<\/strong>, <strong>GoDaddy<\/strong>).<\/p>\n<p>Wenn Du Dein Zoho Analytics auf einem eigenen Server hostest oder einen White-Label-Zugang nutzt, musst Du einen <strong>A-Record<\/strong> (f\u00fcr IPv4) auf die IP-Adresse des Servers (z.B. bei <strong>Hetzner<\/strong> oder <strong>DigitalOcean<\/strong>) setzen. Achte darauf, eventuell vorhandene <strong>AAAA-Records<\/strong> (f\u00fcr IPv6) zu entfernen, falls Dein Server nur \u00fcber IPv4 erreichbar ist, um Verbindungsprobleme zu vermeiden. Die <strong>TTL (Time To Live)<\/strong>, meist in Sekunden angegeben (z.B. 600 f\u00fcr 10 Minuten), bestimmt, wie schnell sich die \u00c4nderung im Internet verbreitet.<\/p>\n<h3>Tipps und Best Practices<\/h3>\n<ul>\n<li><strong>Sicherheit geht vor:<\/strong> Wenn Du APIs mit Schl\u00fcsseln verwendest, speichere diese niemals direkt im Code. Nutze sichere Speicherorte und erw\u00e4ge Tools wie <a href=\"https:\/\/www.zoho.com\/de\/vault\/\" target=\"_blank\">Zoho Vault<\/a> zur Verwaltung Deiner Anmeldeinformationen.<\/li>\n<li><strong>Performance im Blick behalten:<\/strong> Jeder API-Aufruf in einer Custom Function kostet Zeit. Bei Tabellen mit Tausenden von Zeilen kann dies die Ladezeit Deiner Berichte erheblich verlangsamen. \u00dcberlege, ob die Umrechnungskurse einmal t\u00e4glich \u00fcber einen <a href=\"\/de\/zoho-flow\/\" target=\"_blank\">Zoho Flow<\/a> Workflow in eine separate Tabelle geladen und dann per `JOIN` verbunden werden k\u00f6nnen.<\/li>\n<li><strong>Fehlerbehandlung ist Pflicht:<\/strong> Was passiert, wenn die externe API nicht erreichbar ist? Dein Skript sollte dies mit einem <code>try...catch<\/code>-Block abfangen, um einen kompletten Ausfall des Berichts zu verhindern.<\/li>\n<li><strong>Dokumentiere Deine Logik:<\/strong> Kommentiere Deine SQL-Abfragen und Deluge-Funktionen. Dein zuk\u00fcnftiges Ich (oder Dein Kollege) wird es Dir danken, wenn Anpassungen notwendig werden.<\/li>\n<\/ul>\n<h3>Fazit: \u00dcberwinde die Grenzen und schaffe echten Mehrwert<\/h3>\n<p>Dieses Beispiel zeigt eindr\u00fccklich: Die wahre St\u00e4rke von Zoho liegt nicht nur in den einzelnen Apps, sondern in ihrer F\u00e4higkeit, nahtlos zusammenzuarbeiten und sich f\u00fcr spezifische Anforderungen zu \u00f6ffnen. Standardfunktionen sind der Ausgangspunkt, aber Custom Functions, SQL und die Anbindung an externe APIs sind die Werkzeuge, mit denen Du ma\u00dfgeschneiderte und hochpr\u00e4zise L\u00f6sungen baust.<\/p>\n<p>Anstatt Dich \u00fcber eine vermeintliche Limitation in <a href=\"\/de\/zoho-analytics\/\" target=\"_blank\">Zoho Analytics<\/a> zu \u00e4rgern, solltest Du sie als Chance sehen, tiefer in die Materie einzutauchen. Die Kombination von Daten aus <a href=\"\/de\/zoho-crm\/\" target=\"_blank\">Zoho CRM<\/a>, angereichert mit externen Informationen via API und aufbereitet durch clevere SQL-Logik, erm\u00f6glicht Dir ein Reporting, das weit \u00fcber den Standard hinausgeht und Deinem Unternehmen einen echten Wettbewerbsvorteil verschafft.<\/p>\n<hr>\n<p><strong>Verwendete Zoho Apps in diesem Szenario:<\/strong><\/p>\n<ul>\n<li><a href=\"\/de\/zoho-analytics\/\" target=\"_blank\"><strong>Zoho Analytics<\/strong><\/a>: Das zentrale Tool f\u00fcr Business Intelligence und Datenvisualisierung.<\/li>\n<li><a href=\"\/de\/zoho-crm\/\" target=\"_blank\"><strong>Zoho CRM<\/strong><\/a>: Die Datenquelle f\u00fcr Ums\u00e4tze und Kundeninformationen.<\/li>\n<li><a href=\"\/de\/zoho-flow\/\" target=\"_blank\"><strong>Zoho Flow<\/strong><\/a> (optional): Zur Automatisierung von Datenabrufen und zur Leistungsoptimierung.<\/li>\n<li><a href=\"https:\/\/www.zoho.com\/de\/vault\/\" target=\"_blank\"><strong>Zoho Vault<\/strong><\/a> (empfohlen): Zur sicheren Verwaltung von API-Schl\u00fcsseln.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Entdecke, wie Du mit Zoho Analytics und externen APIs komplexe Reporting-Herausforderungen meisterst und ma\u00dfgeschneiderte Dashboards erstellst.<\/p>\n","protected":false},"author":1,"featured_media":5910,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"ocean_front_end_style_editor":"no","ocean_post_layout":"","ocean_both_sidebars_style":"","ocean_both_sidebars_content_width":0,"ocean_both_sidebars_sidebars_width":0,"ocean_sidebar":"","ocean_second_sidebar":"","ocean_disable_margins":"enable","ocean_add_body_class":"","ocean_shortcode_before_top_bar":"","ocean_shortcode_after_top_bar":"","ocean_shortcode_before_header":"","ocean_shortcode_after_header":"","ocean_has_shortcode":"","ocean_shortcode_after_title":"","ocean_shortcode_before_footer_widgets":"","ocean_shortcode_after_footer_widgets":"","ocean_shortcode_before_footer_bottom":"","ocean_shortcode_after_footer_bottom":"","ocean_display_top_bar":"default","ocean_display_header":"default","ocean_header_style":"","ocean_center_header_left_menu":"","ocean_custom_header_template":"","ocean_custom_logo":0,"ocean_custom_retina_logo":0,"ocean_custom_logo_max_width":0,"ocean_custom_logo_tablet_max_width":0,"ocean_custom_logo_mobile_max_width":0,"ocean_custom_logo_max_height":0,"ocean_custom_logo_tablet_max_height":0,"ocean_custom_logo_mobile_max_height":0,"ocean_header_custom_menu":"","ocean_menu_typo_font_family":"","ocean_menu_typo_font_subset":"","ocean_menu_typo_font_size":0,"ocean_menu_typo_font_size_tablet":0,"ocean_menu_typo_font_size_mobile":0,"ocean_menu_typo_font_size_unit":"px","ocean_menu_typo_font_weight":"","ocean_menu_typo_font_weight_tablet":"","ocean_menu_typo_font_weight_mobile":"","ocean_menu_typo_transform":"","ocean_menu_typo_transform_tablet":"","ocean_menu_typo_transform_mobile":"","ocean_menu_typo_line_height":0,"ocean_menu_typo_line_height_tablet":0,"ocean_menu_typo_line_height_mobile":0,"ocean_menu_typo_line_height_unit":"","ocean_menu_typo_spacing":0,"ocean_menu_typo_spacing_tablet":0,"ocean_menu_typo_spacing_mobile":0,"ocean_menu_typo_spacing_unit":"","ocean_menu_link_color":"","ocean_menu_link_color_hover":"","ocean_menu_link_color_active":"","ocean_menu_link_background":"","ocean_menu_link_hover_background":"","ocean_menu_link_active_background":"","ocean_menu_social_links_bg":"","ocean_menu_social_hover_links_bg":"","ocean_menu_social_links_color":"","ocean_menu_social_hover_links_color":"","ocean_disable_title":"default","ocean_disable_heading":"default","ocean_post_title":"","ocean_post_subheading":"","ocean_post_title_style":"","ocean_post_title_background_color":"","ocean_post_title_background":0,"ocean_post_title_bg_image_position":"","ocean_post_title_bg_image_attachment":"","ocean_post_title_bg_image_repeat":"","ocean_post_title_bg_image_size":"","ocean_post_title_height":0,"ocean_post_title_bg_overlay":0.5,"ocean_post_title_bg_overlay_color":"","ocean_disable_breadcrumbs":"default","ocean_breadcrumbs_color":"","ocean_breadcrumbs_separator_color":"","ocean_breadcrumbs_links_color":"","ocean_breadcrumbs_links_hover_color":"","ocean_display_footer_widgets":"default","ocean_display_footer_bottom":"default","ocean_custom_footer_template":"","osh_disable_topbar_sticky":"default","osh_disable_header_sticky":"default","osh_sticky_header_style":"default","osh_sticky_header_effect":"","osh_custom_sticky_logo":0,"osh_custom_retina_sticky_logo":0,"osh_custom_sticky_logo_height":0,"osh_background_color":"","osh_links_color":"","osh_links_hover_color":"","osh_links_active_color":"","osh_links_bg_color":"","osh_links_hover_bg_color":"","osh_links_active_bg_color":"","osh_menu_social_links_color":"","osh_menu_social_hover_links_color":"","ocean_post_oembed":"","ocean_post_self_hosted_media":"","ocean_post_video_embed":"","ocean_link_format":"","ocean_link_format_target":"self","ocean_quote_format":"","ocean_quote_format_link":"post","ocean_gallery_link_images":"on","ocean_gallery_id":[],"footnotes":""},"categories":[1],"tags":[],"class_list":["post-5908","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-zoho","entry","has-media"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Zoho Analytics Custom Functions und W\u00e4hrungs-API im Reporting-Tutorial - SprintCX<\/title>\n<meta name=\"robots\" content=\"noindex, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Zoho Analytics Custom Functions und W\u00e4hrungs-API im Reporting-Tutorial - SprintCX\" \/>\n<meta property=\"og:description\" content=\"Entdecke, wie Du mit Zoho Analytics und externen APIs komplexe Reporting-Herausforderungen meisterst und ma\u00dfgeschneiderte Dashboards erstellst.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/wordpress.sprintcx.net\/de\/zoho-analytics-custom-functions-und-wahrungs-api-im-reporting-tutorial\/\" \/>\n<meta property=\"og:site_name\" content=\"SprintCX\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-05T07:59:39+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-05T13:15:04+00:00\" \/>\n<meta name=\"author\" content=\"Gregor\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Gregor\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"8\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/wordpress.sprintcx.net\\\/de\\\/zoho-analytics-custom-functions-und-wahrungs-api-im-reporting-tutorial\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wordpress.sprintcx.net\\\/de\\\/zoho-analytics-custom-functions-und-wahrungs-api-im-reporting-tutorial\\\/\"},\"author\":{\"name\":\"Gregor\",\"@id\":\"https:\\\/\\\/wordpress.sprintcx.net\\\/de\\\/#\\\/schema\\\/person\\\/33a4ba085d0b86874d45522b74c193eb\"},\"headline\":\"Zoho Analytics Custom Functions und W\u00e4hrungs-API im Reporting-Tutorial\",\"datePublished\":\"2026-10-05T07:59:39+00:00\",\"dateModified\":\"2026-10-05T13:15:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/wordpress.sprintcx.net\\\/de\\\/zoho-analytics-custom-functions-und-wahrungs-api-im-reporting-tutorial\\\/\"},\"wordCount\":1366,\"publisher\":{\"@id\":\"https:\\\/\\\/wordpress.sprintcx.net\\\/de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/wordpress.sprintcx.net\\\/de\\\/zoho-analytics-custom-functions-und-wahrungs-api-im-reporting-tutorial\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/wordpress.sprintcx.net\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/pixar-20261005-131541-3b027f-0.jpg\",\"articleSection\":[\"Zoho Tutorials\"],\"inLanguage\":\"de\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/wordpress.sprintcx.net\\\/de\\\/zoho-analytics-custom-functions-und-wahrungs-api-im-reporting-tutorial\\\/\",\"url\":\"https:\\\/\\\/wordpress.sprintcx.net\\\/de\\\/zoho-analytics-custom-functions-und-wahrungs-api-im-reporting-tutorial\\\/\",\"name\":\"Zoho Analytics Custom Functions und W\u00e4hrungs-API im Reporting-Tutorial - SprintCX\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wordpress.sprintcx.net\\\/de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/wordpress.sprintcx.net\\\/de\\\/zoho-analytics-custom-functions-und-wahrungs-api-im-reporting-tutorial\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/wordpress.sprintcx.net\\\/de\\\/zoho-analytics-custom-functions-und-wahrungs-api-im-reporting-tutorial\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/wordpress.sprintcx.net\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/pixar-20261005-131541-3b027f-0.jpg\",\"datePublished\":\"2026-10-05T07:59:39+00:00\",\"dateModified\":\"2026-10-05T13:15:04+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/wordpress.sprintcx.net\\\/de\\\/zoho-analytics-custom-functions-und-wahrungs-api-im-reporting-tutorial\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/wordpress.sprintcx.net\\\/de\\\/zoho-analytics-custom-functions-und-wahrungs-api-im-reporting-tutorial\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/wordpress.sprintcx.net\\\/de\\\/zoho-analytics-custom-functions-und-wahrungs-api-im-reporting-tutorial\\\/#primaryimage\",\"url\":\"https:\\\/\\\/wordpress.sprintcx.net\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/pixar-20261005-131541-3b027f-0.jpg\",\"contentUrl\":\"https:\\\/\\\/wordpress.sprintcx.net\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/pixar-20261005-131541-3b027f-0.jpg\",\"width\":1376,\"height\":768},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/wordpress.sprintcx.net\\\/de\\\/zoho-analytics-custom-functions-und-wahrungs-api-im-reporting-tutorial\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/wordpress.sprintcx.net\\\/de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Zoho Analytics Custom Functions und W\u00e4hrungs-API im Reporting-Tutorial\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/wordpress.sprintcx.net\\\/de\\\/#website\",\"url\":\"https:\\\/\\\/wordpress.sprintcx.net\\\/de\\\/\",\"name\":\"SprintCX\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/wordpress.sprintcx.net\\\/de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/wordpress.sprintcx.net\\\/de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/wordpress.sprintcx.net\\\/de\\\/#organization\",\"name\":\"SprintCX\",\"url\":\"https:\\\/\\\/wordpress.sprintcx.net\\\/de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/wordpress.sprintcx.net\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/wordpress.sprintcx.net\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/cropped-ChatGPT-Image-6.-Mai-2025-09_53_42.png\",\"contentUrl\":\"https:\\\/\\\/wordpress.sprintcx.net\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/cropped-ChatGPT-Image-6.-Mai-2025-09_53_42.png\",\"width\":846,\"height\":828,\"caption\":\"SprintCX\"},\"image\":{\"@id\":\"https:\\\/\\\/wordpress.sprintcx.net\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/in\\\/gregor-sprint\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/wordpress.sprintcx.net\\\/de\\\/#\\\/schema\\\/person\\\/33a4ba085d0b86874d45522b74c193eb\",\"name\":\"Gregor\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/890daf3cadca0407ae6752f5d3c0f4a1bbb2ce129b70d5e65fbefcc86deba987?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/890daf3cadca0407ae6752f5d3c0f4a1bbb2ce129b70d5e65fbefcc86deba987?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/890daf3cadca0407ae6752f5d3c0f4a1bbb2ce129b70d5e65fbefcc86deba987?s=96&d=mm&r=g\",\"caption\":\"Gregor\"},\"sameAs\":[\"https:\\\/\\\/sprintcx.net\"],\"url\":\"https:\\\/\\\/wordpress.sprintcx.net\\\/de\\\/author\\\/gregor\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Zoho Analytics Custom Functions und W\u00e4hrungs-API im Reporting-Tutorial - SprintCX","robots":{"index":"noindex","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"de_DE","og_type":"article","og_title":"Zoho Analytics Custom Functions und W\u00e4hrungs-API im Reporting-Tutorial - SprintCX","og_description":"Entdecke, wie Du mit Zoho Analytics und externen APIs komplexe Reporting-Herausforderungen meisterst und ma\u00dfgeschneiderte Dashboards erstellst.","og_url":"https:\/\/wordpress.sprintcx.net\/de\/zoho-analytics-custom-functions-und-wahrungs-api-im-reporting-tutorial\/","og_site_name":"SprintCX","article_published_time":"2026-10-05T07:59:39+00:00","article_modified_time":"2026-10-05T13:15:04+00:00","author":"Gregor","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Gregor","Gesch\u00e4tzte Lesezeit":"8\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/wordpress.sprintcx.net\/de\/zoho-analytics-custom-functions-und-wahrungs-api-im-reporting-tutorial\/#article","isPartOf":{"@id":"https:\/\/wordpress.sprintcx.net\/de\/zoho-analytics-custom-functions-und-wahrungs-api-im-reporting-tutorial\/"},"author":{"name":"Gregor","@id":"https:\/\/wordpress.sprintcx.net\/de\/#\/schema\/person\/33a4ba085d0b86874d45522b74c193eb"},"headline":"Zoho Analytics Custom Functions und W\u00e4hrungs-API im Reporting-Tutorial","datePublished":"2026-10-05T07:59:39+00:00","dateModified":"2026-10-05T13:15:04+00:00","mainEntityOfPage":{"@id":"https:\/\/wordpress.sprintcx.net\/de\/zoho-analytics-custom-functions-und-wahrungs-api-im-reporting-tutorial\/"},"wordCount":1366,"publisher":{"@id":"https:\/\/wordpress.sprintcx.net\/de\/#organization"},"image":{"@id":"https:\/\/wordpress.sprintcx.net\/de\/zoho-analytics-custom-functions-und-wahrungs-api-im-reporting-tutorial\/#primaryimage"},"thumbnailUrl":"https:\/\/wordpress.sprintcx.net\/wp-content\/uploads\/2026\/10\/pixar-20261005-131541-3b027f-0.jpg","articleSection":["Zoho Tutorials"],"inLanguage":"de"},{"@type":"WebPage","@id":"https:\/\/wordpress.sprintcx.net\/de\/zoho-analytics-custom-functions-und-wahrungs-api-im-reporting-tutorial\/","url":"https:\/\/wordpress.sprintcx.net\/de\/zoho-analytics-custom-functions-und-wahrungs-api-im-reporting-tutorial\/","name":"Zoho Analytics Custom Functions und W\u00e4hrungs-API im Reporting-Tutorial - SprintCX","isPartOf":{"@id":"https:\/\/wordpress.sprintcx.net\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/wordpress.sprintcx.net\/de\/zoho-analytics-custom-functions-und-wahrungs-api-im-reporting-tutorial\/#primaryimage"},"image":{"@id":"https:\/\/wordpress.sprintcx.net\/de\/zoho-analytics-custom-functions-und-wahrungs-api-im-reporting-tutorial\/#primaryimage"},"thumbnailUrl":"https:\/\/wordpress.sprintcx.net\/wp-content\/uploads\/2026\/10\/pixar-20261005-131541-3b027f-0.jpg","datePublished":"2026-10-05T07:59:39+00:00","dateModified":"2026-10-05T13:15:04+00:00","breadcrumb":{"@id":"https:\/\/wordpress.sprintcx.net\/de\/zoho-analytics-custom-functions-und-wahrungs-api-im-reporting-tutorial\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/wordpress.sprintcx.net\/de\/zoho-analytics-custom-functions-und-wahrungs-api-im-reporting-tutorial\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/wordpress.sprintcx.net\/de\/zoho-analytics-custom-functions-und-wahrungs-api-im-reporting-tutorial\/#primaryimage","url":"https:\/\/wordpress.sprintcx.net\/wp-content\/uploads\/2026\/10\/pixar-20261005-131541-3b027f-0.jpg","contentUrl":"https:\/\/wordpress.sprintcx.net\/wp-content\/uploads\/2026\/10\/pixar-20261005-131541-3b027f-0.jpg","width":1376,"height":768},{"@type":"BreadcrumbList","@id":"https:\/\/wordpress.sprintcx.net\/de\/zoho-analytics-custom-functions-und-wahrungs-api-im-reporting-tutorial\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/wordpress.sprintcx.net\/de\/"},{"@type":"ListItem","position":2,"name":"Zoho Analytics Custom Functions und W\u00e4hrungs-API im Reporting-Tutorial"}]},{"@type":"WebSite","@id":"https:\/\/wordpress.sprintcx.net\/de\/#website","url":"https:\/\/wordpress.sprintcx.net\/de\/","name":"SprintCX","description":"","publisher":{"@id":"https:\/\/wordpress.sprintcx.net\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/wordpress.sprintcx.net\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/wordpress.sprintcx.net\/de\/#organization","name":"SprintCX","url":"https:\/\/wordpress.sprintcx.net\/de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/wordpress.sprintcx.net\/de\/#\/schema\/logo\/image\/","url":"https:\/\/wordpress.sprintcx.net\/wp-content\/uploads\/2025\/05\/cropped-ChatGPT-Image-6.-Mai-2025-09_53_42.png","contentUrl":"https:\/\/wordpress.sprintcx.net\/wp-content\/uploads\/2025\/05\/cropped-ChatGPT-Image-6.-Mai-2025-09_53_42.png","width":846,"height":828,"caption":"SprintCX"},"image":{"@id":"https:\/\/wordpress.sprintcx.net\/de\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.linkedin.com\/in\/gregor-sprint\/"]},{"@type":"Person","@id":"https:\/\/wordpress.sprintcx.net\/de\/#\/schema\/person\/33a4ba085d0b86874d45522b74c193eb","name":"Gregor","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/890daf3cadca0407ae6752f5d3c0f4a1bbb2ce129b70d5e65fbefcc86deba987?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/890daf3cadca0407ae6752f5d3c0f4a1bbb2ce129b70d5e65fbefcc86deba987?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/890daf3cadca0407ae6752f5d3c0f4a1bbb2ce129b70d5e65fbefcc86deba987?s=96&d=mm&r=g","caption":"Gregor"},"sameAs":["https:\/\/sprintcx.net"],"url":"https:\/\/wordpress.sprintcx.net\/de\/author\/gregor\/"}]}},"_links":{"self":[{"href":"https:\/\/wordpress.sprintcx.net\/de\/wp-json\/wp\/v2\/posts\/5908","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.sprintcx.net\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.sprintcx.net\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.sprintcx.net\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.sprintcx.net\/de\/wp-json\/wp\/v2\/comments?post=5908"}],"version-history":[{"count":1,"href":"https:\/\/wordpress.sprintcx.net\/de\/wp-json\/wp\/v2\/posts\/5908\/revisions"}],"predecessor-version":[{"id":5909,"href":"https:\/\/wordpress.sprintcx.net\/de\/wp-json\/wp\/v2\/posts\/5908\/revisions\/5909"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.sprintcx.net\/de\/wp-json\/wp\/v2\/media\/5910"}],"wp:attachment":[{"href":"https:\/\/wordpress.sprintcx.net\/de\/wp-json\/wp\/v2\/media?parent=5908"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.sprintcx.net\/de\/wp-json\/wp\/v2\/categories?post=5908"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.sprintcx.net\/de\/wp-json\/wp\/v2\/tags?post=5908"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}