通过Salesforce CLI(sf)查询和管理Salesforce CRM数据。执行SOQL/SOSL查询、查看对象模式、增删改记录、批量导入/导出、运行Apex、部署元数据以及调用原始REST API。
销售力 技能 : 使用销售力 CLI (sf) 与 Salesforce orgs 进行交互是一项面向实际任务的技能,主要用于使用前必须认证 CLI;结构输出时总是添加 --json;
该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
使用 Salesforce CLI(sf)与 Salesforce 组织(org)进行交互。使用前必须完成 CLI 认证。始终添加 --json 参数以获取结构化输出。
若系统中未安装 sf 可执行文件,可通过 npm 安装(npm install -g @salesforce/cli),或从 https://developer.salesforce.com/tools/salesforcecli 下载。安装完成后,请立即运行 sf org login web 进行认证,以连接到 Salesforce 组织。
sf org login web --alias my-org
其他登录方式:
# 基于 JWT 的登录(适用于 CI/自动化场景) sf org login jwt --client-id--jwt-key-file server.key --username user@example.com --alias my-org # 使用已有访问令牌登录 sf org login access-token --instance-url https://mycompany.my.salesforce.com # 通过 SFDX 认证 URL 登录(URL 来自文件) sf org login sfdx-url --sfdx-url-file authUrl.txt --alias my-org
# 列出所有已认证的组织 sf org list --json # 显示默认组织的信息(访问令牌、实例 URL、用户名) sf org display --json # 显示指定组织的信息 sf org display --target-org my-org --json # 显示包含 SFDX 认证 URL 的详细信息(敏感信息 — 含刷新令牌) sf org display --target-org my-org --verbose --json # 在浏览器中打开组织 sf org open sf org open --target-org my-org # 注销 sf org logout --target-org my-org
# 设置默认目标组织 sf config set target-org my-org # 列出所有配置变量 sf config list # 获取指定配置项的值 sf config get target-org # 设置别名 sf alias set prod=user@example.com # 列出所有别名 sf alias list
通过默认 API 执行标准 SOQL 查询:
# 基础查询 sf data query --query "SELECT Id, Name, Email FROM Contact LIMIT 10" --json # WHERE 子句 sf data query --query "SELECT Id, Name, Amount, StageName FROM Opportunity WHERE StageName = 'Closed Won'" --json # 关系查询(父 → 子) sf data query --query "SELECT Id, Name, (SELECT LastName, Email FROM Contacts) FROM Account LIMIT 5" --json # 关系查询(子 → 父) sf data query --query "SELECT Id, Name, Account.Name FROM Contact" --json # LIKE 文本搜索 sf data query --query "SELECT Id, Name FROM Account WHERE Name LIKE '%Acme%'" --json # 日期筛选 sf data query --query "SELECT Id, Name, CreatedDate FROM Lead WHERE CreatedDate = TODAY" --json # ORDER BY + LIMIT sf data query --query "SELECT Id, Name, Amount FROM Opportunity ORDER BY Amount DESC LIMIT 20" --json # 包含已删除/已归档记录 sf data query --query "SELECT Id, Name FROM Account" --all-rows --json # 从文件执行查询 sf data query --file query.soql --json # Tooling API 查询(元数据对象,如 ApexClass、ApexTrigger) sf data query --query "SELECT Id, Name, Status FROM ApexClass" --use-tooling-api --json # 输出为 CSV 文件 sf data query --query "SELECT Id, Name, Email FROM Contact" --result-format csv --output-file contacts.csv # 指定目标组织 sf data query --query "SELECT Id, Name FROM Account" --target-org my-org --json
对于返回记录数超过 10,000 条的查询,请改用 Bulk API:
sf data export bulk --query "SELECT Id, Name, Email FROM Contact" --output-file contacts.csv --result-format csv --wait 10 sf data export bulk --query "SELECT Id, Name FROM Account" --output-file accounts.json --result-format json --wait 10
SOSL 可同时跨多个对象执行搜索:
# 跨对象搜索文本
sf data search --query "FIND {John Smith} IN ALL FIELDS RETURNING Contact(Name, Email), Lead(Name, Email)" --json
# 仅在名称字段中搜索
sf data search --query "FIND {Acme} IN NAME FIELDS RETURNING Account(Name, Industry), Contact(Name)" --json
# 从文件执行搜索
sf data search --file search.sosl --json
# 输出为 CSV
sf data search --query "FIND {test} RETURNING Contact(Name)" --result-format csv
# 按记录 ID 获取 sf data get record --sobject Contact --record-id 003XXXXXXXXXXXX --json # 按字段匹配(类似 WHERE) sf data get record --sobject Account --where "Name=Acme" --json # 按多个字段匹配(含空格的值需加单引号) sf data get record --sobject Account --where "Name='Universal Containers' Phone='(123) 456-7890'" --json
sf data create record --sobject Contact --values "FirstName='Jane' LastName='Doe' Email='jane@example.com'" --json sf data create record --sobject Account --values "Name='New Company' Website=www.example.com Industry='Technology'" --json # Tooling API 对象 sf data create record --sobject TraceFlag --use-tooling-api --values "DebugLevelId=7dl... LogType=CLASS_TRACING" --json
# 按 ID 更新 sf data update record --sobject Contact --record-id 003XXXXXXXXXXXX --values "Email='updated@example.com'" --json # 按字段匹配更新 sf data update record --sobject Account --where "Name='Old Acme'" --values "Name='New Acme'" --json # 多字段更新 sf data update record --sobject Account --record-id 001XXXXXXXXXXXX --values "Name='Acme III' Website=www.example.com" --json
# 按 ID 删除 sf data delete record --sobject Account --record-id 001XXXXXXXXXXXX --json # 按字段匹配删除 sf data delete record --sobject Account --where "Name=Acme" --json
适用于大规模数据集(数千至数百万条记录):
# 导出为 CSV sf data export bulk --query "SELECT Id, Name, Email FROM Contact" --output-file contacts.csv --result-format csv --wait 10 # 导出为 JSON sf data export bulk --query "SELECT Id, Name FROM Account" --output-file accounts.json --result-format json --wait 10 # 包含软删除记录 sf data export bulk --query "SELECT Id, Name FROM Account" --output-file accounts.csv --result-format csv --all-rows --wait 10 # 恢复超时的导出任务 sf data export resume --job-id 750XXXXXXXXXXXX --json
# 从 CSV 导入 sf data import bulk --file accounts.csv --sobject Account --wait 10 # 恢复超时的导入任务 sf data import resume --job-id 750XXXXXXXXXXXX --json
sf data upsert bulk --file contacts.csv --sobject Contact --external-id Email --wait 10
# 删除 CSV 中列出的记录(CSV 必须包含 Id 列) sf data delete bulk --file records-to-delete.csv --sobject Contact --wait 10
# 导出为带关系的 JSON 树格式 sf data export tree --query "SELECT Id, Name, (SELECT Name, Email FROM Contacts) FROM Account" --json # 使用计划文件导出(支持多对象) sf data export tree --query "SELECT Id, Name FROM Account" --plan --output-dir export-data # 从树形 JSON 文件导入 sf data import tree --files Account.json,Contact.json # 使用计划定义文件导入 sf data import tree --plan Account-Contact-plan.json
# 描述对象(字段、关系、选择列表值等) sf sobject describe --sobject Account --json # 描述自定义对象 sf sobject describe --sobject MyCustomObject__c --json # 描述 Tooling API 对象 sf sobject describe --sobject ApexClass --use-tooling-api --json # 列出所有对象 sf sobject list --json # 仅列出自定义对象 sf sobject list --sobject custom --json # 仅列出标准对象 sf sobject list --sobject standard --json
# 从文件执行 Apex sf apex run --file script.apex --json # 交互式执行(输入代码后按 Ctrl+D 执行) sf apex run # 运行 Apex 测试 sf apex run test --test-names MyTestClass --json # 获取测试结果 sf apex get test --test-run-id 707XXXXXXXXXXXX --json # 查看 Apex 日志 sf apex list log --json sf apex get log --log-id 07LXXXXXXXXXXXX
发起任意已认证的 REST API 请求:
# GET 请求
sf api request rest 'services/data/v62.0/limits' --json
# 列出 API 版本
sf api request rest '/services/data/' --json
# 通过 REST 创建记录
sf api request rest '/services/data/v62.0/sobjects/Account' --method POST --body '{"Name":"REST Account","Industry":"Technology"}' --json
# 通过 REST 更新记录(PATCH)
sf api request rest '/services/data/v62.0/sobjects/Account/001XXXXXXXXXXXX' --method PATCH --body '{"BillingCity":"San Francisco"}' --json
# GraphQL 查询
sf api request graphql --body '{"query":"{ uiapi { query { Account { edges { node { Name { value } } } } } } }"}' --json
# 自定义请求头
sf api request rest '/services/data/v62.0/limits' --header 'Accept: application/xml'
# 将响应保存至文件
sf api request rest '/services/data/v62.0/limits' --stream-to-file limits.json
# 将元数据部署到组织 sf project deploy start --source-dir force-app --json # 部署特定元数据组件 sf project deploy start --metadata ApexClass:MyClass --json # 从组织中检出元数据 sf project retrieve start --metadata ApexClass --json # 查看部署状态 sf project deploy report --job-id 0AfXXXXXXXXXXXX --json # 生成新的 Salesforce DX 项目 sf project generate --name my-project # 列出组织中的元数据组件 sf project list ignored --json
# 运行 CLI 诊断 sf doctor # 查看 CLI 版本 sf version # 查看最新特性说明 sf whatsnew
-- 统计记录数量 SELECT COUNT() FROM Contact WHERE AccountId = '001XXXXXXXXXXXX' -- 聚合查询 SELECT StageName, COUNT(Id), SUM(Amount) FROM Opportunity GROUP BY StageName -- 日期字面量 SELECT Id, Name FROM Lead WHERE CreatedDate = LAST_N_DAYS:30 -- 子查询(半连接) SELECT Id, Name FROM Account WHERE Id IN (SELECT AccountId FROM Contact WHERE Email LIKE '%@acme.com') -- 多态查找(Polymorphic lookup) SELECT Id, Who.Name, Who.Type FROM Task WHERE Who.Type = 'Contact' -- 多重 WHERE 条件 SELECT Id, Name, Amount FROM Opportunity WHERE Amount > 10000 AND StageName != 'Closed Lost' AND CloseDate = THIS_QUARTER
--json 参数,确保输出为结构化、可解析格式。LIMIT 限制返回结果数量,避免数据量过大;建议起始值设为 LIMIT 10,再根据用户需求逐步增加。sf data export bulk,而非 sf data query。WHERE ... LIKE '%term%';当需跨多个对象搜索时,则使用 sf data search 发起 SOSL 查询。--target-org 显式指定目标;若存在歧义,需主动询问用户选择哪一个组织。sf org login web 重新完成认证。COUNT() 等聚合函数)。此类查询请使用标准的 sf data query 命令。sf sobject describe 时,JSON 输出可能非常庞大。请为用户归纳关键字段、必填字段及对象间关系,避免直接输出原始 JSON 内容。相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.6万人学习
最新文章