Google Tabellen bietet flexible Möglichkeiten, Daten nach individuellen Anforderungen aufzubereiten und Dritten je nach Berechtigungen zur Verfügung zu stellen. Die Daten können regelmäßig automatisch aktualisiert werden, was den Datenaustausch erheblich vereinfacht.
feature
In einem ersten Schritt muss in einer leeren Google Tabelle ein Script eingefügt werden, das den Datenaustausch mit profairs ermöglicht.
Hierzu muss der Menüpunkt Apps Script unter Erweiterungen aufgerufen werden, dieser wird in einem neuen Tab Ihres Browsers geöffnet:
In dem Codeeditor muss der leere Code gelöscht werden
function myFunction() { }
Anschließend wird der nachfolgende Code eingefügt:
function initCall() { /* es können mehrere Sheets befüllt werden. Das Script legt automatisch neue Sheets anhand des Namens an: */ fetchJSONtoSheet("NAME_OF_SHEET_1", "JSON_URL_1"); fetchJSONtoSheet("NAME_OF_SHEET_2", "JSON_URL_2"); } function fetchJSONtoSheet(sheetName, jsonURL) { var url = jsonURL; var headers = { "method": "GET", "headers": { "x-api-key": "PROFAIRS_API_KEY", "cache-control": "no-cache" } } // Fetch JSON data from the URL var response = UrlFetchApp.fetch(url, headers); var jsonData = JSON.parse(response.getContentText()); // Get the active spreadsheet var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var sheetName = sheetName; var sheet = spreadsheet.getSheetByName(sheetName); if (!sheet) { // If the sheet does not exist, create it sheet = spreadsheet.insertSheet(sheetName); } else { // If the sheet exists, clear its contents sheet.clear(); } if (jsonData.length > 0) { // Assuming the JSON data is an array of objects var headers = Object.keys(jsonData[0]); var data = jsonData.map(function(row) { return headers.map(function(header) { return row[header]; }); }); // Add headers to the data array data.unshift(headers); // Write data to the sheet sheet.getRange(1, 1, data.length, data[0].length).setValues(data); } }
Um Google Tabellen zu autorisieren, Daten von profairs abfragen zu dürfen, muss zunächst der API Key ersetzt werden, diesen finden Sie in den Messeeinstellungen in der Messeverwaltung im Dreipunktemenü unter Zugangsdaten profairs API.
Kopieren Sie den API Schlüssel und ersetzen diesen im Script in dieser Zeile:
"x-api-key": "PROFAIRS_API_KEY",
gegen Ihren API Key, beispielsweise:
"x-api-key": "941c8937-0b05-4530-939c-6981a2adadc8",
Jetzt können die Exporte eingefügt werden, die in die Tabelle geladen werden sollen.
Kopieren Sie den gewünschten Export und ersetzen diese zwei Beispielzeilen im Script:
fetchJSONtoSheet("NAME_OF_SHEET_1", "JSON_URL_1"); fetchJSONtoSheet("NAME_OF_SHEET_2", "JSON_URL_2");
gegen die von Ihnen benötigten, weiter unten aufgelisteten Exporte, beispielsweise:
fetchJSONtoSheet("Rechnungsadresse", "https://sandbox.profairs.de/schnittstellen/json/?template=csv&messeid=10&queryid=1&default=true"); fetchJSONtoSheet("Ansprechpartner", "https://sandbox.profairs.de/schnittstellen/json/?template=csv&messeid=10&queryid=2&default=true"); fetchJSONtoSheet("Branchen", "https://sandbox.profairs.de/schnittstellen/json/?template=csv&messeid=10&queryid=3&default=true");
Sie können mehrere Exporte in eine Google Tabelle laden, wobei für jeden Export ein eigenes Tabellenblatt angelegt wird.
Zum Abschluss speichern Sie das Script und führen es mit der Funktion Run aus.
Beim erstmaligen Aufruf müssen Sie das Script mit Ihrem Google Konto autorisieren, anschließend werden die Daten in Ihrem zuvor angelegten Google Sheet Dokument importiert.
Es stehen zwei Typen von Exporten zur Verfügung, die etwas komplexeren JSON Exporte und die einfacheren csv Exporte, die sich in profairs unter Tools Exporte herunterladen lassen. Die csv Exporte können nicht für den automatisierten Import in Excel365 oder Google Tabellen verwendet werden.
Die Exporte werden in dem oben beschriebenen Script über eine URL eingefügt. Die URL hat dabei diesen Aufbau: https://{organizer}.profairs.de/schnittstellen/json/?template={template}
Die URL-Parameter werden ans Ende der URL eingefügt, getrennt durch ein &, z.B.: https://{organizer}.profairs.de/schnittstellen/json/?template={template}&messeid={messeid}&sprache={sprache}&WEITERER_PARAMETER={WERT}
Nachfolgend werden die einzelnen Exporte aufgeführt mit allen verfügbaren Konfigurationsmöglichkeiten.
Template: contacts
Export der Ansprechpartner
Parameter | Required | Value | Notes |
messeid | ja | numerisch | ID der aktuellen Messe |
ausstellerid | nein | numerisch | Gibt nur die Kontakte eines bestimmten Ausstellers zurück |
typid | nein | numerisch | Gibt nur die Kontakte eines bestimmten Zuständigkeitsbereichs zurück |
nurNewsletterFreigabe | nein | true | Gibt nur die Kontakte zurück, die einen Newsletter erhalten dürfen |
keine_veroeffentlichung | nein | true | false | Gibt nur die Kontakte zurück, die nicht veröffentlicht werden |
hat_storniert | nein | true | false | Gibt nur die Kontakte von Unternehmen zurück, die storniert haben |
showContactType | nein | true | Zuständigkeit wird mit ausgegeben |
aussteller_zuordnungstabelle | nein | aussteller_messen | aussteller_interessenten | Gibt die Kontakte der Aussteller zurück (default) oder die Kontakte der Interessenten |
Template: exhibitorgroups
Ausgabe der Aussteller, die Ausstellergruppen zugeordnet sind
Parameter | Required | Value | Notes |
messeid | ja | numerisch | ID der aktuellen Messe |
Template: exhibitors
Ausgabe der aller Aussteller einer Messe
Parameter | Required | Value | Notes |
messeid | ja | numerisch | ID der aktuellen Messe |
branchenIDs | nein | numerische Liste | Gibt nur die Aussteller zurück, die zu einer bestimmten Branche gehören |
hat_bestellt | nein | true | Gibt nur die Aussteller zurück, für die Bestellungen vorliegen |
nachbestellungen | nein | true | Gibt nur die Aussteller zurück, für die Bestellungen nach dem Softclose Datum vorliegen. hat_bestellt muss auf true gesetzt sein. |
hat_storniert | nein | true | false | Gibt nur Aussteller zurück, die storniert haben |
shop_artikel_variante | nein | true | Gibt nur die Aussteller zurück, für die Bestellungen einer bestimmten Variante vorliegen. hat_bestellt muss auf true gesetzt sein. |
shop_kategorie | nein | true | Gibt nur die Aussteller zurück, für die Bestellungen einer bestimmten Kategorie vorliegen. hat_bestellt muss auf true gesetzt sein. |
keine_veroeffentlichung | nein | true | false | Gibt nur die Aussteller zurück, die nicht veröffentlicht werden |
Template: gtc_accepted
Ausgabe der Ansprechpartner, die die AGB bestätigt haben
Parameter | Required | Value | Notes |
messeid | ja | numerisch | ID der aktuellen Messe |
Template: interests
Ausgabe der aller Interessenten einer Messe
Parameter | Required | Value | Notes |
messeid | ja | numerisch | ID der aktuellen Messe |
isFollowUp | nein | true | Gibt nur die Interessenten zurück, für die ein FollowUp hinterlegt wurde |
today | nein | true | Gibt nur die Interessenten zurück, für die heute ein FollowUp ansteht |
ueberfaellig | nein | true | Gibt nur die Interessenten zurück, die das FollowUp überfällig ist |
progress bar_completed | nein | true | Gibt nur die Interessenten zurück, die alle erforderlichen Schritte des Fortschrittsbalken erledigt haben |
Template: invalid-ustid
Ausgabe aller Aussteller mit keiner geprüften und gültigen UmsatzsteuerIdentnummer. Für diesen Export gibt es keine Parameter.
Template: keywords
Ausgabe der Aussteller, denen ein oder mehrere Stichworte zugewiesen wurden
Parameter | Required | Value | Notes |
messeid | ja | numerisch | ID der aktuellen Messe |
sprache | ja | Zeichenkette | Sprache, in der die Stichworte ausgegeben werden (beispielsweise: de_DE) |
stichworttyp_id | nein | numerisch | ID des Verzeichnisses, das ausgelesen werden soll |
Template: marketing
Ausgabe der Marketinganschrift der Aussteller, sofern diese hinterlegt wurde
Parameter | Required | Value | Notes |
messeid | ja | numerisch | ID der aktuellen Messe |
Template: onlinemedien
Ausgabe der Daten, die die Aussteller im Modul Onlinemedien angegeben haben
Parameter | Required | Value | Notes |
messeid | ja | numerisch | ID der aktuellen Messe |
sprache | ja | Zeichenkette | Sprache, in der die Stichworte ausgegeben werden (beispielsweise: de_DE) |
Template: orders
Ausgabe der Bestellpositionen der Aussteller
Parameter | Required | Value | Notes |
messeid | ja | numerisch | ID der aktuellen Messe |
sprache | ja | Zeichenkette | Sprache, in der die Stichworte ausgegeben werden (beispielsweise: de_DE) |
variantenID | nein | numerisch | Es werden nur Bestellungen für die angegebene Variante ausgegeben |
artikelID | nein | numerisch | Es werden nur Bestellungen für Varianten des angegebenen Artikel ausgegeben |
anzahlGesamt | nein | true | Spalte mit der gesamten Bestellmenge wird ausgegeben |
shopKategorieIds | nein | numerische Liste | Es werden nur Bestellungen für Varianten der angegebenen Kategorien ausgegeben |
nachbestellungen | nein | true | false | Es werden nur Bestellungen ausgegeben, die nach dem Softclose angelegt wurden |
database_table | nein | shop_bestellungen_interessenten | Abweichend zu den Bestellungen der Aussteller können so Reservierungen von Interessenten ausgegeben werden |
Template: printmedien
Ausgabe der Daten, die die Aussteller im Modul Printmedien angegeben haben
Parameter | Required | Value | Notes |
messeid | ja | numerisch | ID der aktuellen Messe |
sprache | ja | Zeichenkette | Sprache, in der die Stichworte ausgegeben werden (beispielsweise: de_DE) |
Template: progressbar_completed
Ausgabe der Aussteller, die den Fortschrittsbalken abgearbeitet haben
Parameter | Required | Value | Notes |
messeid | ja | numerisch | ID der aktuellen Messe |
ausstellertypenid | nein | numerisch | Ausgabe wird auf die Aussteller beschränkt, die der angegebenen Ausstellergruppe angehören |
Template: shop_variants
Ausgabe der Bestellpositionen der Aussteller
Parameter | Required | Value | Notes |
messeid | ja | numerisch | ID der aktuellen Messe |
sprache | ja | Zeichenkette | Sprache, in der die Stichworte ausgegeben werden (beispielsweise: de_DE) |
artikelID | nein | numerisch | Es werden nur Varianten des angegebenen Artikel ausgegeben |
kategorienID | nein | numerisch | Es werden nur Varianten für Artikel ausgegeben, die zu dieser Kategorie gehören |
gesperrt | nein | true | Es werden nur gesperrte Varianten ausgegeben |
nurBestellteVarianten | nein | true | Es werden nur Varianten ausgegeben, für die Bestellungen vorliegen |
hide_sammelartikel | nein | true | Varianten, die als Sammelartikel andere Varianten beinhalten, werden nicht ausgegeben |
database_table | nein | shop_bestellungen_interessenten | Varianten werden ausgegeben, die für Interessenten sichtbar sind |
Template: sessions
Ausgabe der Vorträge der Aussteller
Parameter | Required | Value | Notes |
messeID | ja | numerisch | ID der aktuellen Messe |
sprache | ja | Zeichenkette | Name der Sprache, die in den Vorträgen hinterlegt ist |
ausstellerMessenID | nein | numerisch | Nur Vorträge des angegebenen Ausstellers werden angezeigt |
vortragID | nein | true | ID des gewünschten Vortrags |
typid | nein | numerisch | Nur Vorträge des gewünschten Vortragstyps werden ausgegeben |
Template: sessions-speaker
Ausgabe der Referenten der Vorträge der Aussteller
Parameter | Required | Value | Notes |
messeID | ja | numerisch | ID der aktuellen Messe |
vortragID | nein | true | Nur Speaker des gewünschten Vortrags werden ausgegeben |
typid | nein | numerisch | Nur Speaker des gewünschten Vortragstyps werden ausgegeben |
Template: standrequests
Ausgabe der Standwünsche der Aussteller
Parameter | Required | Value | Notes |
messeid | ja | numerisch | ID der aktuellen Messe |
ausstellerid | nein | numerisch | Nur Standwünsche des angegebenen Ausstellers werden ausgegeben |
umplanenList | nein | true | Nur Standwünsche werden ausgegeben, zu denen es einen abgelehnten Standvorschlag und keinen Stand gibt |
Template: standproposals
Ausgabe der Standvorschläge, die die Aussteller erhalten haben
Parameter | Required | Value | Notes |
messeid | ja | numerisch | ID der aktuellen Messe |
nurFreigegebene | nein | true | false | Es werden nur freigegebene Vorschläge übertragen |
hideAkzeptiert | nein | true | false | Akzeptierte Standvorschläge werden ausgeblendet |
status | nein | open, declined, archived, accepted | Filtert den Status des Standvorschlags |
onlyHauptaussteller | nein | true | Nuzr Standvorschläge von Hauptausstellern |
Template: stands
Ausgabe der Aussteller, die den Fortschrittsbalken abgearbeitet haben
Parameter | Required | Value | Notes |
messeid | ja | numerisch | ID der aktuellen Messe |
showBelegte | nein | false | Es werden alle Stände ausgegeben, auch die noch nicht an Aussteller zugewiesen sind |
standlocation_id | nein | numerisch | Es werden nur Stände einer Halle zugewiesen |
standtyp | nein | numerisch | Es werden nur Stände eines bestimmten Standtyps ausgegeben |
sperren | nein | numerisch (0 oder 1) | Es werden nur gesperrte bzw. nicht gesperrte Stände ausgegeben |
Template: uploads
Ausgabe der Uploads der Aussteller
Parameter | Required | Value | Notes |
messeid | ja | numerisch | ID der aktuellen Messe |
filter | ja | uploads, contacts | Uploads, die entweder im Modul Up- und downloads oder im Modul Kontakte hochgeladen wurden |
types | nein | medien, onlinemedien, printmedien, highlights | Uploads, die in einem der angegebenen Module hochgeladen wurden. Setzt voraus, dass beim Parameter filter der Wert uploads angegeben wird |
feature
Google Tabellen bietet die Möglichkeit, dass die Daten immer wieder aktualisiert werden. Das kann über eine zeitgesteuerte Aktualisierung erfolgen oder bei einem bestimmten Event, beispielsweise, bei jedem Öffnen der Tabelle.
Über vierten Menüpunkt links (Symbol Uhr) können Sie einen Trigger anlegen. Hierzu muss zuerst festgelegt werden, dass das Script InitCall
aufgerufen wird. Als mögliche Trigger stehen Ihnen dann entweder das Tabellenblatt oder zeitgesteuerte Trigger zur Verfügung. Empfehlenswert ist, einen zeitgesteuerten Trigger anzulegen der alle 30 Minuten ausgeführt wird, alternativ kann hier auch festgelegt werden, dass die Aktualisierung beim Öffnen erfolgt, was aber etwas dauern kann.
Sofern viele Daten in den einzelnen Exporten übertragen werden, sollten die Exporte in mehrere Funktionsaufrufe unterteilt werden, damit die Aktualisierung der Daten nicht auf einen timeout läuft:
{ function initCall1() { fetchJSONtoSheet('Ansprechpartner', 'https://sandbox.profairs.de/schnittstellen/json/?template=csv&messeid=2&queryid=2&default=true') } { function initCall2() { fetchJSONtoSheet('Branchen', 'https://sandbox.profairs.de/schnittstellen/json/?template=csv&messeid=2&queryid=3&default=true') }
Für jede einzelne Funktion wird dann ein eigener Trigger eingerichtet, also anstelle InitCall
dann einen für InitCall1
und einen für InitCall2
.
Zuletzt geändert am: 18.08.2024