0

API Get Funktion richtig konfigurieren

Hallo, ich versuche gerade Daten mittels API abzufragen. Aber ich bekomme immer einen API-Fehler und ich verstehe nicht warum. Geschafft habe ich, über ein script mit meinen Logindaten einen Token zu erhalten. Wenn ich dann aber versuche tatsächlich Daten zu ziehen, gibt es immer den Error. Das ist mein Script: 

let response := http("GET", "https://XXXXX.de/de/v1/product_variants/quantity_id/8789961", {
        Authorization: "Bearer Mein Token"
    }, null);
if response.error then
    alert(text(response.error))
else
    alert(text(response.result))
end

Sieht jemand einen offensichtlichen Fehler?

Liebe Grüße

Paul

6 Antworten

null
    • T_Bartzsch
    • vor 10 Monaten
    • Gemeldet - anzeigen

    Hallo Paul....

    ... dazu wäre es natürlich hilfreich zu wissen, welche API du da anfragst... und wie die API Dokumentation aussieht.... und welchen Fehler du bekommst....

    Ich tippe mal auf die shopify API ...?

      • Paul_J_Herberhold
      • vor 10 Monaten
      • Gemeldet - anzeigen

       Danke dir für deine Antwort. Ich habe es mittlerweile tatsächlich geschafft. Wenn ich es als Button einbinde läuft es. nur wenn ich es in ein Feld einbinde nach Feldänderung, klappt es nicht. Aber das ist nicht so wild. Die API kommt übrigens von Flyeralarm

    • Martin_Ossadnik
    • vor 10 Monaten
    • Gemeldet - anzeigen

    Das Problem hatte ich auch, es half mir das so umzubauen: mit einem "do as server"

    let response := do as server
    http("GET", "https://XXXXX.de/de/v1/product_variants/quantity_id/8789961", {
            Authorization: "Bearer Mein Token"
        }, null);
    if response.error then
        alert(text(response.error))
    else
        alert(text(response.result))
    end

    Copy

    • T_Bartzsch
    • vor 10 Monaten
    • Gemeldet - anzeigen

    Sehr gut... ich würde den http Befehl aber grundsätzlich in ein "do as server" packen, dann sollte es auch bei Trigger nach Änderung eines Feldes gehen...

    let response := do as server http("GET", "https://XXXXX.de/de/v1/product_variants/quantity_id/8789961", {
            Authorization: "Bearer Mein Token"
        }, null) end;
    • Paul_J_Herberhold
    • vor 10 Monaten
    • Gemeldet - anzeigen

    Jetzt brauche ich doch nochmal eure Hilfe. 

    Ich habe eine Tabelle Produkte mit einer Untertabelle Produktvariationen in der ersten Tabelle stehen alle Produkte z.B. Plakate DIN A1 und in der Untertabelle alle Variationen, z.B. 10 Stück, 20 Stück...

    Ich schaffe es die Werte in der Untertabelle mittels API einzutragen. Muss dann aber in jedem Datensatz auf den Button für die API-Anfrage drücken. Schicker wäre es in der Tabelle Produkte einen Button zu haben, der alle verknüpften Datensätze abfragt und aktualisiert. Das bekomme ich aber nicht hin. 

    Hier ist das Script, dass in der Untertabelle funktioniert: 

    let response := do as server
            http("GET", "https://resellerapi.flyeralarm.com/de/v1/product_variants/quantity_id/" +
            'Variations ID', {
                Authorization: "Bearer " + 'API Token'
            }, null)
        end;
    if response.error then
        alert(text(response.error))
    else
        let daten := response.result;
        let datenUebertragenZaehler := 0;
        for item in daten.quantities do
            if item.quantity_id = 'Variations ID' then
                'EK Standard' := item.Standard_price;
                datenUebertragenZaehler := datenUebertragenZaehler + 1;
                'Lieferzeit Standard' := item.Standard_to;
                datenUebertragenZaehler := datenUebertragenZaehler + 1;
                Auflage := item.quantity;
                datenUebertragenZaehler := datenUebertragenZaehler + 1;
                'Deadline Standard' := item.Standard_deadline;
                datenUebertragenZaehler := datenUebertragenZaehler + 1;
                if item.Express_available then
                    'Lieferzeit Express' := item.Express_to;
                    'EK Express' := item.Express_price;
                    'Deadline Express' := item.Express_deadline;
                    datenUebertragenZaehler := datenUebertragenZaehler + 3
                end;
                if item.Overnight_available then
                    'Lieferzeit Overnight' := item.Overnight_to;
                    'EK Overnight' := item.Overnight_price;
                    'Deadline Overnight' := item.Overnight_deadline;
                    datenUebertragenZaehler := datenUebertragenZaehler + 3
                end
            end
        end;
        for attribute in daten.attributes do
            if attribute.attribute_name = "Format" then
                Format := attribute.attribute_value;
                datenUebertragenZaehler := datenUebertragenZaehler + 1
            end;
            if attribute.attribute_name = "Material" then
                Material := attribute.attribute_value;
                datenUebertragenZaehler := datenUebertragenZaehler + 1
            end;
            if attribute.attribute_name = "Farbigkeit" then
                Farbigkeit := attribute.attribute_value;
                datenUebertragenZaehler := datenUebertragenZaehler + 1
            end;
            if attribute.attribute_name = "Veredelung" then
                Veredelung := attribute.attribute_value;
                datenUebertragenZaehler := datenUebertragenZaehler + 1
            end
        end;
        'Abfrage Datum' := today();
        if datenUebertragenZaehler > 0 then
            alert(datenUebertragenZaehler + " von 14 Daten erfolgreich übertragen.")
        else
            alert("Keine Daten übertragen. API Token überprüfen.")
        end
    end
    

     

    und hier mein Versuch es abzuändern: 

    for produktvariation in Produktvariationen do
        let produktvariationId := produktvariation.'Variations ID';
        let response := do as server
                http("GET", "https://resellerapi.flyeralarm.com/de/v1/product_variants/quantity_id/" +
                produktvariationId, {
                    Authorization: "Bearer " + Produktvariationen.'API Token'
                }, null)
            end;
        if response.error then
            alert("Fehler bei der Anfrage für Produktvariation ID " + produktvariationId + ": " +
            text(response.error))
        else
            let daten := response.result;
            let datenUebertragenZaehler := 0;
            for item in daten.quantities do
                if item.quantity_id = produktvariationId then
                    produktvariation.('EK Standard' := item.Standard_price);
                    datenUebertragenZaehler := datenUebertragenZaehler + 1;
                    if item.Express_available then
                        produktvariation.('EK Express' := item.Express_price);
                        datenUebertragenZaehler := datenUebertragenZaehler + 1
                    end;
                    if item.Overnight_available then
                        produktvariation.('EK Overnight' := item.Overnight_price);
                        datenUebertragenZaehler := datenUebertragenZaehler + 1
                    end
                end
            end;
            if datenUebertragenZaehler > 0 then
                alert(datenUebertragenZaehler +
                " Preise erfolgreich aktualisiert für Produktvariation ID " +
                produktvariationId)
            else
                alert("Keine Preise aktualisiert für Produktvariation ID " + produktvariationId)
            end
        end
    end
    

     

    Das funktioniert aber leider nicht.

      • Paul_J_Herberhold
      • vor 10 Monaten
      • Gemeldet - anzeigen

       manchmal steckt der Teufel im Detail. Den Token aus einer Untertabelle zu ziehen, hat anscheinend nicht geklappt. jetzt kommt der token aus der tabelle selbst und es läuft :)