簡體   English   中英

如何使用 Python 從 Salesforce 獲取文件

[英]How to get files from Salesforce using Python

我正在使用 Python/Beatbox 訪問 Salesforce 案例。

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'  ")

我對一個特定的案例感興趣:

print query_result[0].Id

獲取附件...

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

到目前為止,結果很好。 現在我想下載上傳到案例的文件。 我的查詢應該是什么? 我試過跟隨它,它總是空的..但我確定這個案例有文件和附件..

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

我也嘗試了文檔對象,但仍然沒有成功。 我很感激你的幫助。

在任何 Salesforce API 中,您最多只能通過一個請求獲得一個附件。 確保你沒有附件,先獲取Attachment.Id,然后通過循環獲取正文

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

A) SOAP API (Beatbox):獲取附件作為普通長 base64encoded 字段。

import base64
ret = service.query("SELECT Id, Body FROM Attachment WHERE Id = '...'")
blob = base64.b64decode(ret)[0]['Body'])

查詢應該期望一行,因為如果存在“正文”字段,則輸出僅限於一行。

B) 如果REST API 用於相同的查詢( simple-salesforce包),則BodyVersionData字段的值是形式為'/services/data/v40.0/sobjects/Attachment/<object_id>/Body'可以通過 GET 請求下載。

C)使用django-salesforce獲取 Salesforce 附件內容


對二進制大對象有用的對象是附件、文檔和內容版本。 這些有用的查詢允許通過SOAP API (Beatbox) 將二進制大對象(附件或文檔)作為普通的長字段獲取。 ContentVersion對象允許存儲相同數據的更多版本。 Attachment有一個父對象。 Document沒有任何父對象。 有用的查詢:(通過上面的 API 讀取限制)

SELECT Id, Body FROM Attachment WHERE ParentId = '...'
SELECT Id, Body FROM Document WHERE ParentId = '...'
SELECT Id, VersionData FROM ContentVersion WHERE ...
att_body = att_result["records"][0]["Body"]
att_url = base_url + attachment_body
att_text_result = requests.get(url, headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer %s' % session_id })

請參閱此 session_id: https : //github.com/simple-salesforce/simple-salesforce

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM