问题标签 [simple-salesforce]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
48 浏览

python - 具有 API 用户专用帐户的 simple-salesforce

我正在尝试通过库进行身份验证并获得对我的 salesforce 环境的访问权限,simple-salesforce但是我只有一个 API 用户帐户,我只获得了密码和用户名,并且该帐户无法访问实际的 UI 界面,我无法创建应用程序. 我不想使用“普通”帐户,因为将来需要 MFA。另外,我应该对仅 API 的帐户使用什么身份验证方法?智威汤逊?

0 投票
1 回答
129 浏览

python - 简单的 Salesforce 日期上传

我正在尝试使用 openpyxl 和 simplesfoce 将机会上传到 Salesforce。以下是我为使上传正常工作所做的当前尝试。我试过了,一个普通的excel日期对象,一个字符串的excel日期对象,一个去掉时间部分的excel日期对象。

日期对象收到无法进行 JSON 序列化的错误,所有其他对象都会收到以下错误。下面的信息是试图发送到 Salesforce 的信息,错误是发回的错误消息。

我已经获取了这些确切的数据并手动创造了一个很好的机会,所以我看到错误的唯一原因是日期的格式。

0 投票
0 回答
32 浏览

flask - 在 Flask Web App 中刷新 Salesforce 访问令牌

Salesforce 访问令牌和使用这些访问令牌查询 Salesforce 都可以在simple_salesforcepython 客户端上正常工作。问题是在 Web 应用程序中刷新这些令牌。我曾尝试使用如下全局变量来做到这一点,但这似乎不是线程安全的,并且难以为其编写单元测试。

我试图用上面的代码实现的是在加载路由器文件时实例化 salesforce 对象。SalesforceConnector是我的班级,它刚刚为 Salesforce 获取了一个新令牌,然后使用该访问令牌获取了一个 salesforce 对象。如果查询失败get_salesforce_records,我会重试并将新对象保存在全局变量中。

是否有更好的方法来实现索引功能,以便在访问令牌过期时并行请求流入时不会实例化多个新的销售人员对象?

更新:我已经将令牌刷新的逻辑移动到一个刷新令牌的类,然后在它发现令牌过期时执行查询。但是由于多个并行请求而发生的并行刷新的核心问题仍然是一样的!

0 投票
1 回答
43 浏览

python - 使用工具 API 更新 Sales Force 上的“customField”的“valueSet”

我正在尝试使用工具API 更新 salesforce 上自定义字段的选项列表。

这是我的有效载荷:

我正在使用 python 库simple-salesforce发出请求

这会导致以下错误消息:

我无法找到我的有效载荷的问题。我正在使用 API 版本 52.0。

0 投票
0 回答
36 浏览

python - python:如何使 simple-salesforce 的批量插入插入有效记录并捕获无效记录?

我正在使用 simple-salesforce 提供的批量 api 插入记录,但无法捕获无效记录,最终没有插入记录。

0 投票
1 回答
116 浏览

python - Python Simple Salesforce:为导入的联系人自动填充联系人中的 AccountID

我正在使用 Simple Salesforce Python 库将 10 个联系人从外部数据源导入 Salesforce。

背景:一个帐户可以在联系人中有多个记录。我在 Account 和 Contact 中都创建了 ExternalAccountID 字段。与正在导入的 10 个联系人相关的帐户已加载到 Account 对象中。Account 对象中的'ExternalAccountID' 包含'legacy account id'(例如1234_LegacyAccountId)。

Account 中的“ExternalAccountID”字段为“External”且唯一。Contact 中的“ExternalAccountID”不是唯一的,因为每个帐户可以有多个联系人。

Contact 中的“ExternalAccountContactID”是“External”和“Unique”。此字段由旧版帐户 ID + 旧版联系人 ID 组成。此字段用于更新联系人数据。

问题:来自 Account 对象的“Id”没有自动填充到“Contact”对象的 AccountId 字段中,10 个联系人的帐户已经在 Account 对象中可用。

当前的解决方案使用 Pandas Dataframe 来插入 10 个联系人。这是查询源数据并在 Salesforce 目标服务器中插入数据的代码片段。

我应该在脚本中的哪里指定需要引用相关的 Account 对象,以便可以检索 Account 中的“Id”?在 Data Loader 中,我可以插入数据,并且 Contact 中的“AccountId”正在自动填充,如何使用 Python 实现相同的结果?任何提示

0 投票
2 回答
101 浏览

python - 如何将从salesforce中提取的表格格式化为python?

我能够使用 python 从 salesforce 中提取一些字段。

我使用了以下代码块:

此过程将所有项目放在一个“记录”字段中。

记录 总大小
OrderedDict([('attributes', OrderedDict([('type', 'AuthorisedProduct__c'), ('url', '/services/data/v42.0/sobjects/AuthorisedProduct__c/a020o00000xC1fmAAC')])), ('Brand_Name__c ', 'ABB'), ('名称', 'UNO-DM-1.2-TL-PLUS-B')]) 14000
OrderedDict([('attributes', OrderedDict([('type', 'AuthorisedProduct__c'), ('url', '/services/data/v42.0/sobjects/AuthorisedProduct__c/a020o00000xC1fnAAC')])), ('Brand_Name__c ', 'ABB'), ('名称', 'UNO-DM-1.2-TL-PLUS-SB')]) 14000
OrderedDict([('attributes', OrderedDict([('type', 'AuthorisedProduct__c'), ('url', '/services/data/v42.0/sobjects/AuthorisedProduct__c/a020o00000xC1foAAC')])), ('Brand_Name__c ', 'ABB'), ('名称', 'UNO-DM-2.0-TL-PLUS-B')]) 14000

