Bing Ads Java API BudgetSamaryReportRequest示例代码

Bing Ads Java API BudgetSamaryReportRequest示例代码,java,bing-ads-api,Java,Bing Ads Api,我试图从Bing Ads文档中运行basic,并通过更改getReportRequest()方法修改了示例代码以下载其他几种报告类型 我正在努力解决的一种报告类型是预算摘要报告 我创建的报告请求如下所示: private static ReportRequest getBudgetSummaryReportRequest(){ BudgetSummaryReportRequest report = new BudgetSummaryReportRequest();

我试图从Bing Ads文档中运行basic,并通过更改
getReportRequest()
方法修改了示例代码以下载其他几种报告类型

我正在努力解决的一种报告类型是预算摘要报告

我创建的报告请求如下所示:

private static ReportRequest getBudgetSummaryReportRequest(){
        BudgetSummaryReportRequest report = new BudgetSummaryReportRequest();

        report.setFormat(ReportFormat.CSV);
        report.setReportName("My Budget Summary Report");
        report.setReturnOnlyCompleteData(false);

        ArrayOflong accountIds = new ArrayOflong();
        accountIds.getLongs().add(authorizationData.getAccountId());


        report.setScope(new AccountThroughCampaignReportScope());
        report.getScope().setAccountIds(accountIds);
        ArrayOfCampaignReportScope c = new ArrayOfCampaignReportScope();
        CampaignReportScope cc = new CampaignReportScope();
        cc.setAccountId(authorizationData.getAccountId());
        cc.setCampaignId(<MY_CAMPAIGN_ID>);
        c.getCampaignReportScopes().add(cc);
        report.getScope().setCampaigns(c);

        report.setTime(new BudgetSummaryReportTime());
         report.getTime().setPredefinedTime(BudgetSummaryReportTimePeriod.TODAY);

        ArrayOfBudgetSummaryReportColumn budgetSummaryReportColumns = new ArrayOfBudgetSummaryReportColumn();
        budgetSummaryReportColumns.getBudgetSummaryReportColumns().add(BudgetSummaryReportColumn.ACCOUNT_ID);
        budgetSummaryReportColumns.getBudgetSummaryReportColumns().add(BudgetSummaryReportColumn.CAMPAIGN_ID);
        budgetSummaryReportColumns.getBudgetSummaryReportColumns().add(BudgetSummaryReportColumn.DATE);
        budgetSummaryReportColumns.getBudgetSummaryReportColumns().add(BudgetSummaryReportColumn.CURRENCY_CODE);
        budgetSummaryReportColumns.getBudgetSummaryReportColumns().add(BudgetSummaryReportColumn.MONTHLY_BUDGET);
        budgetSummaryReportColumns.getBudgetSummaryReportColumns().add(BudgetSummaryReportColumn.MONTH_TO_DATE_SPEND);
        budgetSummaryReportColumns.getBudgetSummaryReportColumns().add(BudgetSummaryReportColumn.DAILY_SPEND);

        return report;
    }
对于其他报告类型,此错误通常意味着我忘记设置一些必需的参数(例如范围)。我只是不知道。如何调试此问题(例如,检查错误消息中提到的“SOAP数据”)

是否有人有预算汇总报告下载的工作示例


编辑:下面Eric Urban的答案解决了我的问题。每个报告请求类型都有一些列需要手动指定并添加到ReportRequest对象。

几个更新应该可以解决这个问题。首先,您需要添加缺少的必需列。核心服务参考指南中记录了每个值集所需的列,例如,请参见。其次,需要将columns数组添加到报告请求中

budgetSummaryReportColumns.getBudgetSummaryReportColumns().add(BudgetSummaryReportColumn.ACCOUNT_NAME);
budgetSummaryReportColumns.getBudgetSummaryReportColumns().add(BudgetSummaryReportColumn.ACCOUNT_NUMBER);
budgetSummaryReportColumns.getBudgetSummaryReportColumns().add(BudgetSummaryReportColumn.CAMPAIGN_NAME);
report.setColumns(budgetSummaryReportColumns);
有关如何捕获SOAP请求和响应的更多信息,请参阅。例如,我目前正在使用Spring框架和ApacheCXF


我希望这有帮助

谢谢,我没有意识到我必须手动包含所需的列。尽管如此,添加列并没有解决问题,我仍然得到相同的错误。我将尝试捕获SOAP流量,但我真的不知道我应该从中得到什么…我发现我添加的列数组毕竟是错误的。。。再次感谢您,对于这个问题有点情绪化表示抱歉。很高兴听到问题得到解决!这是一个很好的反馈,我们将再次了解如何使SDK更易于使用,以及如何使故障排除指南更易于发现。如果您有任何后续问题,请联系我们。好的,在上面的代码中,我使用了10行代码,其中我创建和/或使用了5种不同的对象类型,并进行了17次单独的方法或构造函数调用,只是为了指定我想要的活动。也许我又错过了一些东西,但也许我们可以通过一个setCampaign()调用来实现这一点?
budgetSummaryReportColumns.getBudgetSummaryReportColumns().add(BudgetSummaryReportColumn.ACCOUNT_NAME);
budgetSummaryReportColumns.getBudgetSummaryReportColumns().add(BudgetSummaryReportColumn.ACCOUNT_NUMBER);
budgetSummaryReportColumns.getBudgetSummaryReportColumns().add(BudgetSummaryReportColumn.CAMPAIGN_NAME);
report.setColumns(budgetSummaryReportColumns);