Я наконец, после дней попытки, нашел способ обновить существующий picklists в 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)
Кажется, я исправил проблему, отредактировав строку 6 из «C: \ Program Files (x86) \ MSBuild \ MSBuildCommunityTasks \ MSBuild.Community.Tasks.Targets»
Первоначально это было:
<MSBuildCommunityTasksPath Condition="'$(MSBuildCommunityTasksPath)' == ''">$(MSBuildExtensionsPath)\MSBuildCommunityTasks</MSBuildCommunityTasksPath>
, и я изменил его на:
<MSBuildCommunityTasksPath Condition="'$(MSBuildCommunityTasksPath)' == ''">$(MSBuildExtensionsPath32)\MSBuildCommunityTasks</MSBuildCommunityTasksPath>
обратите внимание на изменение $ (MSBuildExtensionsPath) на $ (MSBuildExtensionsPath32)
Хотя это, похоже, решило мою проблему на данный момент, я не уверен, почему В первую очередь мне пришлось отредактировать файл MSBuild.Community.Tasks.Targets - я предполагал, что установщик позаботится о том, чтобы файл был правильным. Так что, возможно, редактирование файла MSBuild.Community.Tasks.Targets - не лучшая идея в мире, поэтому будьте осторожны, если решите последовать моему примеру.