请注意,记录下有 14000 个值。我想在一个简单的数据框中只有两个字段。带有“Brand_Name__c”和“名称”字段的表。

品牌名称__C 姓名
ABB UNO-DM-2.0-TL-PLUS-B
ABB UNO-DM-1.2-TL-PLUS-SB

我们将有一个 14000 x 2 的矩阵。

请告知如何实现?

还有,如何扭转这个过程?

非常感谢大家。

0 投票
0 回答
71 浏览

python - 如何用 python 中的 pandas 数据框对象替换 salesforce 对象?

我正在将一个 salesforce 对象提取到 python 中,以便将数据框与一些外部数据框合并。

在这个阶段,记录字段看起来像

记录 总大小
OrderedDict([('attributes', OrderedDict([('type', 'AuthorisedProduct__c'), ('url', '/services/data/v42.0/sobjects/AuthorisedProduct__c/a020o00000xC1fmAAC')])), ('Brand_Name__c ', 'ABB'), ('名称', 'UNO-DM-1.2-TL-PLUS-B')]) 14000
OrderedDict([('attributes', OrderedDict([('type', 'AuthorisedProduct__c'), ('url', '/services/data/v42.0/sobjects/AuthorisedProduct__c/a020o00000xC1fnAAC')])), ('Brand_Name__c ', 'ABB'), ('名称', 'UNO-DM-1.2-TL-PLUS-SB')]) 14000
OrderedDict([('attributes', OrderedDict([('type', 'AuthorisedProduct__c'), ('url', '/services/data/v42.0/sobjects/AuthorisedProduct__c/a020o00000xC1foAAC')])), ('Brand_Name__c ', 'ABB'), ('名称', 'UNO-DM-2.0-TL-PLUS-B')]) 14000

将 pandas 数据框中的记录字段转换为

桌子更干净

品牌名称__C 姓名
ABB UNO-DM-2.0-TL-PLUS-B
ABB UNO-DM-1.2-TL-PLUS-SB

现在,矩阵的形状是

我正在将此数据框与外部数据框合并

现在我想用 df_authprodnew 将原始 AuthorisedProduct__c 对象替换回 salesforce。但是这次数据框的形状是(14000 x 48)。这也意味着数据格式应该回到

记录 总大小
OrderedDict([('attributes', OrderedDict([('type', 'AuthorisedProduct__c'), ('url', '/services/data/v42.0/sobjects/AuthorisedProduct__c/a020o00000xC1fmAAC')])), ('Brand_Name__c ', 'ABB'), ('名称', 'UNO-DM-1.2-TL-PLUS-B')]) 14000

如何用新的 AuthorisedProduct__c(df_authprodnew 重命名)替换大型销售人员对象(例如 AuthorisedProduct__c),其中包括新信息,例如某些值的更改和值的添加。

我想用这个新表替换旧表/或使用 simple_salesforce 将新表上传到 salesforce 并每周继续替换过去的表?

另外,sf.query_all("SELECT * FROM AuthorisedProduct__c) 的等价物是什么?

再次感谢您的友好建议。

0 投票
1 回答
807 浏览

python-3.6 - Lambda 函数因 /lib64/libc.so.6 失败:未找到版本“GLIBC_2.18”

我正在尝试在 AWS lambda 中创建一层 simple-salesforce(Python 库),并尝试从我的 python 代码中使用它(导入它)。我有windows机器。

虽然我读到编译窗口可能存在问题,所以我从 Windows 商店安装了 ubuntu1804,然后继续为 lambda 层创建 zip。(zip是为结构为“python/lib/python3.6/site-packages/......”的python文件夹创建的)

我正在使用 Python 3.6。我浏览了几篇关于这个问题的文章,但可以找到任何解决方案。这个视频帮助我在 AWS 中成功地为 Pandas 和请求创建了一个层,并对我使用的 pip 命令进行了细微调整

我用于简单销售人员的完全相同的过程,我得到以下错误如下:

无法导入模块“lambda_function”:/lib64/libc.so.6:未找到版本“GLIBC_2.18”(/opt/python/lib/python3.6/site-packages/cryptography/hazmat/bindings/_rust 需要.abi3.so)

编辑:-我尝试使用 .whl 的另一种方法虽然没有给出上述错误,但给出了“找不到请求模块”的错误,当我添加请求模块层时,它给出了错误 authlib not found。(如果我评论salesforce相关的事情,请求层工作正常。甚至尝试上传作为简单层相同的authlib问题)

编辑:我使用的 Lambda 代码如下

0 投票
0 回答
13 浏览

salesforce - sObject 获取已删除端点权限

我是销售人员的新手,所有这些都是错综复杂的。我继承了一个代码库,并且在找出(我认为是)环境问题时遇到了问题。

我在尝试使用 REST 端点的 v42.0 版本获取已删除的联系人时收到 INVALID_OPERATION_WITH_EXPIRED_PASSWORD。

看起来像这样:https//<..environment-url.com>/services/data/v42.0/sobjects/Contact/deleted/?<query-string-stuff>

同一用户能够访问批量 api 并毫无问题地提取数据。我正在使用 python simple-salesforce 库,这两个操作都在同一个会话中发生。

此外,访问删除端点在另一个环境中也可以正常工作。

我觉得这肯定是一个权限问题,但据我所知,所有权限都是相同的。

这里的任何人都可以指出可能导致访问其余 api 问题的特定设置吗?

谢谢!