2016-12-01 5 views
1

Ich verwende Python/Beatbox, um auf Salesforce-Fälle zuzugreifen.Wie Sie mithilfe von Python Dateien von Salesforce abrufen können

service = beatbox.PythonClient() # instantiate the object 
service.login(...) # login using your sf credentials 

query_result = service.query("SELECT Id, AccountId, CaseNumber FROM Case WHERE Id='xyz' ") 

Ich habe Interesse an einem konkreten Fall:

print query_result[0].Id 

Inne ...

att_result = service.query("SELECT Id, ContentType, Name FROM Attachment WHERE ParentId= '" + str(query_result[0].Id) + "'") 

Bisher waren die Ergebnisse gut sind. Jetzt möchte ich die hochgeladenen Dateien in den Fall herunterladen. Was sollte meine Abfrage sein? Ich habe versucht, folgende und seine immer empty..But Ich bin sicher, der Fall hat Dateien sowie Anhänge ..

doc_result = service.query("SELECT Id, ContentDocumentId, Title FROM AttachedContentDocument WHERE Id= '" + str(query_result[0].Id) + "'") 

Ich habe auch versucht, das Dokument-Objekt und immer noch keinen Erfolg. Ich schätze Ihre Hilfe.

+0

Ich bin nicht vertraut mit dem Salesforce-API, aber in Ihrem letzten Zeile, wo Sie die Anlage abrufen, 'doc_result', sollten Sie die ID verwenden von die Anlage (n), so würden Sie 'str (att_result [0] .Id)' statt 'str (query_result [0] .Id)' verwenden. –

+0

Ich denke, dass Sie suchen: ContentDocument und nicht AttachedContentDocument. Zumindest in meinem 'Fall' funktioniert es – utm

+0

Utm, Um auf contentdocument zuzugreifen, wie verbinden wir mit Fall und seinen Dokumenten. Ist es case.ID = ParentID.ContentDocument? Das fehlt mir. – user7233710

Antwort

0

Sie können nicht mehr als eine Anlage pro Anfrage in einer Salesforce-API abrufen. Um sicher zu sein, dass Sie eine Anlage zu tun, bekommen die Attachment.Id erste, erhalten dann den Körper durch eine Schleife

SELECT Id FROM Attachment WHERE ParentId = '...' 
for ... 
    SELECT Body FROM Attachment WHERE Id = '...'" 

A) SOAP API (Beatbox): Holen Sie sich das Anlage als normale lange base64encoded Feld.

Die Abfrage sollte eine Zeile erwarten, da die Ausgabe auf eine Zeile beschränkt ist, wenn das Feld "Body" vorhanden ist.

B) Wenn REST API verwendet wird (simple-salesforce Paket) mit den gleichen Suchanfrage, der Wert von Body oder VersionData Feldern ist eine URL von der Form, die durch '/services/data/v40.0/sobjects/Attachment/<object_id>/Body' GET-Anforderung heruntergeladen werden kann.

C) Fetch Salesforce Attachment content with django-salesforce


Objekte nützlich für Binary Large Objects sind Anlage, Dokumenten- und Content. Diese nützlichen Abfragen ermöglichen, ein binäres großes Objekt (Anhang oder Dokument) als ein normales langes Feld durch SOAP API (Beatbox) zu erhalten. Das Objekt ContentVersion ermöglicht es, mehrere Versionen derselben Daten zu speichern. Attachment hat ein Elternobjekt. Document ist ohne ein übergeordnetes Objekt. Nützliche Anfragen: (lesen Einschränkungen durch API oben)

SELECT Id, Body FROM Attachment WHERE ParentId = '...' 
SELECT Id, Body FROM Document WHERE ParentId = '...' 
SELECT Id, VersionData FROM ContentVersion WHERE ... 
Verwandte Themen