When we call the api of 'location' and 'geo', we meet the issues of error data and missing data.

231 views
Skip to first unread message

顾云柯

unread,
Jul 26, 2019, 5:42:15 AM7/26/19
to AdWords API and Google Ads API Forum
Hi All,

  Every day we almost spend 10K+ dollar in Google Ads in order to advertise our APPs in the whole world.
  
  In business side, our App operation team want to analysis the advertising effect about the different country current and history performance of every App.
  
  We need make the advertising strategy about which country can offer us high quality users recently.
  
  We know that there are country performance reports of the account cost in the Google Ads backstage, but we want history data in order to analysis the data.
  
  So we decide to get the country performance report and store them in our own database.
  
  We found that the 'Location' and 'Geo' API can realize this idea, but both of them have some issues.
  
  The issue situation is :
  
  1. When we call the 'Location' API, we can almost get all account cost data. 
  
     The cost of every account is almost as same as the report of Google Ads backstage. It only has no more than 1% error rate and we can accept it.
 
We have a location-country dimension table. Through this table, we can transfer the location to country.
 
But, when we drill down the data to location level, we found that a lot of account have the issue situation that the location is '--'. Correct cost and meanless location.
 
Example: We use one account to spend 1K in US and 2K in India and 3K in Japan. When we see the data through 'Location' API, the data maybe is 1k in US and 5K in '--'.

     With this return data, we can not have a view about the advertising performance of country.
 
  2. When we call the 'Geo' API, the country field won't be '--' and the cost of account is correct.
  
     But, a lot of account is missing.
 
If we can have 10 accounts data from 'Location' API, maybe we can only have 3-5 accounts data from 'Geo' API in same time period.
 


  We have no idea about how to solve these problems.Our target is just to get one correct cost report of all account and all country everyday.
  
  
----------------------------------------------------------------------------------------------------------------------------------------------------------

The following is the result date of calling the 2 APIs :

account_id information:
  $mcc = '945-959-2387';
  $account_id = '9929989200';

1. The information from 'location' API
relative parameter :
            $report_type = 'CAMPAIGN_LOCATION_TARGET_REPORT';
            $fields      = array('Impressions', 'Clicks', 'Conversions', 'Cost', 'Date', 'ExternalCustomerId', 'CampaignId', 'Id');
            $report_name = 'adwords_location_report';

The log from 'location' API:
  [2019-07-23 17:40:53] AW_REPORT_DOWNLOADER.INFO: clientCustomerId=9929989200 Teebik (AwApi-PHP, googleads-php-lib/40.0.0, PHP/7.1.7, GuzzleHttp/6.2.1, curl/7.29.0) "POST /api/adwords/reportdownload/v201809 HTTP/1.1" Status: 200   
  bool(true)

The return data from 'location' API

  cat /tmp/adwords_location_report_LAST_30_DAYS.csv 
  Impressions,Clicks,Conversions,Cost,Day,Customer ID,Campaign ID,Location
  1,1,0.00,170000,2019-07-09,9929989200,2038668410, --
  1,1,0.00,50000,2019-06-29,9929989200,2038668902, --
  1,0,0.00,0,2019-07-03,9929989200,2038668902, --
  1,0,0.00,0,2019-07-01,9929989200,2038668410, --
  1,0,0.00,0,2019-07-10,9929989200,2038668902, --
  2,0,0.00,0,2019-07-09,9929989200,2039512296, --
  1,0,0.00,0,2019-06-26,9929989200,2038668410, --
  1,0,0.00,0,2019-07-15,9929989200,2038668902, --


2. The information from 'geo' API

relative parameter :
      $report_type = 'GEO_PERFORMANCE_REPORT';
            $fields      = array('Impressions', 'Clicks', 'Conversions', 'Cost', 'Date', 'ExternalCustomerId', 'CountryCriteriaId');
            $report_name = 'adwords_geo_report';


The return data from 'geo' API
  head  /tmp/adwords_geo_report_LAST_30_DAYS.csv 
  Impressions,Clicks,Conversions,Cost,Day,Customer ID,Country/Territory
  1,0,0.00,0,2019-07-20,9929989200,2462
  3,0,0.00,0,2019-07-16,9929989200,2462
  1,0,0.00,0,2019-07-03,9929989200,2462
  4,0,0.00,0,2019-07-12,9929989200,2462
  1,0,0.00,0,2019-07-04,9929989200,2554
  2,0,0.00,0,2019-07-14,9929989200,2462
  1,0,0.00,0,2019-06-27,9929989200,2462
  1,0,0.00,0,2019-07-11,9929989200,2462
  2,0,0.00,0,2019-06-28,9929989200,2462

