如何使用Python从Salesforce获取文件

2024-05-23 13:29:13 发布

您现在位置: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'  ")

我对一个具体案例感兴趣:

^{pr2}$

获取附件。。。在

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

我也尝试了document对象,但仍然没有成功。谢谢你的帮助。在


Tags: 文件fromid附件serviceloginresultwhere
2条回答
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 })

请参考会话标识:https://github.com/simple-salesforce/simple-salesforce

在任何SalesforceAPI中,一个请求最多只能获取一个附件。为了确保你没有附件附件.Id先把尸体绕一圈

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

A)SOAPAPI(Beatbox):将附件作为普通的长base64encoded字段获取。在

^{pr2}$

查询应该只有一行,因为如果存在“Body”字段,则输出限制为一行。在

B)如果对相同的查询使用RESTAPI(simple-salesforce包),Body或{}字段的值是格式为'/services/data/v40.0/sobjects/Attachment/<object_id>/Body'的URL,可以通过GET请求下载。在

C)Fetch Salesforce Attachment content with django-salesforce


对二进制大对象有用的对象是附件、文档和ContentVersion。 这些有用的查询允许通过SOAPAPI(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 ...

相关问题 更多 >