我使用adwords api生成报告.
请耐心等待,因为我对此并不太熟悉.
我正在使用api的v201409版本.
我使用getReportFields获取KEYWORD_PERFORMANCE_REPORT的报告列.
然后,我尝试使用这些列的子集下载报告.
对于KEYWORD_PERFORMANCE_REPORT,我收到错误:
Cannot select a combination of Device and
AssistClicks,AssistClicksOverLastClicks,AssistImpressions,AssistImpressionsOverLastClicks,AveragePageviews,AverageTimeOnSite,BounceRate,Bounces,ClickAssistedConversionValue,ClickAssistedConversionValueLong,ClickAssistedConversionValueNonMoney,ClickAssistedConversions,ClickAssistedConversionsOverLastClickConversions,ImpressionAssistedConversionValue,ImpressionAssistedConversionValueLong,ImpressionAssistedConversionValueNonMoney,ImpressionAssistedConversions,ImpressionAssistedConversionsOverLastClickConversions,LastClickConversions,LastClicks,NewVisitors,Pageviews,PercentNewVisitors,VisitDuration,Visits,
Type: ReportDefinitionError.INVALID_FIELD_NAME_FOR_REPORT.
问题是:如何在不经过试错过程的情况下找到一组有效的列组合.是否有任何文档可以帮助我.
我在http://developers.guge.io/adwords/api/docs/appendix/reports中查看了KEYWORD_PERFORMANCE_REPORT的列,并排除了api所说的“不兼容”的列.得到了类似的错误.
谢谢
N.B>如果我使用在线示例中提供的列来尝试此代码,它可以正常工作并下载报告.
代码是:
`
String [] columnNames = {
“ConversionRateManyPerClickSignificance”
“ConversionRateSignificance”
“ViewThroughConversionsSignificance”
“AccountCurrencyCode”
“AccountDescriptiveName”
“AccountTimeZoneId”
“AdGroupId”
“AdGroupName”
“AdGroupStatus”
“AssistImpressions”
“AssistImpressionsOverLastClicks”
“AverageCpc”
“AverageCpm”
“AveragePageviews”
“AveragePosition”
“AverageTimeOnSite”
“BiddingStrategyId”
“BiddingStrategyName”
“BiddingStrategyType”
“CAMPAIGNID”
“CAMPAIGNNAME”
“CampaignStatus”
“ClickAssistedConversionsOverLastClickConversions”
“ClickAssistedConversionValue”
“点击”
“ClickSignificance”
“点击类型”,
“ConversionManyPerClickSignificance”
“兑换率”,
“ConversionRateManyPerClick”
“转化”,
“ConversionSignificance”
“ConversionsManyPerClick”
“ConversionTypeName”
“ConversionValue”
“成本”,
“CostPerConversion”
“CostPerConversionManyPerClick”
“CostPerConversionManyPerClickSignificance”
“CostPerConversionSignificance”
“CostSignificance”
“CpcBid”
“CpcBidSource”
“CpmBid取代”,
“CpmSignificance”
“CriteriaDestinationUrl”
“点击率”,
“CtrSignificance”
“CustomerDescriptiveName”
“CvrSignificance”
“日期”,
“星期几”,
“设备”,
“EXTERNALCUSTOMERID”
“FinalAppUrls”
“FinalMobileUrls”
“FinalUrls”
“有firstPageCpc”
“ID”,
“ImpressionAssistedConversions”
“ImpressionAssistedConversionsOverLastClickConversions”
“ImpressionAssistedConversionValue”
“印象”
“ImpressionSignificance”
“IsNegative”
“KeywordMatchType”
“LabelIds”
“标签”,
“月”,
“MonthOfYear”
“PlacementUrl”
“PositionSignificance”
“PrimaryCompanyName”
“的QualityScore”
“25美分硬币”,
“SearchExactMatchImpressionShare”
“SearchImpressionShare”
“SearchRankLostImpressionShare”
“插槽”,
“TrackingUrlTemplate”
“UrlCustomParameters”
“ValuePerConversion”
“ValuePerConversionManyPerClick”
“位viewThroughConversions”
“周”,
“年”
};
public static void downloadConsolidatedReportFile(String[] columnNames, final ReportDefinitionDateRangeType forDateRange, final ReportDefinitionReportType reportDefinitionReportType, final String to) throws Exception {
com.google.api.ads.adwords.lib.jaxb.v201409.Selector selector = new com.google.api.ads.adwords.lib.jaxb.v201409.Selector();
selector.getFields().addAll(Lists.newArrayList(columnNames));
ReportDefinition reportDefinition = new ReportDefinition();
reportDefinition.setReportName("Report " + reportDefinitionReportType.value() + " for dateRange " + forDateRange.value());
reportDefinition.setDateRangeType(forDateRange);
reportDefinition.setReportType(reportDefinitionReportType);
reportDefinition.setDownloadFormat(DownloadFormat.CSV);
ReportingConfiguration reportingConfiguration = new ReportingConfiguration.Builder()
.skipReportHeader(true)
.skipReportSummary(true)
.build();
session.setReportingConfiguration(reportingConfiguration);
reportDefinition.setSelector(selector);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(to)));
String mccId = session.getClientCustomerId(); //The id from ads.properties file
Collection<Client> clientIds = getClientAccountIds(mccId);
try {
for (Client cl : clientIds) {
BufferedReader reader = null;
String customerId = cl.id;
String name = cl.name;
session.setClientCustomerId(cl.id);
try {
ReportDownloadResponse response =
new ReportDownloader(session).downloadReport(reportDefinition);
if (response == null || response.getHttpStatus() != 200) {
handleError(response);
}
BufferedInputStream bs = new BufferedInputStream(response.getInputStream());
reader = new BufferedReader(new InputStreamReader(bs));
String line = null;
log.info("getting " + reportDefinition.getReportType().value() + " for " + customerId+" "+name);
reader.readLine(); //Skip the first line of column names
while ((line = reader.readLine()) != null) {
bw.write(line + "\n");
}
} catch (DetailedReportDownloadResponseException e) {
log.error("An error was thrown downloading report for Customer id: " + customerId+" "+name, e);
//We have to do this as we have to filter out the mcc id. An exception is thrown by MCC id
if (e.getType().equals("ReportDefinitionError." + ReportDefinitionErrorReason.CUSTOMER_SERVING_TYPE_REPORT_MISMATCH.getValue())) {
continue;
} else {
throw e;
}
} catch (Exception e) {
log.error("An error was thrown downloading report for Customer id: " + customerId+" "+name, e);
throw e;
} finally {
if (reader != null) {
reader.close();
}
}
}
} finally {
if (bw != null) {
bw.flush();
bw.close();
}
}
}
`
您在下面的评论中提到的所有列均未使用.
最佳答案 请查看以下文档.
对于某些字段“提供了与以下字段不兼容”选项.单击该选项以检查不兼容的组合