---------------------------------------------------------------------------------------------------------------------------  

The following is our PHP code.


//$mcc = '945-959-2387';
$mccConfigPath = "/tmp/adsapi_php.ini";
$customerId = '9929989200';
$date_range_type = 'LAST_30_DAYS';
$report_type = 'geo';

downloadReport($mccConfigPath, $customerId, $date_range_type, $report_type));

    
    public function downloadReport($mccConfigPath, $customerId, $date_range_type, $report_type)
    {
        if ($report_type == 'geo') {
            $report_type = 'GEO_PERFORMANCE_REPORT';
            $fields      = array('Impressions', 'Clicks', 'Conversions', 'Cost', 'Date', 'ExternalCustomerId', 'CountryCriteriaId','CampaignId');
            $report_name = 'adwords_geo_report';
            $file_path   = '/tmp/adwords_geo_report_' . $date_range_type . '.csv';
        }  elseif ($report_type == 'location') {

            // Id = location
            $report_type = 'CAMPAIGN_LOCATION_TARGET_REPORT';
            $fields      = array('Impressions', 'Clicks', 'Conversions', 'Cost', 'Date', 'ExternalCustomerId', 'CampaignId', 'Id');
            $report_name = 'adwords_location_report';
            $file_path   = '/tmp/adwords_location_report_' . $date_range_type . '.csv';
        } else {
            $report_type = 'ACCOUNT_PERFORMANCE_REPORT';
            $fields      = array('Impressions', 'Clicks', 'Conversions', 'Cost', 'Date', 'ExternalCustomerId');
            $report_name = 'adwords_account_report';
            $file_path   = '/tmp/adwords_account_report_' . $date_range_type . '.csv';
        }

        return $this->downloadCriteriaReport($mccConfigPath, $customerId, $report_type, $fields, $report_name, $date_range_type, 'CSV', $file_path, FALSE, TRUE, TRUE);
    }



    
    
    public function downloadCriteriaReport($mccConfigPath, $customerId, $reportType, $fields, $reportName, $dateRangeType, $downloadFormat, $filePath, $includeZeroImpressions = FALSE, $skipReportHeader = FALSE, $skipReportSummary = FALSE)
    {
        $filterErrMessage = array(
            "503 Service Unavailable",
            "500 Internal Server Error",
            "502 Bad Gateway",
            "Temporary problem with the server. Please retry the request after a few moments",
            "AuthorizationError.CUSTOMER_NOT_ACTIVE",  // https://ads-developers.googleblog.com/2018/03/changes-to-inactive-adwords-accounts.html
            "looks like we got no XML document",  // https://stackoverflow.com/questions/4313952/soap-looks-like-we-got-no-xml-document
        );

        try {
            // Construct an API session for the client customer ID specified in the
            // configuration file.
            /** @var AdWordsSessionBuilder $sessionBuilder */
            $sessionBuilder = F::$f->Helper_AdwordsSession->getMccSessionBuilder($mccConfigPath);

            // Create selector.
            $selector = new Selector();
            $selector->setFields($fields);

            // Create report definition.
            $reportDefinition = new ReportDefinition();
            $reportDefinition->setSelector($selector);
            $reportDefinition->setReportName($reportName);
            $reportDefinition->setDateRangeType($dateRangeType);
            $reportDefinition->setReportType($reportType);
            $reportDefinition->setDownloadFormat($downloadFormat);

            // Construct an API session for the specified client customer ID.
            $customerSession = $sessionBuilder->withClientCustomerId($customerId)->build();
            $reportDownloader = new ReportDownloader($customerSession);

            $retryCount = 0;
            $doContinue = true;
            do {
                $retryCount++;
                try {
                    // Optional: If you need to adjust report settings just for this one
                    // request, you can create and supply the settings override here.
                    // Otherwise, default values from the configuration file
                    // (adsapi_php.ini) are used.
                    $reportSettingsOverride = (new ReportSettingsBuilder())->includeZeroImpressions($includeZeroImpressions)->skipReportSummary($skipReportSummary)->skipReportHeader($skipReportHeader)->build();
                    $reportDownloadResult = $reportDownloader->downloadReport($reportDefinition, $reportSettingsOverride);
                    $reportDownloadResult->saveToFile($filePath);
                    $doContinue = false;
                } catch (ApiException $e) {
                    // echo 'error with download report, retry. error message:' . $e->getMessage() . PHP_EOL;
                    log_message('error with download report, retry. error message:' . $e->getMessage(), LOG_ERR);

                    // If this is a server error, retry up to the defined maximum number
                    // of retries.
                    if ($e->getErrors() === null && $retryCount < self::MAX_RETRIES) {
//                        F::$f->Helper_Monitor->addCacheLog('API warning with download report, warning message:' . $e->getMessage());
                        log_message('warning with download report, retry. error message:' . $e->getMessage(), LOG_ERR);
                        $sleepTime = $retryCount * self::BACKOFF_FACTOR;
                        sleep($sleepTime);
                    } else {
                        $errMessage = $e->getMessage();
                        // If the error message include the following information, Skip

                        $isSkip = false;
                        foreach($filterErrMessage as $temp) {
                            if (stripos($errMessage, $temp) !== false) {
                                $isSkip = true;
                                break;
                            }
                        }

                        if (!$isSkip) {
                            F::$f->Helper_Monitor->addCacheLog('API error with download report, error message: ' . $e->getMessage());
                        }
                        log_message('error with download report, exit. error message:' . $e->getMessage(), LOG_ERR);
                        return false;
                    }
                }
            } while ($doContinue === true);
        } catch (Exception $e) {
            echo 'error with download report, retry. error message:' . $e->getMessage() . PHP_EOL;
            F::$f->Helper_Monitor->addCacheLog('API error with download report, error message:' . $e->getMessage());
            log_message('error with download report,customerId:'.$customerId.'. error message:' . $e->getMessage(), LOG_ERR);
            return FALSE;
        }
        return TRUE;
    }


