使用Python从Salesforce URL下载图像

时间:2019-05-22 23:50:43

标签: python python-3.x salesforce

我有一个来自Salesforce的一系列联系人的csv,其名称,位置和URL可以打开我需要下载的图像

到目前为止,我只能使用Python访问我的Salesforce实例,但仍在努力寻找一种使用python软件包的方法,该方法不仅可以打开URL,还可以下载.jpg格式的图像,并使用客户的名称和位置。

是否有任何可用的软件包允许我执行此操作。我尝试使用simple-salesforce,但我不认为它具有此功能。

下面是我到目前为止显示的查询的代码,该查询返回我需要下载(URL_Fotograf_a_Cliente__c)的URL链接的所有联系人,但是我没有比这更多的

from simple_salesforce import Salesforce, SFType, SalesforceLogin
import pandas as pd
import json
from pprint import pprint as pp

session_id, instance = SalesforceLogin(username= username, password=password, security_token=security_token, sandbox=False)

print(session_id,instance)

sf = Salesforce(instance= instance, session_id=session_id)

SOQL= "SELECT Id, Name,C_digo_del_Usuario__c,Tratamiento_IPA__c,Estado__c,Municipio__c,Comunidad__c, URL_Fotograf_a_Cliente__c FROM Contact WHERE Tratamiento_IPA__c IN ('x', 'y', 'z')"

pp(sf.query(query = SOQL))

2 个答案:

答案 0 :(得分:0)

simple_salesforce是访问Salesforce的正确软件包,但是您的使用方式实际上并不符合典型途径。您无需触摸SalesforceLoginSFType;这些大多是内部的。随便

sf = Salesforce(username=username, password=password, security_token=security_token, sandbox=False)

然后,查询您的记录

records = sf.query("SELECT Id, Name,C_digo_del_Usuario__c,Tratamiento_IPA__c,Estado__c,Municipio__c,Comunidad__c, URL_Fotograf_a_Cliente__c FROM Contact WHERE Tratamiento_IPA__c IN ('x', 'y', 'z')")
for r in records.get("records"):
    url = record["URL_Fotograf_a_Cliente__c"]
    # Now, download the image and save it.
    # other record details are available as, e.g., `record["Name"]`

您如何精确下载映像取决于映像是否托管在Salesforce上以及是否需要身份验证才能访问。我假设它只是一个外部URL,在这种情况下,您可以使用requests或您选择的库来请求数据并将其保存到磁盘。

答案 1 :(得分:0)

我一生中从未编写过Python代码,但希望在这和David的回答之间您会有所收获。

图像是否已上传到Salesforce?它们很可能位于Attachment或File(ContentVersion)表中。您可以尝试检查URL。所有附件记录ID均以00P开头。

我不确定您的软件包使用的是SOAP还是REST API。在SOAP API中,您可以直接获取主体,为base64编码的字符串。在REST API中,您可以获取直接下载URL。

SELECT Id, Name, Body, BodyLength, ContentType
FROM Attachment

Query results from developer console (REST API)

因此,您需要对其进行base64解码,重命名并保存...

如果将某些内容上传到文件,则过程类似,只是表不同。这篇博客文章似乎是一个不错的开始:https://crmcog.com/retrieve-sfdc-attachments-using-rest/