2016-05-06 5 views
0

Was ich im Wesentlichen versuche zu tun ist eine Rechnung in Harvest zu generieren, wenn eine Karte in einer Liste in Trello platziert wird. Ich habe Zapier ausprobiert, aber es ist keine Rechnungsfunktion eingebaut.API GET oder Zapier Trigger auf POST-Aktion

Ich werde das selbst entwickeln müssen. Trello hat eine Javascript- oder Python-Aktion, daher bin ich auf diese beiden Sprachen beschränkt.

ZAPIER: Trello Trigger > Javascript or Python code 

Ich habe die JSON-Anforderung, die ich brauche

{ "invoice": { "due_at_human_format": "NET 10", "client_id": 3849315, "currency" : "United States Dollar - USD", "issued_at": "2015-04-22", "subject": "Your invoice subject goes here", "notes": "Some notes go here", "number": "303197", "kind": "project", "projects_to_invoice": "120353", "import_hours": "yes", "import_expense": "yes", "period_start": "2015-03-01", "period_end": "2016-03-31", "expense_period_start": "2015-03-31", "expense_period_end": "2016-03-31" } }

zu

https://[site].harvestapp.com/invoices 
Authorization: Basic amNtMjU4MkBnbWFpbC5jb206YTEwMDUw**NB 
Content-Type: application/javascript 
Accept: application/json 
gesendet werden Wie kann ich dies in nackten Knochen Python oder JavaScript mit einfachen Login-Authentifizierung veröffentlichen einschließlich Logik? Ein Beispielcode wäre hilfreich.

UPDATE: Ich habe diesen Code hinzugefügt, aber kann nicht scheinen, um es außerhalb Postman zu arbeiten

var data = JSON.stringify({ 
 
    "invoice": { 
 
    "due_at_human_format": "NET 10", 
 
    "client_id": 3849315, 
 
    "currency": "United States Dollar - USD", 
 
    "issued_at": "2015-04-22", 
 
    "subject": "Your invoice subject goes here", 
 
    "notes": "Some notes go here", 
 
    "number": "303197", 
 
    "kind": "project", 
 
    "projects_to_invoice": "120353", 
 
    "import_hours": "yes", 
 
    "import_expense": "yes", 
 
    "period_start": "2015-03-01", 
 
    "period_end": "2016-03-31", 
 
    "expense_period_start": "2015-03-31", 
 
    "expense_period_end": "2016-03-31" 
 
    } 
 
}); 
 

 
var xhr = new XMLHttpRequest(); 
 
xhr.withCredentials = true; 
 

 
xhr.addEventListener("readystatechange", function() { 
 
    if (this.readyState === 4) { 
 
    console.log(this.responseText); 
 
    } 
 
}); 
 

 
xhr.open("POST", "https://[url].harvestapp.com/invoices"); 
 
xhr.setRequestHeader("authorization", "Basic amNtMjU4MkBnbWFpbC***TEwMDUwMTNB"); 
 
xhr.setRequestHeader("content-type", "application/json"); 
 
xhr.setRequestHeader("accept", "application/json"); 
 
xhr.setRequestHeader("cache-control", "no-cache"); 
 
xhr.setRequestHeader("postman-token", "2c652344-1be5-8969-adf3-a7ca9ee7179f"); 
 

 
xhr.send(data);

Antwort

0

Trello hat einen vollwertigen REST-API, so dass Sie nicht auf diese beschränkt sind um nur Python oder JavaScript zu verwenden, es sei denn, das ist eine Einschränkung, die durch den verwendeten Zap festgelegt wird - was möglich ist, da Zapier hauptsächlich auf Django basiert.

Mit diesem gesagt ist es sehr einfach, nur eine POST-Anfrage in beiden Sprachen abzubrechen. Hier ist ein JavaScript-Beispiel für Sie, das Sie jedoch an Ihre speziellen Anforderungen anpassen müssen.

var request = new XMLHttpRequest(); 
var url = 'https://[site].harvestapp.com/invoices'; // or whatever your url actually is 
var headers = { 
    Authorization: 'amNtMjU4MkBnbWFpbC5jb206YTEwMDUw**NB', 
    Content-Type: 'application/javascript', 
    Accept: 'application/json' 
}; 
var params = { // your JSON encoded data }; 

request.open('POST', url, true); 
request.setRequestHeader(headers); 
request.send(params); 

In Python es etwa so aussehen würde:

import requests 
url = 'https://[site].harvestapp.com/invoices' 
request.headers = { 
    'Authorization': 'amNtMjU4MkBnbWFpbC5jb206YTEwMDUw**NB', 
    'Content-Type': 'application/javascript', 
    'Accept': 'application/json' 
} 
data = {} # put your data there instead of an empty dictionary 
request.post(url, data) 
+0

Ich habe Ihren Code geändert mit der Ernte laufen, aber es wird nicht außerhalb des Postbote arbeiten. –