2016-12-19 5 views
1

Ich weiß nicht viel über API, in der Tat fast nichts. Ich habe Google POSTMAN verwendet, um eine POST-Anfrage zu stellen, um einige Daten aus Adaptive Insights zu extrahieren. Was ich tun möchte, ist den Aufruf von Excel VBA auszuführen und ein Excel-Blatt zu aktualisieren, wenn ich auf Knopfdruck brauche. HierAPI-Aufruf von VBA

ist der Ausschnitt aus POSTMAN:

 POST /api/v13 HTTP/1.1 
    Host: api.adaptiveinsights.com 
    Authorization: Basic ZmlubWdyX3NhbGVzQHN0ZW1jZWxsLmNvbTpBZGFwdGl2ZTE= 
    Content-Type: application/xml 
    cache -Control: no -cache 
    Postman-Token: 650bd3ad-82e9-aa33-ae77-ee4d89ff0fd8 

    <?xml version='1.0' encoding='UTF-8'?> 
    <call method="exportData" callerName="Export.xlsx"> 
    <credentials login="******@****.com" password="*****"/> 
    <version name="FY2017-November V2" isDefault="false"/> 
    <format useInternalCodes="true" includeUnmappedItems="false"/> 
    <filters> 
    <timeSpan start="Jan-2017" end="Feb-2017"/></filters> 
     <rules includeZeroRows="false" includeRollups="true" markInvalidValues="false" markBlanks="false" 
    timeRollups="single"> 
    </rules> 
    </call> 

Hier ist die Ausgabe von POSTMAN

 <?xml version="1.0" encoding="UTF-8"?> 
    <response success="true"> 
    <output><![CDATA[Account Name,Account Code,Level Name,Rollup 
     ....................................................... 

ich ein gutes Stück tat googeln, und das ist, was ich bisher für meine Makro haben:

 myURL = "https://api.adaptiveinsights.com/api/v13" 
     xmlHTTP.Open "POST", myURL, False 
     xmlHTTP.SetCredentials "****@****.com", "*****", HTTPREQUEST_SETCREDENTIALS_FOR_SERVER 
     xmlHTTP.SetRequestHeader "Content-Type", "application/xml" 
     xmlHTTP.Send 

     Set xmlResult = New MSXML2.DOMDocument 

     xmlResult.LoadXML xmlHTTP.ResponseText 

Meine Fragen sind:

  1. Wie verbinde ich mich mit diesem spezifischen Datensatz - "FY2017-November V2" mit timeSpan start = "Jan-2017" end = "Feb-2017".

  2. Wie lade ich die Daten in Excel, im Wesentlichen in VBA, was ich in POSTMAN getan habe?

Die Daten sieht wie folgt aus:

Es gibt vier Felder - 3 Text und ein numerisches (Kontoname, Kontocode, Level Name, Rollup):

"6020 Mitarbeiter profitieren", 6020, "Accounting-Corp", 20.3252

Würde ich wirklich jede Hilfe zu schätzen wissen.

Danke

Valglad

+0

Also, ist das Rückgabeformat Xml? Entweder können Sie mit der MSXML2-Bibliothek (auf die Sie bereits verwiesen haben) in den Xml mit VBA-Code bohren. Oder Sie experimentieren mit der Excel-Benutzeroberfläche und verwenden den Makro-Rekorder, um Beispielcode zu sehen. Ich weiß für eine Tatsache, dass Excel viele Dinge tun kann, wenn Sie versuchen, eine XML-Datei zu öffnen (es ist nur ich gehe nie diesen Pfad). –

+0

Es ist nicht klar aus Ihrer Frage, was das genaue Problem ist: Holen Sie die Ergebnisse von der API-Aufruf oder Parsen der zurückgegebenen Daten? Wenn Letzteres dann würde es helfen, mehr von der API-Ausgabe als das kleine Snippet anzuzeigen, das Sie einschlossen. Sieht wie eine Tabelle von Daten aus, die im Format "csv" (in einem CDATA-Abschnitt) ausgedrückt werden. Daher können Sie keine Standard-XML-Methoden zum Auslesen der einzelnen Datenpunkte verwenden. Zeigen Sie mehr davon, wenn Sie Hilfe benötigen. –

+0

Bitte * bearbeiten Sie Ihre Frage *, um die Beispieldaten hinzuzufügen –

Antwort

0

Ich denke, Ihre Auth hier falsch. Fügen Sie das gesamte XML in eine einzelne Variable ein, einschließlich der Authentifizierungsdaten. Für Adaptive Insights ist dies nur ein Teil des XML-Textes.

request = "<?xml version= ... </call>" 
URL = "https://api.adaptiveinsights.com/api/v13" 
Set objXML = CreateObject("MSXML2.ServerXMLHTTP") 
objXML.Open "POST", URL, False 
objXML.setRequestHeader "Content-Type", "text/xml" 
objXML.send (request) 
xmlResponse = objXML.responsetext 
MsgBox (xmlResponse) 

Sollte der erste Teil der Antwort im Meldungsfeld angezeigt werden. Sie haben immer noch Arbeit, den CDATA-Block zu analysieren, aber das ist nur Textmanipulation.