BingAds / BingAds-Python-SDK

Other
116 stars 162 forks source link

webfault: The InnerException message was 'Invalid enum value 'BudgetStatus' cannot be deserialized into type 'Microsoft.AdCenter.Advertiser.Reporting.Api.DataContracts.Enum.ProductPartitionPerformanceReportColumn' #240

Closed menporulporiayalan closed 1 year ago

menporulporiayalan commented 1 year ago

I am trying to submit the submitting Product partition performance report and excluded some of the column base on this documentation. However when I try to submit the request I receiving the error like below.

Server raised fault: 'The formatter threw an exception while trying to deserialize the message: There was an error while trying to deserialize parameter https://bingads.microsoft.com/Reporting/v13:ReportRequest. The InnerException message was 'Invalid enum value 'BudgetStatus' cannot be deserialized into type 'Microsoft.AdCenter.Advertiser.Reporting.Api.DataContracts.Enum.ProductPartitionPerformanceReportColumn'. Ensure that the necessary enum values are present and are marked with EnumMemberAttribute attribute if the type has DataContractAttribute attribute.'. Please see InnerException for more details.'

My code is pretty straight forward

def submit_product_partition_performance_reporting_request(account_id,authorization_data):
    print(account_id)
    reporting_service = init_reporting_service(account_id,authorization_data)
    #print(reporting_service)

    report_request=reporting_service.factory.create('ProductPartitionPerformanceReportRequest')
    report_request.Aggregation='Daily'
    report_request.Format='Csv'
    report_request.ReportName="My Product Partition Performance Report"
    scope=reporting_service.factory.create('AccountThroughAdGroupReportScope')
    scope.AccountIds={'long': [account_id] }
    scope.Campaigns=None
    report_request.Scope=scope  

    #specify daterange here
    report_time = reporting_service.factory.create('ReportTime')
    report_time.PredefinedTime = None
    start_date=reporting_service.factory.create('Date')
    start_date.Day=19
    start_date.Month=3
    start_date.Year=2023
    report_time.CustomDateRangeStart=start_date

    end_date=reporting_service.factory.create('Date')
    end_date.Day=19
    end_date.Month=4
    end_date.Year=2023
    report_time.CustomDateRangeEnd=end_date
    report_time.ReportTimeZone='PacificTimeUSCanadaTijuana'
    report_request.Time = report_time

    #give the fields that we want to sync
    report_columns = reporting_service.factory.create('ArrayOfProductPartitionPerformanceReportColumn')
    #report_columns.CampaignPerformanceReportColumn.append(['TimePeriod','CampaignName','Impressions','Clicks','Spend','AveragePosition'])
    report_columns.ProductPartitionPerformanceReportColumn.append(['AccountName','AccountNumber','AccountId','TimePeriod','CampaignStatus','CampaignName','CampaignId','CurrencyCode','Impressions','Clicks','Ctr','AverageCpc','Spend','Conversions','ConversionRate','CostPerConversion','DeviceType','Assists','Revenue','ReturnOnAdSpend','CostPerAssist','RevenuePerConversion','RevenuePerAssist','TrackingTemplate','CustomParameters','AccountStatus','BudgetStatus','BudgetAssociationStatus','LowQualityGeneralClicks','LowQualitySophisticatedClicks','CampaignLabels','ExactMatchImpressionSharePercent','CustomerId','CustomerName','FinalUrlSuffix','CampaignType','TopImpressionShareLostToRankPercent','TopImpressionShareLostToBudgetPercent','AbsoluteTopImpressionShareLostToRankPercent','AbsoluteTopImpressionShareLostToBudgetPercent','TopImpressionSharePercent','AbsoluteTopImpressionRatePercent','TopImpressionRatePercent','BaseCampaignId','AllConversions','AllRevenue','AllConversionRate','AllCostPerConversion','AllReturnOnAdSpend','AllRevenuePerConversion','ViewThroughConversions','AudienceImpressionSharePercent','AudienceImpressionLostToRankPercent','AudienceImpressionLostToBudgetPercent','RelativeCtr','AverageCpm','ConversionsQualified','LowQualityConversionsQualified','AllConversionsQualified','ViewThroughConversionsQualified','ViewThroughRevenue','VideoViews','ViewThroughRate','AverageCPV','VideoViewsAt25Percent','VideoViewsAt50Percent','VideoViewsAt75Percent','CompletedVideoViews','VideoCompletionRate','TotalWatchTimeInMS','AverageWatchTimePerVideoView','AverageWatchTimePerImpression'])
    report_request.Columns = report_columns

    #Submit the report request
    response = reporting_service.SubmitGenerateReport(report_request)
    print(f'Report Request reponse: {response}'

Can you help me with this, please?

qitia commented 1 year ago

hi @menporulporiayalan in your code you try below

report_columns.ProductPartitionPerformanceReportColumn.append([...,'BudgetStatus',...])

but if you look into doc: https://learn.microsoft.com/en-us/advertising/reporting-service/productpartitionperformancereportcolumn?view=bingads-13 , there is no BudgetStatus defined. Can you remove that 'column' and try again?

In fact, BudgetStatus is column of CampaignPerformanceReport.