使用Workbench调用Salesforce批量API遇InvalidSessionId错误求助
解决Salesforce Bulk API获取批处理请求的InvalidSessionId错误及批量拉取CSV方案
我来帮你搞定这个问题,先从你碰到的InvalidSessionId错误入手,再给你落地批量拉取所有请求CSV的具体方案:
一、先解决InvalidSessionId错误
这个错误的核心原因是Workbench的会话没有正确关联到你的API请求,或者会话已过期。试试这几个办法:
- 重新登录Workbench:有时候会话会悄悄超时,退出后重新登录你的Salesforce实例,登录后直接进入REST Explorer操作,别中途闲置太久。
- 手动添加会话头:在Workbench的REST Explorer里点击
Headers按钮,新增一个请求头:键为Authorization,值为Bearer {你的Session ID}。Session ID可以从Workbench的Info > Session Information里复制,或者通过Salesforce OAuth流程获取。 - 校验请求路径:确认你用的job ID和batch ID完全正确,Salesforce的ID是区分大小写的,别输错字符。
二、批量拉取所有批处理请求CSV的两种方案
如果不想手动逐个下载,这里有两个实用的方法:
方案1:Workbench+Python脚本(简单易上手)
- 获取所有批处理ID:在REST Explorer发送GET请求到
/services/async/v29.0/job/7501j000000Lb31/batch,会返回该作业下所有批处理的列表,提取里面的batch ID。 - 编写批量下载脚本:把提取到的batch ID放进列表,用Python循环请求并保存CSV。示例代码如下:
import requests # 替换成你的实际信息 session_id = "你的Session ID" instance_url = "https://你的实例名-api.salesforce.com" job_id = "7501j000000Lb31" batch_ids = ["7501g000000l0Lf", "这里放其他batch ID"] headers = { "Authorization": f"Bearer {session_id}", "Content-Type": "text/csv" } for batch_id in batch_ids: request_url = f"{instance_url}/services/async/v29.0/job/{job_id}/batch/{batch_id}/request" response = requests.get(request_url, headers=headers) if response.status_code == 200: with open(f"batch_{batch_id}_request.csv", "w", encoding="utf-8") as csv_file: csv_file.write(response.text) print(f"已成功下载batch {batch_id}的CSV文件") else: print(f"下载batch {batch_id}失败:{response.text}")
方案2:Salesforce CLI(专业批量操作)
如果习惯用命令行,Salesforce CLI会更高效:
- 登录CLI:确保已安装
sfdx,执行sfdx auth:web:login登录你的Salesforce实例。 - 获取批处理列表:执行命令获取指定作业的所有批处理ID:
sfdx force:data:bulk:batch:list -u 你的用户名/别名 -i 7501j000000Lb31
- 批量下载CSV:用循环命令自动下载所有批处理的请求CSV到指定目录:
# 需要提前安装jq工具来解析JSON输出 for batch_id in $(sfdx force:data:bulk:batch:list -u 你的用户名/别名 -i 7501j000000Lb31 --json | jq -r '.result[] | .id'); do sfdx force:data:bulk:batch:retrieve -u 你的用户名/别名 -i 7501j000000Lb31 -b $batch_id -r ./csv_output done
这个命令会把所有CSV文件保存到当前目录下的csv_output文件夹里。
额外提醒
- 权限检查:确保你的账号开启了
API Enabled权限,并且拥有对应批量作业类型的权限(比如插入、删除类的Bulk API权限)。 - API版本:v29.0是比较旧的版本,建议升级到较新的API版本(比如v58.0及以上),兼容性和功能会更好。
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

