【问题标题】:Downloading images from Salesforce URL using Python使用 Python 从 Salesforce URL 下载图像
【发布时间】:2019-05-22 23:50:43
【问题描述】:

我有一个来自 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))

【问题讨论】:

  • 我使用 Windows 作为我的操作系统
  • 嗨,杰克,为了让您的代码保持可读性 - 确保将其放入代码块格式,这将有助于有人更快地为您找到解决方案。此外,在编辑时,使用编辑标签更新问题。

标签: python python-3.x salesforce


【解决方案1】:

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 或您选择的库来请求数据并将其保存到磁盘。

【讨论】:

    【解决方案2】:

    我这辈子从来没有写过一行 Python 代码,但希望在这和大卫的回答之间你会有所收获。

    图片是否上传到 Salesforce?它们最有可能在 Attachment 或文件 (ContentVersion) 表中。您可以尝试检查 URL。所有附件记录 ID 均以 00P 开头。

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

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

    所以你会对其进行 base64 解码、重命名并保存...

    如果将某些内容上传到文件,则过程类似,只是表不同。这篇博文看起来不错:https://crmcog.com/retrieve-sfdc-attachments-using-rest/

    【讨论】:

      猜你喜欢
      • 2021-10-22
      • 1970-01-01
      • 1970-01-01
      • 2021-03-25
      • 1970-01-01
      • 2021-09-07
      • 1970-01-01
      • 2018-08-03
      • 1970-01-01
      相关资源
      最近更新 更多