python - 如何使用 Python 从 Salesforce 获取文件

标签 python salesforce simple-salesforce beatbox

我正在使用 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):将附件作为普通的长 base64 编码字段获取。

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

查询应为一行,因为如果存在“正文”字段,则输出仅限于一行。

B) 如果 REST API(simple-salesforce 包)用于相同的查询,Body 的值或 VersionData fields 是形式为 '/services/data/v40.0/sobjects/Attachment/<object_id>/Body' 的 URL可以通过GET请求下载。

C) Fetch Salesforce Attachment content with django-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 ...

关于python - 如何使用 Python 从 Salesforce 获取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40900697/

相关文章:

python - cv2 (python) 和 torch/image (libpng) 的图像尺寸差异

python - 使用 git 在 Python 网络服务器中自动增加版本号

python - 在每次更改列中的值后添加垂直线

java - 如何在 Apex Restful 服务中首先获取 access_token 以从外部调用 GET/POST 方法?

validation - Salesforce - 将所有字段设为只读

python - 如何使用 python simple-salesforce 测试插入/更新是否成功

python - 通过特定网络接口(interface)发送http请求

error-handling - 如何处理 Messaging.sendEmail() 中的错误?

python - Python Simple-Salesforce exe 的 SSL 错误

python-3.6 - Lambda 函数失败/lib64/libc.so.6 : version `GLIBC_2.18' not found