ReportDownloadError.INVALID_PARAMETER, Trigger: Missing client information, FieldPath:

91 views
Skip to first unread message

Владимир Шангеев

unread,
Dec 24, 2014, 6:56:16 AM12/24/14
to adwor...@googlegroups.com
1. Настройки:
  <AdWordsApi>
    <add key="UserAgent" value="AdWordsApi"/>
    <add key="DeveloperToken" value="ХХХХХХХХХХХХХ"/>
<add key="ХХХ-ХХХ-ХХХХ"/>
<add key='AuthorizationMethod' value='OAuth2' />
<add key='OAuth2ClientId' value='ХХХХХХХХХХ-ХХХХХХХХХХХХХХХХХХХХХХХ-.apps.googleusercontent.com' />
<add key='OAuth2ClientSecret' value='ХХХХХХХХХХХХХХХХХХХХХ' />
<add key='OAuth2RefreshToken' value='ХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХ' />
  </AdWordsApi>

2. Выполняется:
private void Start_Click(object sender, EventArgs e)
{
AdWordsUser user = new AdWordsUser();
msg.Text = msg.Text + user.Config.OAuth2RefreshToken.ToString() + Environment.NewLine;
//Запрос отчета
try
{
string query = @"SELECT AccountDescriptiveName, CampaignName, Clicks FROM CAMPAIGN_PERFORMANCE_REPORT WHERE Date = '2014.12.24'";
ReportUtilities utilities = new ReportUtilities(user, "v201409", query,
DownloadFormat.GZIPPED_CSV.ToString());
using (ReportResponse response = utilities.GetResponse())
{
response.Save("D:\\testReport.csv");
}
int a = 0;
}
catch (Exception ex)
{
msg.Text = msg.Text + ex.ToString() + Environment.NewLine;
}
}

 3. ReportUtilities utilities = new ReportUtilities(user, "v201409", query, DownloadFormat.GZIPPED_CSV.ToString());
  Возвращает ошибку:

Error: ReportDownloadError.INVALID_PARAMETER, Trigger: Missing client information, FieldPath: 
 ---> System.Net.WebException: Удаленный сервер возвратил ошибку: (400) Недопустимый запрос.
   в System.Net.HttpWebRequest.GetResponse()
   в Google.Api.Ads.AdWords.Util.Reports.ReportUtilities.DownloadReport(String downloadUrl, String postBody)
   --- Конец трассировки внутреннего стека исключений ---
   в Google.Api.Ads.AdWords.Util.Reports.ReportUtilities.DownloadReport(String downloadUrl, String postBody)
   в Google.Api.Ads.AdWords.Util.Reports.ReportUtilities.GetReport()
   в Google.Api.Ads.Common.Util.Reports.AdsReportUtilities.GetResponse()
   в AdWordsApi.AdWordsApi.Start_Click(Object sender, EventArgs e) в D:\Work\PR\AdWordsApi\AdWordsApi\AdWordsApi.cs:строка 37

В чем ошибка? Где-то должно быть прописано поле FieldPath?

Danial Klimkin

unread,
Dec 25, 2014, 5:42:59 AM12/25/14
to adwor...@googlegroups.com
Владимир, добрый день,


Судя по всему, вы не указываете ClientCustomerId. Нужно указать ID аккаунта, для которого запрашивается отчет.


-Даниил, команда AdWords API.

Владимир Шангеев

unread,
Dec 25, 2014, 5:56:36 AM12/25/14
to adwor...@googlegroups.com
Судя по всему, вы не указываете ClientCustomerId. Нужно указать ID аккаунта, для которого запрашивается отчет.

Извините, пересмотрев настройки обнаружил, что не верно указал <add key="ХХХ-ХХХ-ХХХХ"/>. 
Должно быть 
<add key="ClientCustomerId" value="ХХХ-ХХХ-ХХХХ"/>

Спасибо за ответ. 

USS UNITEDSUPPORTSERVICES

unread,
Dec 25, 2014, 12:22:44 PM12/25/14
to adwor...@googlegroups.com
А где можно получить примеры отчетов, ошибок сейчас нет, но отчет из примеров приходит пустой.

Данные получаю используя главный ClientCustomerId таким запросом, пробовал в скриптах тоже отчет пустой. 
private void Start_Click(object sender, EventArgs e)
{
AdWordsUser user = new AdWordsUser();
msg.Text = msg.Text + user.Config.OAuth2RefreshToken.ToString() + Environment.NewLine;
//Запрос отчета
try
{
string query = @"SELECT CampaignName, Clicks, Impressions, Cost 
FROM   CAMPAIGN_PERFORMANCE_REPORT 
DURING THIS_MONTH";

ReportUtilities utilities = new ReportUtilities(user, "v201409", query,
DownloadFormat.CSV.ToString());

using (ReportResponse response = utilities.GetResponse())
{
response.Save("D:\\testReport.csv");
}
}
catch (Exception ex)
{
msg.Text = msg.Text + ex.ToString() + Environment.NewLine;
}
}

Через интерфейс отчет получаем с данными. Пример приложил.

Почему любой отчет через API или скрипты пустой? 

 

тайм.csv

Danial Klimkin

unread,
Dec 26, 2014, 5:18:53 AM12/26/14
to adwor...@googlegroups.com
Убедитесь, что clientCustomerId который вы отправляете, не является MCC аккаунтом. Отчеты через API доступны только для не-MCC.


-Даниил.

USS UNITEDSUPPORTSERVICES

unread,
Dec 26, 2014, 10:32:34 AM12/26/14
to adwor...@googlegroups.com
Аккаунт Центра клиентов (MCC) представляет собой зонтичный аккаунт Google AdWords с несколькими управляемыми аккаунтами. Да у нас под одним аккаунтом стоятся отчеты по подчиненным аккаунтам.

Что мы можем сделать, чтобы через API строить такие-же отчеты по 21 подчиненному аккаунту. Или для этого прийдется получить API на каждый из подчиненных аккаунтов, в дальнейшем подменять app.config при формировании отчета?

пятница, 26 декабря 2014 г., 13:18:53 UTC+3 пользователь Danial Klimkin написал:

Danial Klimkin

unread,
Dec 29, 2014, 7:34:54 AM12/29/14
to adwor...@googlegroups.com
Да, необходимо сделать раздельный запросы к каждому из под-аккаунтов и объеденить результаты на вашей стороне.

Активный CID можно поменять во время выполнения, без изменения app.config. Как именно, смотрите в документации на библиотеку (зависит от языка).


-Даниил.
Reply all
Reply to author
Forward
0 new messages