一个基本的 Salesforce.com REST/Metadata/Soap API 客户端。基于 simple-salesforce。
项目描述
SalesforceXytoolsCore 是SalesforceXytools-for-sublime的核心。它基于simple-salesforce。
支持
- Sobject 记录管理:sobject 创建、获取、get_by_custom_id、更新、删除
- 对象查询 : query, query_more, search, query_allsearch
- 对象批量操作
- 运行 Apex 脚本
- 元数据控制:describeMetadata、listAllMetadata、getAllMetadataMap、listmeta、listFolder、retrieve等。
- Package.xml 构建器。
- 将元数据检索到内存,检索元数据 zip 文件。
- ApexClass、Trigger、ApexComponent、ApexPage:创建、更新、删除、获取
- 获取 Apex 日志
- 运行测试类
用法
要求
- Python3
- 要求
下载它,并导入到您的项目中
from SalesforceXytoolsCore import *
sobject 创建、获取、get_by_custom_id、更新、删除
username = ""
password = ""
soap_api = Soap(username=username,
password=password,
security_token='',
sandbox=True,
version='40.0'
)
sobject_name = "Account"
sobject = soap_api.get_sobject(sobject_name)
"""
create a new Sobject in Salesforce
"""
new_account = sobject.create({'Name':'Exia.Huang'})
sobject_id = new_account["id"]
print(new_account)
"""
get a Sobject in Salesforce
"""
sobject1 = sobject.get(sobject_id)
print(sobject1)
"""
get a Sobject by External ID
"""
sobject2 = sobject.get_by_custom_id('My_Custom_ID__c', '22')
"""
update a Sobject in Salesforce
"""
sobject3 = sobject.update(sobject_id,{'LastName': 'Huangxy'})
"""
delete a Sobject in Salesforce
"""
sobject.delete(sobject_id)
运行 Apex 脚本
apex_string = "System.debug('hello world');"
debug_levels = {
"DB": "Info",
"System": "DEBUG",
"Workflow": "INFO",
"Callout": "INFO",
"Validation": "INFO",
"Apex_Code": "DEBUG",
"Apex_Profiling": "INFO"
}
result = soap_api.execute_anonymous(apex_string, debug_levels)
print(result)
元数据控制:describeMetadata、listAllMetadata、getAllMetadataMap、listmeta、listFolder、retrieve等。
meta_api = MetadataApi(username=username,
password=password,
security_token='',
sandbox=True,
version='40.0'
)
"""
describeMetadata :
This call retrieves the metadata that describes your organization.
This information includes Apex classes and triggers, custom objects, custom fields on standard objects, tab sets that define an app, and many other metadata types.
"""
result = meta_api.describeMetadata()
print(json.dumps(result, indent=4))
"""listAllMetadata """
for meta in meta_api.listAllMetadata():
print(meta)
print(meta['type'] + " : " + meta['fullName'] + " : " + meta['fileName'])
"""getAllMetadataMap"""
all_metadata_map = meta_api.getAllMetadataMap()
"""listmeta"""
query_option_list = [
{
"metadata_type" : "EmailFolder",
"folder" : ""
},
{
"metadata_type" : "ApexClass",
"folder" : ""
}
]
listmeta_result = meta_api.listMetadata(query_option_list)
print(len(listmeta_result))
for meta in listmeta_result:
print(meta)
"""packageTypeList"""
print('>>>packageTypeList')
print(meta_api.packageTypeList())
"""listFolder"""
folder = meta_api.listFolder("EmailTemplate")
"""checkRetrieveStatus"""
retrieve_id = '09Sxxxxxxxxxxxx'
result = meta_api.checkRetrieveStatus(retrieve_id)
print(result)
将元数据检索到内存
"""retrieve"""
result = meta_api.startRetrieve()
print(result)
print(result["done"])
print(result["id"])
print(result["state"])
检索元数据 zip 文件
"""retrieve zip file"""
meta_api.retrieveZip("C:\\Users\\exia\\workspace","test20180615.zip")
Package.xml 构建器。
"""buildPackageXml"""
packagexml = meta_api.buildPackageXml()
print('>' * 80)
print('>>>buildPackageXml')
print(packagexml)
工具 API
ApexClass、Trigger、ApexComponent、ApexPage:创建、更新、删除、获取
tooling_api = ToolingApi(username=username,
password=password,
security_token='',
sandbox=True,
version='40.0'
)
"""createApexClass"""
name = "HelloWorld"
body = """public class HelloWorld {
private String hee;
}"""
status_code, result = tooling_api.createApexClass(name, body)
print(status_code)
print(result)
"""getApexClass"""
"""deleteApexClass"""
id="01pxxxxx"
status_code, result = tooling_api.deleteApexClass(id)
print(status_code)
print(result)
"""updateApexClass"""
body = """public class HelloWorld3 {
private String hee4;
}"""
print(tooling_api.updateApexClass("01p5D000000FXc5", body))
"""createTrigger"""
tooling_api.createTrigger(tableEnumOrId, name, body)
"""createApexComponent"""
tooling_api.createApexComponent(MasterLabel, name, markup)
"""createApexPage"""
tooling_api.createApexPage(MasterLabel, name, markup)
"""run test class"""
id_list = ['xxx', 'xxxx']
tooling_api.runTestSynchronous(id_list)
"""get apex log"""
log_id = ''
tooling_api.getLog(log_id)
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
SalesforcexytoolsCore-2.1.tar.gz
(33.2 kB
查看哈希)