Skip to content

Commit

Permalink
Merge pull request #2740 from woocommerce/update/google-ads-api-v18
Browse files Browse the repository at this point in the history
Update Google Ads API  to v18
  • Loading branch information
mikkamp authored Dec 20, 2024
2 parents 9c3514c + 59a6222 commit a6db2da
Show file tree
Hide file tree
Showing 39 changed files with 380 additions and 448 deletions.
2 changes: 1 addition & 1 deletion bin/GoogleAdsCleanupServices.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ class GoogleAdsCleanupServices {
*
* @var string
*/
protected $version = 'V16';
protected $version = 'V18';

/**
* @var Event Composer event.
Expand Down
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@
"Google\\Task\\Composer::cleanup",
"Automattic\\WooCommerce\\GoogleListingsAndAds\\Util\\SymfonyPolyfillCleanup::remove",
"Automattic\\WooCommerce\\GoogleListingsAndAds\\Util\\GoogleAdsCleanupServices::remove",
"composer run-script remove-google-ads-api-version-support -- 14 15 17 18",
"composer run-script remove-google-ads-api-version-support -- 16 17",
"php ./bin/prefix-vendor-namespace.php",
"bash ./bin/cleanup-vendor-files.sh",
"composer dump-autoload"
Expand Down
6 changes: 6 additions & 0 deletions js/src/pages/dashboard/all-programs-table-card/index.scss
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,12 @@
}
}

.components-card-footer {
.woocommerce-pagination {
display: none;
}
}

.program-actions {
display: flex;
justify-content: space-between;
Expand Down
12 changes: 6 additions & 6 deletions src/API/Google/Ads.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,12 @@
use Automattic\WooCommerce\GoogleListingsAndAds\Options\OptionsAwareTrait;
use Automattic\WooCommerce\GoogleListingsAndAds\Options\OptionsInterface;
use Exception;
use Google\Ads\GoogleAds\Util\V16\ResourceNames;
use Google\Ads\GoogleAds\V16\Enums\AccessRoleEnum\AccessRole;
use Google\Ads\GoogleAds\V16\Enums\ProductLinkInvitationStatusEnum\ProductLinkInvitationStatus;
use Google\Ads\GoogleAds\V16\Resources\ProductLinkInvitation;
use Google\Ads\GoogleAds\V16\Services\ListAccessibleCustomersRequest;
use Google\Ads\GoogleAds\V16\Services\UpdateProductLinkInvitationRequest;
use Google\Ads\GoogleAds\Util\V18\ResourceNames;
use Google\Ads\GoogleAds\V18\Enums\AccessRoleEnum\AccessRole;
use Google\Ads\GoogleAds\V18\Enums\ProductLinkInvitationStatusEnum\ProductLinkInvitationStatus;
use Google\Ads\GoogleAds\V18\Resources\ProductLinkInvitation;
use Google\Ads\GoogleAds\V18\Services\ListAccessibleCustomersRequest;
use Google\Ads\GoogleAds\V18\Services\UpdateProductLinkInvitationRequest;
use Google\ApiCore\ApiException;
use Google\ApiCore\ValidationException;

Expand Down
20 changes: 10 additions & 10 deletions src/API/Google/AdsAsset.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,16 @@
use Automattic\WooCommerce\GoogleListingsAndAds\Google\Ads\GoogleAdsClient;
use Automattic\WooCommerce\GoogleListingsAndAds\Options\OptionsAwareTrait;
use Automattic\WooCommerce\GoogleListingsAndAds\Options\OptionsAwareInterface;
use Google\Ads\GoogleAds\V16\Services\GoogleAdsRow;
use Google\Ads\GoogleAds\V16\Enums\AssetTypeEnum\AssetType;
use Google\Ads\GoogleAds\V16\Resources\Asset;
use Google\Ads\GoogleAds\V16\Services\AssetOperation;
use Google\Ads\GoogleAds\V16\Services\MutateGoogleAdsRequest;
use Google\Ads\GoogleAds\V16\Services\MutateOperation;
use Google\Ads\GoogleAds\Util\V16\ResourceNames;
use Google\Ads\GoogleAds\V16\Common\TextAsset;
use Google\Ads\GoogleAds\V16\Common\ImageAsset;
use Google\Ads\GoogleAds\V16\Common\CallToActionAsset;
use Google\Ads\GoogleAds\V18\Services\GoogleAdsRow;
use Google\Ads\GoogleAds\V18\Enums\AssetTypeEnum\AssetType;
use Google\Ads\GoogleAds\V18\Resources\Asset;
use Google\Ads\GoogleAds\V18\Services\AssetOperation;
use Google\Ads\GoogleAds\V18\Services\MutateGoogleAdsRequest;
use Google\Ads\GoogleAds\V18\Services\MutateOperation;
use Google\Ads\GoogleAds\Util\V18\ResourceNames;
use Google\Ads\GoogleAds\V18\Common\TextAsset;
use Google\Ads\GoogleAds\V18\Common\ImageAsset;
use Google\Ads\GoogleAds\V18\Common\CallToActionAsset;
use Automattic\WooCommerce\GoogleListingsAndAds\Proxies\WP;
use Google\ApiCore\ApiException;
use Exception;
Expand Down
34 changes: 15 additions & 19 deletions src/API/Google/AdsAssetGroup.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,18 @@
use Automattic\WooCommerce\GoogleListingsAndAds\Google\Ads\GoogleAdsClient;
use Automattic\WooCommerce\GoogleListingsAndAds\Options\OptionsAwareInterface;
use Automattic\WooCommerce\GoogleListingsAndAds\Options\OptionsAwareTrait;
use Google\Ads\GoogleAds\Util\V16\ResourceNames;
use Google\Ads\GoogleAds\V16\Enums\ListingGroupFilterListingSourceEnum\ListingGroupFilterListingSource;
use Google\Ads\GoogleAds\V16\Enums\AssetGroupStatusEnum\AssetGroupStatus;
use Google\Ads\GoogleAds\V16\Enums\ListingGroupFilterTypeEnum\ListingGroupFilterType;
use Google\Ads\GoogleAds\V16\Resources\AssetGroup;
use Google\Ads\GoogleAds\V16\Resources\AssetGroupListingGroupFilter;
use Google\Ads\GoogleAds\V16\Services\AssetGroupListingGroupFilterOperation;
use Google\Ads\GoogleAds\V16\Services\AssetGroupOperation;
use Google\Ads\GoogleAds\V16\Services\GoogleAdsRow;
use Google\Ads\GoogleAds\V16\Services\MutateGoogleAdsRequest;
use Google\Ads\GoogleAds\V16\Services\MutateOperation;
use Google\Ads\GoogleAds\V16\Services\Client\AssetGroupServiceClient;
use Google\Ads\GoogleAds\Util\V18\ResourceNames;
use Google\Ads\GoogleAds\V18\Enums\ListingGroupFilterListingSourceEnum\ListingGroupFilterListingSource;
use Google\Ads\GoogleAds\V18\Enums\AssetGroupStatusEnum\AssetGroupStatus;
use Google\Ads\GoogleAds\V18\Enums\ListingGroupFilterTypeEnum\ListingGroupFilterType;
use Google\Ads\GoogleAds\V18\Resources\AssetGroup;
use Google\Ads\GoogleAds\V18\Resources\AssetGroupListingGroupFilter;
use Google\Ads\GoogleAds\V18\Services\AssetGroupListingGroupFilterOperation;
use Google\Ads\GoogleAds\V18\Services\AssetGroupOperation;
use Google\Ads\GoogleAds\V18\Services\GoogleAdsRow;
use Google\Ads\GoogleAds\V18\Services\MutateGoogleAdsRequest;
use Google\Ads\GoogleAds\V18\Services\MutateOperation;
use Google\Ads\GoogleAds\V18\Services\Client\AssetGroupServiceClient;
use Google\ApiCore\ApiException;
use Google\ApiCore\ValidationException;
use Google\Protobuf\FieldMask;
Expand Down Expand Up @@ -49,11 +49,6 @@ class AdsAssetGroup implements OptionsAwareInterface {
*/
protected const TEMPORARY_ID = -3;

/**
* The page size for the AdsAssetGroupQuery.
*/
protected const PAGE_SIZE = 1;

/**
* The Google Ads Client.
*
Expand Down Expand Up @@ -226,7 +221,7 @@ protected function temporary_resource_name() {
}

/**
* Get Asset Groups for a specific campaign.
* Get Asset Groups for a specific campaign. Limit to first AdsAssetGroup.
*
* @since 2.4.0
*
Expand All @@ -240,7 +235,7 @@ public function get_asset_groups_by_campaign_id( int $campaign_id, bool $include
try {
$asset_groups_converted = [];

$asset_group_results = ( new AdsAssetGroupQuery( [ 'pageSize' => self::PAGE_SIZE ] ) )
$asset_group_results = ( new AdsAssetGroupQuery() )
->set_client( $this->client, $this->options->get_ads_id() )
->add_columns( [ 'asset_group.path1', 'asset_group.path2', 'asset_group.id', 'asset_group.final_urls' ] )
->where( 'campaign.id', $campaign_id )
Expand All @@ -250,6 +245,7 @@ public function get_asset_groups_by_campaign_id( int $campaign_id, bool $include
/** @var GoogleAdsRow $row */
foreach ( $asset_group_results->getPage()->getIterator() as $row ) {
$asset_groups_converted[ $row->getAssetGroup()->getId() ] = $this->convert_asset_group( $row );
break; // Limit to only first asset group.
}

if ( $include_assets ) {
Expand Down
12 changes: 6 additions & 6 deletions src/API/Google/AdsAssetGroupAsset.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,13 @@
use Automattic\WooCommerce\GoogleListingsAndAds\Google\Ads\GoogleAdsClient;
use Automattic\WooCommerce\GoogleListingsAndAds\Options\OptionsAwareInterface;
use Automattic\WooCommerce\GoogleListingsAndAds\Options\OptionsAwareTrait;
use Google\Ads\GoogleAds\V16\Services\GoogleAdsRow;
use Google\Ads\GoogleAds\V16\Resources\AssetGroupAsset;
use Google\Ads\GoogleAds\V18\Services\GoogleAdsRow;
use Google\Ads\GoogleAds\V18\Resources\AssetGroupAsset;
use Google\ApiCore\ApiException;
use Automattic\WooCommerce\GoogleListingsAndAds\Exception\ExceptionWithResponseData;
use Google\Ads\GoogleAds\V16\Services\MutateOperation;
use Google\Ads\GoogleAds\V16\Services\AssetGroupAssetOperation;
use Google\Ads\GoogleAds\Util\V16\ResourceNames;
use Google\Ads\GoogleAds\V18\Services\MutateOperation;
use Google\Ads\GoogleAds\V18\Services\AssetGroupAssetOperation;
use Google\Ads\GoogleAds\Util\V18\ResourceNames;



Expand All @@ -22,7 +22,7 @@
* Class AdsAssetGroupAsset
*
* Use to get assets group assets for specific asset groups.
* https://developers.google.com/google-ads/api/fields/V16/asset_group_asset
* https://developers.google.com/google-ads/api/reference/rpc/v18/AssetGroupAsset
*
* @since 2.4.0
*
Expand Down
56 changes: 24 additions & 32 deletions src/API/Google/AdsCampaign.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,16 @@
use Automattic\WooCommerce\GoogleListingsAndAds\Options\TransientsInterface;
use Automattic\WooCommerce\GoogleListingsAndAds\Proxies\WC;
use Google\Ads\GoogleAds\Util\FieldMasks;
use Google\Ads\GoogleAds\Util\V16\ResourceNames;
use Google\Ads\GoogleAds\V16\Common\MaximizeConversionValue;
use Google\Ads\GoogleAds\V16\Enums\AdvertisingChannelTypeEnum\AdvertisingChannelType;
use Google\Ads\GoogleAds\V16\Resources\Campaign;
use Google\Ads\GoogleAds\V16\Resources\Campaign\ShoppingSetting;
use Google\Ads\GoogleAds\V16\Services\Client\CampaignServiceClient;
use Google\Ads\GoogleAds\V16\Services\CampaignOperation;
use Google\Ads\GoogleAds\V16\Services\GoogleAdsRow;
use Google\Ads\GoogleAds\V16\Services\MutateGoogleAdsRequest;
use Google\Ads\GoogleAds\V16\Services\MutateOperation;
use Google\Ads\GoogleAds\Util\V18\ResourceNames;
use Google\Ads\GoogleAds\V18\Common\MaximizeConversionValue;
use Google\Ads\GoogleAds\V18\Enums\AdvertisingChannelTypeEnum\AdvertisingChannelType;
use Google\Ads\GoogleAds\V18\Resources\Campaign;
use Google\Ads\GoogleAds\V18\Resources\Campaign\ShoppingSetting;
use Google\Ads\GoogleAds\V18\Services\Client\CampaignServiceClient;
use Google\Ads\GoogleAds\V18\Services\CampaignOperation;
use Google\Ads\GoogleAds\V18\Services\GoogleAdsRow;
use Google\Ads\GoogleAds\V18\Services\MutateGoogleAdsRequest;
use Google\Ads\GoogleAds\V18\Services\MutateOperation;
use Google\ApiCore\ApiException;
use Google\ApiCore\ValidationException;
use Exception;
Expand Down Expand Up @@ -108,35 +108,37 @@ public function __construct( GoogleAdsClient $client, AdsCampaignBudget $budget,
*
* @param bool $exclude_removed Exclude removed campaigns (default true).
* @param bool $fetch_criterion Combine the campaign data with criterion data (default true).
* @param array $args Arguments for the Ads Campaign Query for example: per_page for limiting the number of results.
* @param bool $return_pagination_params Whether to return pagination params (default false).
* @param array $args Arguments for fetching campaigns, for example: per_page for limiting the number of results.
*
* @return array
* @throws ExceptionWithResponseData When an ApiException is caught.
*/
public function get_campaigns( bool $exclude_removed = true, bool $fetch_criterion = true, $args = [], $return_pagination_params = false ): array {
public function get_campaigns( bool $exclude_removed = true, bool $fetch_criterion = true, array $args = [] ): array {
try {
$query = ( new AdsCampaignQuery( $args ) )->set_client( $this->client, $this->options->get_ads_id() );
$query = ( new AdsCampaignQuery() )->set_client( $this->client, $this->options->get_ads_id() );

if ( $exclude_removed ) {
$query->where( 'campaign.status', 'REMOVED', '!=' );
}

$campaign_count = 0;
$count = 0;
$campaign_results = $query->get_results();
$converted_campaigns = [];

/** @var Page $page */
$page = $campaign_results->getPage();

foreach ( $page->getIterator() as $row ) {
++$campaign_count;
foreach ( $campaign_results->iterateAllElements() as $row ) {
++$count;
$campaign = $this->convert_campaign( $row );
$converted_campaigns[ $campaign['id'] ] = $campaign;

// Break early if we request a limited result.
if ( ! empty( $args['per_page'] ) && $count >= $args['per_page'] ) {
break;
}
}

if ( $exclude_removed ) {
// Cache campaign count.
$campaign_count = $campaign_results->getPage()->getResponseObject()->getTotalResultsCount();
$this->container->get( TransientsInterface::class )->set(
TransientsInterface::ADS_CAMPAIGN_COUNT,
$campaign_count,
Expand All @@ -148,16 +150,6 @@ public function get_campaigns( bool $exclude_removed = true, bool $fetch_criteri
$converted_campaigns = $this->combine_campaigns_and_campaign_criterion_results( $converted_campaigns );
}

if ( $return_pagination_params ) {
// Total results across all pages.
$total_results = $page->getResponseObject()->getTotalResultsCount();
$next_page_token = $page->getNextPageToken();
return [
'campaigns' => array_values( $converted_campaigns ),
'total_results' => $total_results,
'next_page_token' => $next_page_token,
];
}
return array_values( $converted_campaigns );
} catch ( ApiException $e ) {
do_action( 'woocommerce_gla_ads_client_exception', $e, __METHOD__ );
Expand All @@ -183,14 +175,14 @@ public function get_campaigns( bool $exclude_removed = true, bool $fetch_criteri
*/
public function get_campaign( int $id ): array {
try {
$campaign_results = ( new AdsCampaignQuery( [ 'per_page' => 1 ] ) )->set_client( $this->client, $this->options->get_ads_id() )
$campaign_results = ( new AdsCampaignQuery() )->set_client( $this->client, $this->options->get_ads_id() )
->where( 'campaign.id', $id, '=' )
->get_results();

$converted_campaigns = [];

// Get only the first element from campaign results
foreach ( $campaign_results->getPage()->getIterator() as $row ) {
foreach ( $campaign_results->iterateAllElements() as $row ) {
$campaign = $this->convert_campaign( $row );
$converted_campaigns[ $campaign['id'] ] = $campaign;
break;
Expand Down
10 changes: 5 additions & 5 deletions src/API/Google/AdsCampaignBudget.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@
use Automattic\WooCommerce\GoogleListingsAndAds\Options\OptionsAwareInterface;
use Automattic\WooCommerce\GoogleListingsAndAds\Options\OptionsAwareTrait;
use Google\Ads\GoogleAds\Util\FieldMasks;
use Google\Ads\GoogleAds\Util\V16\ResourceNames;
use Google\Ads\GoogleAds\V16\Resources\CampaignBudget;
use Google\Ads\GoogleAds\V16\Services\CampaignBudgetOperation;
use Google\Ads\GoogleAds\V16\Services\Client\CampaignBudgetServiceClient;
use Google\Ads\GoogleAds\V16\Services\MutateOperation;
use Google\Ads\GoogleAds\Util\V18\ResourceNames;
use Google\Ads\GoogleAds\V18\Resources\CampaignBudget;
use Google\Ads\GoogleAds\V18\Services\CampaignBudgetOperation;
use Google\Ads\GoogleAds\V18\Services\Client\CampaignBudgetServiceClient;
use Google\Ads\GoogleAds\V18\Services\MutateOperation;
use Google\ApiCore\ValidationException;
use Exception;

Expand Down
12 changes: 6 additions & 6 deletions src/API/Google/AdsCampaignCriterion.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@

namespace Automattic\WooCommerce\GoogleListingsAndAds\API\Google;

use Google\Ads\GoogleAds\Util\V16\ResourceNames;
use Google\Ads\GoogleAds\V16\Common\LocationInfo;
use Google\Ads\GoogleAds\V16\Enums\CampaignCriterionStatusEnum\CampaignCriterionStatus;
use Google\Ads\GoogleAds\V16\Resources\CampaignCriterion;
use Google\Ads\GoogleAds\V16\Services\CampaignCriterionOperation;
use Google\Ads\GoogleAds\V16\Services\MutateOperation;
use Google\Ads\GoogleAds\Util\V18\ResourceNames;
use Google\Ads\GoogleAds\V18\Common\LocationInfo;
use Google\Ads\GoogleAds\V18\Enums\CampaignCriterionStatusEnum\CampaignCriterionStatus;
use Google\Ads\GoogleAds\V18\Resources\CampaignCriterion;
use Google\Ads\GoogleAds\V18\Services\CampaignCriterionOperation;
use Google\Ads\GoogleAds\V18\Services\MutateOperation;

/**
* Class AdsCampaignCriterion
Expand Down
14 changes: 7 additions & 7 deletions src/API/Google/AdsCampaignLabel.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,13 @@
use Automattic\WooCommerce\GoogleListingsAndAds\Google\Ads\GoogleAdsClient;
use Automattic\WooCommerce\GoogleListingsAndAds\Options\OptionsAwareInterface;
use Automattic\WooCommerce\GoogleListingsAndAds\Options\OptionsAwareTrait;
use Google\Ads\GoogleAds\Util\V16\ResourceNames;
use Google\Ads\GoogleAds\V16\Resources\Label;
use Google\Ads\GoogleAds\V16\Resources\CampaignLabel;
use Google\Ads\GoogleAds\V16\Services\LabelOperation;
use Google\Ads\GoogleAds\V16\Services\CampaignLabelOperation;
use Google\Ads\GoogleAds\V16\Services\MutateOperation;
use Google\Ads\GoogleAds\V16\Services\MutateGoogleAdsRequest;
use Google\Ads\GoogleAds\Util\V18\ResourceNames;
use Google\Ads\GoogleAds\V18\Resources\Label;
use Google\Ads\GoogleAds\V18\Resources\CampaignLabel;
use Google\Ads\GoogleAds\V18\Services\LabelOperation;
use Google\Ads\GoogleAds\V18\Services\CampaignLabelOperation;
use Google\Ads\GoogleAds\V18\Services\MutateOperation;
use Google\Ads\GoogleAds\V18\Services\MutateGoogleAdsRequest;

/**
* Class AdsCampaignLabel
Expand Down
26 changes: 13 additions & 13 deletions src/API/Google/AdsConversionAction.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,19 +8,19 @@
use Automattic\WooCommerce\GoogleListingsAndAds\Options\OptionsAwareInterface;
use Automattic\WooCommerce\GoogleListingsAndAds\Options\OptionsAwareTrait;
use Exception;
use Google\Ads\GoogleAds\V16\Common\TagSnippet;
use Google\Ads\GoogleAds\V16\Enums\ConversionActionCategoryEnum\ConversionActionCategory;
use Google\Ads\GoogleAds\V16\Enums\ConversionActionStatusEnum\ConversionActionStatus;
use Google\Ads\GoogleAds\V16\Enums\ConversionActionTypeEnum\ConversionActionType;
use Google\Ads\GoogleAds\V16\Enums\TrackingCodePageFormatEnum\TrackingCodePageFormat;
use Google\Ads\GoogleAds\V16\Enums\TrackingCodeTypeEnum\TrackingCodeType;
use Google\Ads\GoogleAds\V16\Resources\ConversionAction;
use Google\Ads\GoogleAds\V16\Resources\ConversionAction\ValueSettings;
use Google\Ads\GoogleAds\V16\Services\ConversionActionOperation;
use Google\Ads\GoogleAds\V16\Services\Client\ConversionActionServiceClient;
use Google\Ads\GoogleAds\V16\Services\GoogleAdsRow;
use Google\Ads\GoogleAds\V16\Services\MutateConversionActionResult;
use Google\Ads\GoogleAds\V16\Services\MutateConversionActionsRequest;
use Google\Ads\GoogleAds\V18\Common\TagSnippet;
use Google\Ads\GoogleAds\V18\Enums\ConversionActionCategoryEnum\ConversionActionCategory;
use Google\Ads\GoogleAds\V18\Enums\ConversionActionStatusEnum\ConversionActionStatus;
use Google\Ads\GoogleAds\V18\Enums\ConversionActionTypeEnum\ConversionActionType;
use Google\Ads\GoogleAds\V18\Enums\TrackingCodePageFormatEnum\TrackingCodePageFormat;
use Google\Ads\GoogleAds\V18\Enums\TrackingCodeTypeEnum\TrackingCodeType;
use Google\Ads\GoogleAds\V18\Resources\ConversionAction;
use Google\Ads\GoogleAds\V18\Resources\ConversionAction\ValueSettings;
use Google\Ads\GoogleAds\V18\Services\ConversionActionOperation;
use Google\Ads\GoogleAds\V18\Services\Client\ConversionActionServiceClient;
use Google\Ads\GoogleAds\V18\Services\GoogleAdsRow;
use Google\Ads\GoogleAds\V18\Services\MutateConversionActionResult;
use Google\Ads\GoogleAds\V18\Services\MutateConversionActionsRequest;
use Google\ApiCore\ApiException;

/**
Expand Down
4 changes: 2 additions & 2 deletions src/API/Google/AdsReport.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@
use Automattic\WooCommerce\GoogleListingsAndAds\Options\OptionsAwareInterface;
use Automattic\WooCommerce\GoogleListingsAndAds\Options\OptionsAwareTrait;
use DateTime;
use Google\Ads\GoogleAds\V16\Common\Segments;
use Google\Ads\GoogleAds\V16\Services\GoogleAdsRow;
use Google\Ads\GoogleAds\V18\Common\Segments;
use Google\Ads\GoogleAds\V18\Services\GoogleAdsRow;
use Google\ApiCore\ApiException;

/**
Expand Down
Loading

0 comments on commit a6db2da

Please sign in to comment.