<?php
use Google\AdsApi\AdWords\AdWordsSessionBuilder;
use Google\AdsApi\Common\OAuth2TokenBuilder;

/**
 * Date: 2016/3/15
 * Time: 12:36
 */
class Helper_AdwordsSession
{
    /**
     * @param $mccConfigPath
     * @return AdWordsSessionBuilder
     */
    public function getMccSessionBuilder($mccConfigPath)
    {
        // Generate a refreshable OAuth2 credential for authentication.
        $oAuth2Credential = (new OAuth2TokenBuilder())->fromFile($mccConfigPath)->build();
        // See: AdWordsSessionBuilder for setting a client customer ID that is
        // different from that specified in your adsapi_php.ini file.
        $sessionBuilder = (new AdWordsSessionBuilder())->fromFile($mccConfigPath)->withOAuth2Credential($oAuth2Credential);

        return $sessionBuilder;
    }
  
  
  Looking forward for your help.
  
  Best regards.

Google Ads API Forum Advisor Prod

unread,
Jul 26, 2019, 10:09:43 AM7/26/19
to adwor...@googlegroups.com
Hi,

Thank you for reaching out. Allow me to provide support for your concern.

Firstly, if you come across a cell with two dashes under the location column, it means that the location was not triggered for this particular campaign. This would also mean that this will not be returned in the UI. If the API results show rows with the two dashes, these rows will not appear in the UI and will also not be calculated in the Total results. You can refer to the mapping guide under "Campaign Location Target Report" to check the equivalent report of the Campaign Location Target Report in the UI. 

As for the issue with Geo Performance Report, this report does not support Universal App Campaigns. Could you confirm if some of your accounts only contain UAC data? If yes, this could be the reason on maybe some of your accounts do no generate report data.

We also do not recommend to compare different reports as each report is generated on a different level.

Let me know if you have further clarifications.
 
Regards,
Dannison
Google Ads API Team

ref:_00D1U1174p._5001UEGTFN:ref

ggg freak

unread,
Aug 1, 2019, 11:42:24 PM8/1/19
to AdWords API and Google Ads API Forum

Hello, I use the code example provided on the google website, the following account
$ mcc = '945-959-2387';
$ account_id = '5911335188';

Cannot get GEO_PERFORMANCE_REPORT similar report data
Here is the relevant code:


<?php
/**
 * Copyright 2017 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

namespace Google\AdsApi\Examples\AdWords\v201809\Reporting;

// require __DIR__ . '/../../../../vendor/autoload.php';
require __DIR__ . '/../../../../../../autoload.php';

use Google\AdsApi\AdWords\AdWordsSession;
use Google\AdsApi\AdWords\AdWordsSessionBuilder;
use Google\AdsApi\AdWords\Reporting\v201809\DownloadFormat;
use Google\AdsApi\AdWords\Reporting\v201809\ReportDefinition;
use Google\AdsApi\AdWords\Reporting\v201809\ReportDefinitionDateRangeType;
use Google\AdsApi\AdWords\Reporting\v201809\ReportDownloader;
use Google\AdsApi\AdWords\ReportSettingsBuilder;
use Google\AdsApi\AdWords\v201809\cm\Predicate;
use Google\AdsApi\AdWords\v201809\cm\PredicateOperator;
use Google\AdsApi\AdWords\v201809\cm\ReportDefinitionReportType;
use Google\AdsApi\AdWords\v201809\cm\Selector;
use Google\AdsApi\Common\OAuth2TokenBuilder;

/**
 * Downloads CRITERIA_PERFORMANCE_REPORT for the specified client customer ID.
 */
class DownloadGeoPerformanceReportWithSelector
{

