Order Data via REST API von Shopware 5 in Google Sheets ziehen

Hallo zusammen,

folgende Herausforderung: Ich möchte Shopware 5 Order Data aus Shopware in ein Google Sheet bringen, um im nächsten Schritt möglichst tagesaktuell korrekte Order und Revenue Data in Google Looker Studio Dashboards darzustellen. Wie ich an die REST API komme, hab ich mittlerweile herausgefunden, mein Shopware 5 User hat API Zugriff und ein Key wurde erstellt. Mit Hilfe von Chat GPT hab ich mir ein Script schreiben lassen, dass ich mit Google Sheets Apps Script automatisch ausführe. Hier das Script, falls es jemanden interessiert:

function fetchOrderData() {
var apiKey = ‚yourapikeyhere‘;
var baseUrl = ‚https://www.shopurl.de/api/orders‘;

// Set start and end date for last year and this year
var lastYearStartDate = new Date(new Date().getFullYear() - 1, 0, 1).toISOString();
var lastYearEndDate = new Date(new Date().getFullYear() - 1, 11, 31).toISOString();
var thisYearStartDate = new Date(new Date().getFullYear(), 0, 1).toISOString();
var thisYearEndDate = new Date().toISOString();

// Fetch order data for last year
var lastYearResponse = UrlFetchApp.fetch(baseUrl + ‚?apiKey=‘ + apiKey + ‚&from=‘ + lastYearStartDate + ‚&to=‘ + lastYearEndDate);
var lastYearData = JSON.parse(lastYearResponse.getContentText()).data;

// Fetch order data for this year
var thisYearResponse = UrlFetchApp.fetch(baseUrl + ‚?apiKey=‘ + apiKey + ‚&from=‘ + thisYearStartDate + ‚&to=‘ + thisYearEndDate);
var thisYearData = JSON.parse(thisYearResponse.getContentText()).data;

// Combine order data for last year and this year
var allData = lastYearData.concat(thisYearData);

// Get the active sheet
var sheet = SpreadsheetApp.getActiveSheet();

// Add header row
sheet.appendRow([‚Order Number‘, ‚Order Date‘, ‚invoiceAmountNet‘]);

// Loop through the order data and add to sheet
allData.forEach(function(order) {
sheet.appendRow([order.number, order.orderTime, order.orderCustomer.fullName, order.amountTotal]);
});
}

Wenn ich das Script ausführe, kommt folgende Fehlermeldung:

Bildschirm­foto 2023-04-13 um 12.58.59

Die Agentur, die den Shop gebaut hat, weiß nicht weiter. Kann jemand helfen?

Da fehlen die Header Daten im fetch(). Für den Auth musst du ein base64 octet erstellen. Dafür nimmst du den shopware usernamen und den api token und schreibst das so=> swuser:apitoken

Diesen String wirfst du in einen base64 encoder, z.B. den hier https://www.base64encode.org/ und nimmst den als API TOKEN.

const headers = {
‚Authorization‘: ‚Basic APITOKEN‘
};

Und dann so nutzen: UrlFetchApp.fetch(url, {headers});

Für Looker Data Studio kann man sich auch an die SQL von Shopware hängen. Das ist am einfachsten.
Es gibt auch die HEPTAcloud Schnittstelle, die das wohl vereinfacht als Plugin. Die haben wir aber bisher nicht im Einsatz.

Ok, super. Danke für die Hinweise! Ich probier das dann mal aus.