当前位置: 首页 > 面试题库 >

使用Python更新Salesforce中的自定义选择列表

令狐增
2023-03-14
问题内容

目前,我正在尝试向我们在Salesforce内部使用的自定义选择列表中添加值。目前,经过数天的尝试,我无法创建新的自定义选择列表,如下所示:

url2 = "https://INSTANCE.salesforce.com/services/Soap/m/45.0/ORGID"
headers2 = {'content-type': 'text/xml; charset=utf-8', "SOAPAction":"POST"}

body2 = """<?xml version="1.0" encoding="utf-8" ?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:apex="http://soap.sforce.com/2006/08/apex" 
xmlns:cmd="http://soap.sforce.com/2006/04/metadata" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Header>
      <cmd:SessionHeader>
         <cmd:sessionId>{0}</cmd:sessionId>
      </cmd:SessionHeader>
    </soapenv:Header>
  <soapenv:Body>
      <create xmlns="http://soap.sforce.com/2006/04/metadata">
         <metadata xsi:type="CustomField">
            <fullName>Case.verursacht_durch_MA2__c</fullName>
            <label>verursacht_durch_MA2</label>
            <type>Picklist</type>
            <valueSet>
                <restricted>true</restricted>
                <valueSetDefinition>
                    <sorted>false</sorted>
                    <value>
                        <fullName>ValueTest</fullName>
                        <default>false</default>
                        <label>ValueTest</label>
                    </value>
                </valueSetDefinition>
            </valueSet>
         </metadata>
        </create>
  </soapenv:Body>
</soapenv:Envelope>""".format(sessionId)

response2 = requests.post(url2,data=body2,headers=headers2)

现在,我尝试使用xml更新现有选择列表中的值。但是,当我尝试用更新标记替换create标记时,它告诉我在该位置无效的标记如“ fullName”,“
label”等。

任何帮助将非常感激!


问题答案:

经过数天的尝试,我终于找到了一种更新Salesforce中现有选择列表的方法

使用这个->
https://github.com/gbarger/PySalesforce

import sys, os

sys.path.append(os.path.dirname(os.path.realpath(__file__)) + '/PySalesforce')
import pysalesforce

# IS_PRODUCTION is a bool value
# set it to False when working on sandbox
login = pysalesforce.Authentication.get_oauth_login("USERNAME", "passwordSECRETKEY",
                                                    "CLIENT_ID",
                                                    "CLIENT_SECRET", IS_PRODUCTION)

# Instance Url is inside the login variable, typically you only need to append
# services/Soap/m/38.0/ORGID
# 38.0 is the used api version
metadataUrl = 'METADATA_URL'

# Here im getting the current picklist which is a custom picklist used in our Cases
# The picklist im editing is called verursacht_durch_MA2 and you need to append __c because its a custom field
getPicklist = pysalesforce.Metadata.read_metadata(metadata_type="CustomField", full_names="Case.verursacht_durch_MA2__c",
                                                  session_id=login['access_token'], metadata_url=metadataUrl,
                                                  client_name="Client-Name")

# Here im changing some names inside the existing picklist.
# Values can be added when appending to CustomField['valueSet']['valueSetDefinition']['value']
# Values look like this:
# {'fullName': 'test456',    'color': None,    'default': False,    'description': None,    'isActive': True,    'label': 'test456label'}
CustomField = getPicklist[0]
CustomField['valueSet']['valueSetDefinition']['value'][0]['fullName']="test456"
CustomField['valueSet']['valueSetDefinition']['value'][0]['label']="test456label"
CustomField['valueSet']['valueSetDefinition']['value'][0]['isActive']=True

# Here im updating the picklist, if all_or_none is True it will rollback all changes if any error occurs,
# if its set to False it will keep all already made changes on error
response = pysalesforce.Metadata.update_metadata(metadata_list=[CustomField], client_name="Client-Name", session_id=login['access_token'],
                                             metadata_url=metadataUrl, all_or_none=False)


 类似资料:
  • 我试图将我的程序转换为 GUI。我有 2 个主题类型的自定义数组列表 (b 我可以通过ArrayList b=B.get核心()调用这个自定义数组列表;我如何让这个数组列表在我的Jlist中显示。我也试图将JList类型更改为主题,但没有成功。 如何更新JList以在按钮单击事件中显示每个列表。

  • 我正在JBoss上使用QueryDSL-JPA,希望在某一点上从一个不同的表中选择一个实体,而不是我通常使用并通过@table进行注释的表。我不想创建一个单独的Java类,因为最终,它应该返回给我与我正在使用的相同的类。

  • 我正在尝试使用选择查询更新一个表中的列。 它运行并更新整个列作为(文本字段)。 我尝试仅更新宗教几何与宗地几何相交的行。

  • 这是customListAdapter的代码(在第一个链接之后) 在我的主要活动中,我这样调用自定义基适配器: (不能100%确定是我应该放在那里的id。

  • 我正在使用Postgres 9.3.5,最近将Hibernate从3.2更新到4.3.11。 因此,我无法运行“选择…更新”查询,而只能运行“选择…”。。对于我来说,“for update”是不够的,因为它返回 无法提取结果集。原因:错误:无法将FOR UPDATE应用于外部联接的可空端 我试图使用的标准如下: 我正在使用以下锁定: 在3.2中:标准。设置锁定模式(锁定模式。升级); 在4.3.1

  • 然后,我试图从其他Salesforce和Docusign论坛中拼凑出实现上述3点所需的逻辑,但我无法让它发挥作用。再说一遍,我不是程序员,所以我可能在这里犯了一些非常愚蠢的错误,但我有: 我的Docusign Onboarding成功顾问指出,stackoverflow社区可能会在这方面提供帮助。如果是这样,我将不胜感激。即使有编码经验的人可以告诉我这是一件很难完成的事情,也会有所帮助,这样我就可