    public static function runExample(AdWordsSession $session, $filePath)
    {
        // Create selector.
        $selector = new Selector();

 
        $selector->setFields(
            ['Impressions', 'Clicks', 'Conversions', 'Cost', 'Date', 'ExternalCustomerId', 'CountryCriteriaId','CampaignId']
        );

/*         
        $selector->setFields(
            [
                'CampaignId',
                'AdGroupId',
                'Id',
                'Criteria',
                'CriteriaType',
                'Impressions',
                'Clicks',
                'Cost'
            ]
        );
*/
        // Use a predicate to filter out paused criteria (this is optional).
/*        
        $selector->setPredicates(
            [
                new Predicate('Status', PredicateOperator::NOT_IN, ['PAUSED'])
            ]
        );
*/
        // Create report definition.
        $reportDefinition = new ReportDefinition();
        $reportDefinition->setSelector($selector);
        $reportDefinition->setReportName(
            'Geo Performance Report #' . uniqid()
        );
        $reportDefinition->setDateRangeType(
            ReportDefinitionDateRangeType::LAST_7_DAYS
        );
        $reportDefinition->setReportType(
            ReportDefinitionReportType::GEO_PERFORMANCE_REPORT
        );
        $reportDefinition->setDownloadFormat(DownloadFormat::CSV);

        // Download report.
        $reportDownloader = new ReportDownloader($session);
        // Optional: If you need to adjust report settings just for this one
        // request, you can create and supply the settings override here. Otherwise,
        // default values from the configuration file (adsapi_php.ini) are used.
        $reportSettingsOverride = (new ReportSettingsBuilder())->includeZeroImpressions(false)->build();
        $reportDownloadResult = $reportDownloader->downloadReport(
            $reportDefinition,
            $reportSettingsOverride
        );
        $reportDownloadResult->saveToFile($filePath);
        printf(
            "Report with name '%s' was downloaded to '%s'.\n",
            $reportDefinition->getReportName(),
            $filePath
        );
    }

