AdWords API: список клиентов для не аккаунта MCC - PullRequest
0 голосов
/ 30 марта 2012

Я хочу получить список клиентов AdWords, назначенных для аутентифицированного аккаунта (я использую OAuth).

Первой попыткой было использовать ServicedAccountService и этот XML-запрос

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <soap:Header>
    <RequestHeader xmlns="https://adwords.google.com/api/adwords/mcm/v201109">
      <developerToken xmlns="https://adwords.google.com/api/adwords/mcm/v201109">[[DEV_TOKEN]]</developerToken>
    </RequestHeader>
  </soap:Header>
  <soap:Body>
    <get xmlns="https://adwords.google.com/api/adwords/mcm/v201109">
      <selector>
        <enablePaging>false</enablePaging>
      </selector>
    </get>
  </soap:Body>
</soap:Envelope>

Но это работает только для учетных записей MCC. Для обычного аккаунта Google я получил пустой набор данных

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header>
    <ResponseHeader xmlns:ns2="https://adwords.google.com/api/adwords/cm/v201109" xmlns="https://adwords.google.com/api/adwords/mcm/v201109">
      <ns2:requestId>0004bc71cee633d00aecb0aa000060ca</ns2:requestId>
      <ns2:serviceName>ServicedAccountService</ns2:serviceName>
      <ns2:methodName>get</ns2:methodName>
      <ns2:operations>0</ns2:operations>
      <ns2:responseTime>230</ns2:responseTime>
      <ns2:units>0</ns2:units>
    </ResponseHeader>
  </soap:Header>
  <soap:Body>
    <getResponse xmlns="https://adwords.google.com/api/adwords/mcm/v201109" xmlns:ns2="https://adwords.google.com/api/adwords/cm/v201109">
      <rval>
        <accounts>
          <customerId>0</customerId>
          <canManageClients>false</canManageClients>
        </accounts>
      </rval>
    </getResponse>
  </soap:Body>
</soap:Envelope>

Я много гуглил и, наконец, обнаружил , что я могу использовать другой XML (InfoService) для учетных записей MCC и не MCC.

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <soap:Header>
    <RequestHeader xmlns="https://adwords.google.com/api/adwords/info/v201109">
      <developerToken xmlns="https://adwords.google.com/api/adwords/cm/v201109">[[DEV_TOKEN]]</developerToken>
    </RequestHeader>
  </soap:Header>
  <soap:Body>
    <get xmlns="https://adwords.google.com/api/adwords/info/v201109">
      <selector>
        <dateRange>
          <min xmlns="https://adwords.google.com/api/adwords/cm/v201109">[[START_DATE]]</min>
          <max xmlns="https://adwords.google.com/api/adwords/cm/v201109">[[END_DATE]]</max>
        </dateRange>
        <includeSubAccounts>true</includeSubAccounts>
        <apiUsageType>UNIT_COUNT_FOR_CLIENTS</apiUsageType>
      </selector>
    </get>
  </soap:Body>
</soap:Envelope>

Но возвращенные данные неверны - не все учетные записи перечислены. Или данные вообще не возвращаются.

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Header>
        <ResponseHeader xmlns:ns2="https://adwords.google.com/api/adwords/cm/v201109" xmlns="https://adwords.google.com/api/adwords/info/v201109">
            <ns2:requestId>0004bc7121a910e80a97030d000051e7</ns2:requestId>
            <ns2:serviceName>InfoService</ns2:serviceName>
            <ns2:methodName>get</ns2:methodName>
            <ns2:operations>1</ns2:operations>
            <ns2:responseTime>1206</ns2:responseTime>
            <ns2:units>1</ns2:units>
        </ResponseHeader>
    </soap:Header>
    <soap:Body>
        <getResponse xmlns:ns2="https://adwords.google.com/api/adwords/cm/v201109" xmlns="https://adwords.google.com/api/adwords/info/v201109">
            <rval>
                <cost>0</cost>
            </rval>
        </getResponse>
    </soap:Body>
</soap:Envelope>

Есть ли другой способ получить список клиентов для учетной записи AdWords? Большое спасибо.

1 Ответ

1 голос
/ 30 марта 2012

Я также столкнулся с этой проблемой и могу подтвердить, что это неправильное поведение ServicedAccountService; «известная проблема, которая будет решена в будущем» : если вы свяжете свою базовую учетную запись с MCC, то вы можете пройти аутентификацию с базовой учетной записью и использовать ServicedAccountService для получения сведений об учетной записи, но если учетная запись не связана, тогда вы получите эту проблему.

Если вы просто хотите получить идентификатор клиента для учетной записи, вы также можете использовать InfoService , который не подвержен той же проблеме.

...