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

使用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脚本(简单易上手)

  1. 获取所有批处理ID:在REST Explorer发送GET请求到/services/async/v29.0/job/7501j000000Lb31/batch,会返回该作业下所有批处理的列表,提取里面的batch ID。
  2. 编写批量下载脚本:把提取到的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会更高效:

  1. 登录CLI:确保已安装sfdx,执行sfdx auth:web:login登录你的Salesforce实例。
  2. 获取批处理列表:执行命令获取指定作业的所有批处理ID:
sfdx force:data:bulk:batch:list -u 你的用户名/别名 -i 7501j000000Lb31
  1. 批量下载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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:08:17