Простая загрузка даты Salesforce

#python #json #salesforce #openpyxl #simple-salesforce

Вопрос:

Я пытаюсь загрузить возможность в Salesforce с помощью openpyxl и simplesfoce. Ниже приведена текущая попытка, которую я предпринял, чтобы заставить загрузку работать. Я пробовал это, обычный объект даты excel, объект даты excel в виде строки и объект даты excel в виде строки с отрезанной частью времени.

 ws = wb["Opportunities"] # Gets the Opportunities sheet
recordTypeMap = getRecordTypes(sf, ws, 1, "Opportunity")
insertOpportunities = []
try:
    logInfo("Reading Opportunities")
    for row in ws.iter_rows(min_row=2, values_only=True):
        insertOpportunities.append(
            {'RecordTypeId': recordTypeMap.get(row[0]), 'OwnerId': users.get(row[1]), 'AccountId': accounts.get(row[2]),
            'Name': row[3], 'Type': row[4], 'Budget_Confirmed__c': row[5], 'Discovery_Completed__c': row[6],
            'ROI_Analysis_Completed__c': row[7], 'EEP_Loss_Reason__c': row[8], 'CloseDate': str(datetime.datetime.now(pytz.UTC)), 'StageName': row[10],
            'LeadSource': row[13], 'EEP_Producer_CBU__c': row[14],
            'EEP_Producer_Distribution_Channel__c': row[15], 'EEP_Restricted_Access__c': row[16]})
        logging.info(insertOpportunities)
except Exception as ex:
    logError("Could not read Opportunities", ex)

try:
    logInfo("Creating Opportunities")
    Opportunities = sf.bulk.Lead.insert(insertOpportunities, batch_size=100)
    logInfo("Created Opportunities")
    logging.info(Opportunities)
except Exception as ex:
    logError("Could not create Opportunities", ex)
 

Объекты даты получают сообщение об ошибке, что они не могут быть сериализованы в формате JSON, а все остальные получают следующую ошибку. Приведенная ниже информация-это то, что пытается быть отправлено в Salesforce, а ошибка-это сообщение об ошибке, отправленное обратно.

 INFO: [{'RecordTypeId': '0124W000001lDpAQAU', 'OwnerId': '0056t000000ENvxAAG', 'AccountId': '0016t000002tw3UAAQ', 'Name': 'Test op 1', 'Type': 'Existing Business', 'Budget_Confirmed__c': True, 'Discovery_Completed__c': True, 'ROI_Analysis_Completed__c': True, 'EEP_Loss_Reason__c': None, 'CloseDate': '2021-06-02 14:08:36.995182 00:00', 'StageName': 'Closed Won', 'LeadSource': 'Purchased List', 'EEP_Producer_CBU__c': None, 'EEP_Producer_Distribution_Channel__c': None, 'EEP_Restricted_Access__c': False}]    
ERROR: Malformed request Response content: {'exceptionCode': 'InvalidBatch', 'exceptionMessage': 'Records not processed'}
 

Я взял эти точные данные и вручную предоставил прекрасную возможность, поэтому единственной причиной, по которой я увидел бы ошибку, был бы формат даты.

Комментарии:

1. Дата закрытия-это тип Дата, а не Дата-время. Что ты получаешь от всего этого 2021-06-02 ?

2. @eyescream это был первый формат, который я попробовал, и я получаю ту же ошибку, что и выше. После дальнейших поисков я узнал, что дата не является причиной проблемы, так как я использовал формат, который вы упомянули для DOB на другом объекте, и это сработало. Проблема, вероятно, связана с одним из пользовательских объектов моей организации.

3. Настройка -> Журналы отладки. Добавьте ведение журнала для пользователя, учетные данные которого используются для подключения. Вы должны увидеть некоторые детали сбоя, будь то триггер, правило проверки, поток…

Ответ №1:

Правильные форматы дат, как упоминал eyescream, «2021-06-02». Ошибка здесь была просто связана с неправильным пользовательским полем в одном из этих элементов. Если вы боретесь с такого рода ошибками, попробуйте удалить ненужные поля, чтобы определить, какое из них вызывает ошибку.