Hello again, I have a problem with getting fields on Criteria Performance Report. Here's my code:
public static CriteriaPerformance CriteriaPerformance(string keyword)
{
var user = new AdWordsUser();
var criteria = new CriteriaPerformance();
var report = new ReportDefinition
{
reportName = string.Format(@"Criteria performance report"),
reportType = ReportDefinitionReportType.CRITERIA_PERFORMANCE_REPORT,
dateRangeType = ReportDefinitionDateRangeType.ALL_TIME,
downloadFormat = DownloadFormat.XML,
includeZeroImpressions = false,
selector = new Selector()
{
dateRange = new DateRange { min = DateTime.UtcNow.AddDays(-21).ToString("yyyyMMdd"), max = DateTime.UtcNow.ToString("yyyyMMdd") },
fields = new[] { "Cost", "Conversions", "ConversionRate", "AverageCost", "Impressions" ,"Clicks" },
predicates = new[]
{
Predicate.Equals("Criteria", keyword)
}
}
};
var utilities = new ReportUtilities(user, "v201506", report);
try
{
using (var response = utilities.GetResponse())
{
using (var reader = new StreamReader(response.Stream))
{
var result = reader.ReadToEnd();
var doc = new XmlDocument();
doc.LoadXml(result);
criteria.Impressions = Convert.ToInt64(doc.SelectSingleNode("/report/table/row/@impressions").Value);
criteria.Cost = Convert.ToDecimal(doc.SelectSingleNode("/report/table/row/@cost").Value) / 1000000m;
criteria.Clicks = Convert.ToInt64(doc.SelectSingleNode("/report/table/row/@clicks").Value);
criteria.Conversion = Convert.ToDouble(doc.SelectSingleNode("/report/table/row/@conversions").Value);
criteria.ConversionRate = Convert.ToDouble(doc.SelectSingleNode("/report/table/row/@convRate").Value);
criteria.AverageCost = Convert.ToDecimal(doc.SelectSingleNode("/report/table/row/@avgCost").Value) / 1000000m;
}
}
}
catch (Exception exception)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine(exception.Message);
Console.ResetColor();
}
return criteria;
}
ReportDefinitionError.INVALID_FIELD_NAME_FOR_REPORT, Trigger: , FieldPath: Conversions