    public static function main()
    {

// $mcc = '237-147-9138';
// $account_id = '9901274003';

// 测试 geo 类别取不到数据问题 
// 该账号在 adwords_tracking_country 表里找不到成本数据
$mcc = '945-959-2387';
$account_id = '5911335188';  // geo 没数据  ,location 有数据  


$mccConfigPath = dirname(__FILE__) . '/adwauth.' . $mcc . '.ini';


        // Generate a refreshable OAuth2 credential for authentication.
        $oAuth2Credential = (new OAuth2TokenBuilder())->fromFile($mccConfigPath)->build();

        // See: AdWordsSessionBuilder for setting a client customer ID that is
        // different from that specified in your adsapi_php.ini file.
        // Construct an API session configured from a properties file and the
        // OAuth2 credentials above.
        $session = (new AdWordsSessionBuilder())->fromFile($mccConfigPath)->withOAuth2Credential($oAuth2Credential)->withClientCustomerId($account_id)->build();


        $filePath = sprintf(
            '%s.csv',
            tempnam(sys_get_temp_dir(), 'geo-performance-report-')
        );
        self::runExample($session, $filePath);
    }
}

DownloadGeoPerformanceReportWithSelector::main();



However, I can find the account_id = '5911335188' report data for this account on the https://ads.google.com/aw/reporting/reporteditor/ website.
What is the reason. 

Note: The same code, I can change the interface to get the $ account_id = '9929989200'; report data.




在 2019年7月26日星期五 UTC+8下午6:09:43,adsapiforumadvisor写道:

Google Ads API Forum Advisor Prod

unread,
Aug 2, 2019, 3:06:16 AM8/2/19
to adwor...@googlegroups.com
Hi,

Upon checking the accounts you provided, the reason why the account 5911335188 is not getting data from Geo Performance Report is because this report type does not support UAC. You can refer to this guide for the list of report types that support UAC. You can use Campaign Location Target Report instead for retrieving location criteria statistics that you are actively targeting in your campaigns.

ggg freak

unread,
Aug 2, 2019, 2:22:46 PM8/2/19
to adwor...@googlegroups.com
Thanks
 I tried it the way you said.,  the data can be retrieved using the Campaign Location Target Report,

The following is another question.  my colleagues  have asked the above post, you also answered,,but I still don’t quite understand.
 
Here is another account information:

$mcc = '945-959-XXXX';
$account_id = '9929XXXXXX';
Campaign ID: 2039XXXXX
Campaign Name: XXXXXXXXX

I can use the following menu in the https://ads.google.com/aw/reporting/reporteditor/view
 background via the menu REPORTS->Predefined reports(Dimensions)->Locations->User locations

1.png



You can see the cost report data by country and Location 


<Screenshot removed>



However, by calling the php SDK code provided by the official website of goolge, the location information in the data obtained by the CAMPAIGN_LOCATION_TARGET_REPORT type is "--"

<Screenshot removed>

I don't quite understand why I can see the data in different regions on the google background report, but I can't get it through the SDK interface. What is the reason for helping me?

The following is my php code,Thank you!


class DownloadCampaignLocationTargetReportWithSelector
{

    public static function runExample(AdWordsSession $session, $filePath)
    {
        // Create selector.
        $selector = new Selector();

 
        $selector->setFields(
            ['Impressions', 'Clicks', 'Conversions', 'Cost', 'Date', 'ExternalCustomerId', 'CampaignId', 'Id']
        );

/*         
        $selector->setFields(
            [
                'CampaignId',
                'AdGroupId',
                'Id',
                'Criteria',
                'CriteriaType',
                'Impressions',
                'Clicks',
                'Cost'
            ]
        );
*/
        // Use a predicate to filter out paused criteria (this is optional).
/*        
        $selector->setPredicates(
            [
                new Predicate('Status', PredicateOperator::NOT_IN, ['PAUSED'])
            ]
        );
*/
        // Create report definition.
        $reportDefinition = new ReportDefinition();
        $reportDefinition->setSelector($selector);
        $reportDefinition->setReportName(
            'Campaign Location Target Report #' . uniqid()
        );
        $reportDefinition->setDateRangeType(
            ReportDefinitionDateRangeType::LAST_7_DAYS
        );
        $reportDefinition->setReportType(
            ReportDefinitionReportType::CAMPAIGN_LOCATION_TARGET_REPORT
        );
        $reportDefinition->setDownloadFormat(DownloadFormat::CSV);

        // Download report.
        $reportDownloader = new ReportDownloader($session);
        // Optional: If you need to adjust report settings just for this one
        // request, you can create and supply the settings override here. Otherwise,
        // default values from the configuration file (adsapi_php.ini) are used.
        $reportSettingsOverride = (new ReportSettingsBuilder())->includeZeroImpressions(false)->build();
        $reportDownloadResult = $reportDownloader->downloadReport(
            $reportDefinition,
            $reportSettingsOverride
        );
        $reportDownloadResult->saveToFile($filePath);
        printf(
            "Report with name '%s' was downloaded to '%s'.\n",
            $reportDefinition->getReportName(),
            $filePath
        );
    }

