2016-11-02 1 views
2

Я пытаюсь получить отчет от AdExchange Seller API. Я использую максимально допустимое количество измерений и показателей, поэтому отчеты довольно большие (> 100 000 строк). Согласно documentation on large reports это возможно с использованием функции ограничения предела, добавив параметр alt=media. Но я не могу понять, как добавить этот параметр, используя Google API client for PHP. Я бы предпочел придерживаться официальных библиотек Google, но я открыт для предложений.Добавить параметр `alt` при создании отчетов от API-интерфейса продавца AdExchange

Примечание: добавление alt=csv или alt=media к optParams не работает, и я могу легко получить доступ к данным, если удалю некоторые из измерений и показателей.

Более конкретно, я использую ресурс accounts_reports, а затем метод generate. Если посмотреть на исходный код (показано ниже), я не вижу нигде, что он сможет принять параметр alt, но я, очевидно, что-то пропустил.

$this->accounts_reports = new Google_Service_AdExchangeSeller_Resource_AccountsReports(
     $this, 
     $this->serviceName, 
     'reports', 
     array(
      'methods' => array(
      'generate' => array(
       'path' => 'accounts/{accountId}/reports', 
       'httpMethod' => 'GET', 
       'parameters' => array(
       'accountId' => array(
        'location' => 'path', 
        'type' => 'string', 
        'required' => true, 
       ), 
       'startDate' => array(
        'location' => 'query', 
        'type' => 'string', 
        'required' => true, 
       ), 
       'endDate' => array(
        'location' => 'query', 
        'type' => 'string', 
        'required' => true, 
       ), 
       'dimension' => array(
        'location' => 'query', 
        'type' => 'string', 
        'repeated' => true, 
       ), 
       'filter' => array(
        'location' => 'query', 
        'type' => 'string', 
        'repeated' => true, 
       ), 
       'locale' => array(
        'location' => 'query', 
        'type' => 'string', 
       ), 
       'maxResults' => array(
        'location' => 'query', 
        'type' => 'integer', 
       ), 
       'metric' => array(
        'location' => 'query', 
        'type' => 'string', 
        'repeated' => true, 
       ), 
       'sort' => array(
        'location' => 'query', 
        'type' => 'string', 
        'repeated' => true, 
       ), 
       'startIndex' => array(
        'location' => 'query', 
        'type' => 'integer', 
       ), 
      ), 
      ), 
     ) 
     ) 
    ); 

Копаем дальше я нашел это заявление в Google_Service_AdExchangeSeller_Resource_AccountsReports классе.

Сгенерировать отчет Ad Exchange на основе запроса отчета, отправленного в запросе параметров. Возвращает результат как JSON; для получения вывода в формате CSV в качестве параметра запроса укажите «alt = csv». (reports.generate)

Но как именно это будет работать? Насколько я могу судить, это не так.

ответ

2

Не совсем ответ, но чтобы прокомментировать.

Я не думаю, что вы получите это, чтобы работать с клиентской библиотекой. Библиотеки клиентов генерируются через API служб Discovery. Это дает информацию о том, какие параметры использует API. По какой-то причине этот alt=csv не зарегистрирован в службах обнаружения для этого API. Его там в описании, но его не зарегистрировано в качестве параметра. Поэтому сама клиентская библиотека не собирается ее создавать.

Вы можете увидеть ответ я смотрю на here

Идея будет внести изменения в библиотеку клиента самостоятельно у вас есть код. Хотя изменение клиентских библиотек вручную не является идеальным, это выполнимо. Попробуйте добавить alt и придать ему значение CSV.

У меня недостаточно опыта работы с внутренней библиотекой клиентской библиотеки PHP, но вы можете разместить ее как issue на своем форуме. Упомяните, что не в открытии они могут иметь более простой способ применения случайного параметра к строке запроса. Я сомневаюсь, но это стоит того.

+1

Спасибо за ответ! Я рад, что кто-то может подтвердить мое здравомыслие. Я действительно пытался изменить код клиентской библиотеки, но я не тратил слишком много времени на попытки. Я могу попробовать снова в ближайшее время.Однако я понял, что добавление параметра alt = media фактически вернет файл csv gzipped, как указано в документации. Поэтому я буду использовать это решение на данный момент. Спасибо за ответ. Я буду отмечать, что ты прав. –

1

Это должно быть возможно с клиентской библиотекой PHP. В следующем примере показано, как сделать это с Drive API:

$fileId = '0BwwA4oUTeiV1UVNwOHItT0xfa2M'; 
$content = $driveService->files->get($fileId, array(
    'alt' => 'media')); 

https://developers.google.com/drive/v3/web/manage-downloads#examples

+0

Привет! Правда, должно. Но добавление параметра 'alt = media' действительно работает. И делать то же самое с csv не так далеко, насколько я могу судить. –

Смежные вопросы