You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Salesforce API获取指定日期后增改删的商机及queryAll用法

解决Salesforce查询已删除商机的问题

原查询报错原因

你在SOQL语句中使用的ALL ROWS关键字仅支持在Apex代码中使用,通过REST/SOAP API执行查询时不能添加该关键字,因此会触发MALFORMED_QUERY错误。要获取包含已删除、归档状态的记录,必须使用Salesforce的queryAll() API端点。

queryAll API 核心说明(翻译自官方文档)

queryAll()是Salesforce REST API的专属资源,它会返回指定对象的全量记录,包含三类:

  • 正常活跃的记录
  • 软删除的记录(对应isDeleted = true,即回收站中的记录)
  • 归档状态的记录
    而普通的query() API仅返回正常活跃的记录。

使用示例

1. REST API 直接调用(curl示例)

替换{your-instance-url}、{access-token}为你的实际环境信息:

curl "https://{your-instance-url}/services/data/v59.0/queryAll/?q=SELECT+Id,Name,SystemModStamp+FROM+Opportunity+WHERE+SystemModStamp+>=+'2022-09-20'"

注意:查询语句无需添加ALL ROWS,queryAll端点会自动包含所有状态的记录;如果需要仅筛选已删除的商机,可保留AND isDeleted = true条件。

2. Python SDK(simple-salesforce示例)

使用simple-salesforce库时,直接调用query_all()方法:

from simple_salesforce import Salesforce

sf = Salesforce(instance_url='https://{your-instance-url}', session_id='{access-token}')
query = "SELECT Id, Name, SystemModStamp FROM Opportunity WHERE SystemModStamp >= '2022-09-20'"
result = sf.query_all(query)

# 遍历处理返回结果
for record in result['records']:
    print(f"商机ID: {record['Id']}, 名称: {record['Name']}, 最后修改时间: {record['SystemModStamp']}")

3. Salesforce CLI 示例

通过sf cli执行查询:

sf data queryall -q "SELECT Id, Name FROM Opportunity WHERE SystemModStamp >= '2022-09-20'" -o your-org-alias

关键注意事项

  • queryAll支持完整SOQL语法,但禁止添加ALL ROWS关键字
  • 权限要求:需拥有View All Data权限,或对应对象的Read权限+查看已删除记录的权限
  • 分页处理:若返回记录数超过API单次限制(默认2000条),需通过结果中的nextRecordsUrl继续获取后续数据

内容的提问来源于stack exchange,提问作者Nisarg Patel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 09:20:13