    public static function main()
    {

// cd lib/vendor/googleads/googleads-php-lib/examples/AdWords/v201809/Reporting/
// php DownloadCampaignLocationTargetReportWithSelector.php
// 到不到 location 信息账号
$mcc = '945-959-2387';
$account_id = '9929989200';

// 该账号在 adwords_tracking_country 表里找不到成本数据

// $mcc = '945-959-2387';
// // $account_id = '5385670407';
// $account_id = '5911335188';  // geo 没数据  ,location 有数据  

$mccConfigPath = dirname(__FILE__) . '/../../../../../../../../scripts/adwords/conf/adwauth.' . $mcc . '.ini';



        // Generate a refreshable OAuth2 credential for authentication.
        $oAuth2Credential = (new OAuth2TokenBuilder())->fromFile($mccConfigPath)->build();

        // See: AdWordsSessionBuilder for setting a client customer ID that is
        // different from that specified in your adsapi_php.ini file.
        // Construct an API session configured from a properties file and the
        // OAuth2 credentials above.
        $session = (new AdWordsSessionBuilder())->fromFile($mccConfigPath)->withOAuth2Credential($oAuth2Credential)->withClientCustomerId($account_id)->build();


        $filePath = sprintf(
            '%s.csv',
            tempnam(sys_get_temp_dir(), 'campaign-location-target-report-')
        );
        self::runExample($session, $filePath);
    }
}

DownloadCampaignLocationTargetReportWithSelector::main();




在 2019年8月2日星期五 UTC+8上午11:06:16,adsapiforumadvisor写道:

Google Ads API Forum Advisor Prod

unread,
Aug 5, 2019, 2:20:43 AM8/5/19
to adwor...@googlegroups.com
Hi,

My apologies as I have removed some of your screenshots and IDs as it contained sensitive information.

Upon checking the screenshots you have provided, the report that you are looking at is not the equivalent of the Campaign Location Target Report. If you wish to see the equivalent report for this in the UI, navigate to the Locations menu on the left, then click the MORE tab on the top bar, finally click User location report. (Refer to screenshot)

You will notice that rows that returned two dashes (--) does not show in this report. This is because no location was triggered for this particular row.


Let me know if you have further clarifications.

Screenshot from 2019-08-05 10-21-34.png

ggg freak

unread,
Aug 5, 2019, 12:56:51 PM8/5/19
to AdWords API and Google Ads API Forum

in web page , at the User location report. I can see the data,
Thank you.

But use the php SDK, we still can't get the data we need.

For example, the following account:
Mcc : 237-147-9138
Account_id : 9893975029

By using the report of type SDK, CAMPAIGN_LOCATION_TARGET_REPORT, the data location obtained is "--"

And with the GEO_PERFORMANCE_REPORT type,  return  nothing .


But I can see the report data on the web page through the Geographic report and User location report.


1.png



How can we use SDK to get  data include different countries ?


在 2019年8月5日星期一 UTC+8上午10:20:43,adsapiforumadvisor写道:

李鑫

unread,
Aug 23, 2019, 7:17:45 AM8/23/19
to AdWords API and Google Ads API Forum
Is there any answer about this qusetion? 
We also encountered this problem .
Did you solve it ?

在 2019年8月5日星期一 UTC+8下午8:56:51,ggg freak写道:

Google Ads API Forum Advisor Prod

unread,
Aug 23, 2019, 10:41:28 AM8/23/19
to adwor...@googlegroups.com
Hi,

I was able to check the account of the previous user and confirmed that this was normal behavior as there were no data generated for the Campaign Location Target Report in the UI as well.

To help me investigate your issue, could you provide the complete report definition and the clientCustomerId you used? Kindly use the reply privately to author option.

李鑫

unread,
Aug 28, 2019, 4:32:07 AM8/28/19
to AdWords API and Google Ads API Forum
I have questions  about the location report similar to above.

details are as follows: 
account_id = 8362278803 
campaign_id = 2050856372 , campaign_name = [TR1PAY]_2785_MS_ZT_1_T2_zchi_20_20190702_0002 
date between 2019-07-14  and 2019-07-18 

This campaign's  location target is all countries and all areas .We want to get the country report .

I know get the country report  the API have two methods .
1、GEO performace report , but this report don't support the UAC campaign ,so we don't use this api .
2、Campaign location target report , we get country report though this api , but this campaign's country we get is "--" .
In Google's AD UI , geo report have nothing ,but user location report have countries  data .
Whether  the  "campaign location target report" api only can get countries data when the campaign have special location target ? If  location target is all countries and all areas the api can't get diffent countries data  except "--"?

11.png











Do I have a way to get diffent countries data when the campaign's(UAC campaign) location target is "all countries and all areas" ?




在 2019年8月23日星期五 UTC+8下午6:41:28,adsapiforumadvisor写道:
Reply all
Reply to author
Forward
Message has been deleted
0 new messages