def _pause_assets_by_campaign(
self,
campaign_resource_name,
paused_assets_resource_names
):
ga_service = self._client.get_service("GoogleAdsService")
query = f"""SELECT
ad_group_ad.resource_name,
ad_group_ad.ad.app_ad.images,
ad_group_ad.ad.app_ad.youtube_videos,
campaign.resource_name
FROM ad_group_ad
WHERE campaign.resource_name = '{campaign_resource_name}'"""
self._get_logger().info(f"pause_ads_by_campaign -> query: {query}")
response = ga_service.search_stream(customer_id=self._customer_id, query=query)
self._get_logger().info(f"pause_ads_by_campaign -> response: {response}")
paused_assets_resource_names_map = {}
for resource_name in paused_assets_resource_names:
paused_assets_resource_names_map[resource_name] = True
self._get_logger().info(f"pause_ads_by_campaign -> paused_assets_resource_names_map: {paused_assets_resource_names_map}")
for batch in response:
for row in batch.results:
self._get_logger().info(f"pause_ads_by_campaign -> AdGroupAd: {row}")
ad_service = self._client.get_service("AdService")
ad_operation = self._client.get_type("AdOperation")
updated_ad = ad_operation.update
updated_ad.resource_name = ad.resource_name
extended_youtube_videos = [
youtube_asset for youtube_asset in ad.app_ad.youtube_videos if youtube_asset.asset not in paused_assets_resource_names_map
]
self._get_logger().info(f"pause_ads_by_campaign -> extended_youtube_videos: {extended_youtube_videos}")
updated_ad.app_ad.youtube_videos = extended_youtube_videos
extended_images = [
image_asset for image_asset in ad.app_ad.images if image_asset.asset not in paused_assets_resource_names_map
]
self._get_logger().info(f"pause_ads_by_campaign -> extended_images: {extended_images}")
updated_ad.app_ad.images = extended_images
field_mask = protobuf_helpers.field_mask(
None, updated_ad._pb
)
self._get_logger().info(f"pause_ads_by_campaign -> field_mask: {field_mask}")
self._client.copy_from(ad_operation.update_mask, field_mask)
self._get_logger().info(f"pause_ads_by_campaign -> ad_operation: {ad_operation}")
self._get_logger().info(f"pause_ads_by_campaign -> ad_operation.update_mask: {ad_operation.update_mask}")
response = ad_service.mutate_ads(
customer_id=self._customer_id, operations=[ad_operation],
)
self._get_logger().info(f"pause_ads_by_campaign -> response: {response}")
resource_name = response.results[0].resource_name
self._get_logger().info(f"pause_ads_by_campaign -> Ad updated! resource_name:{resource_name}")
There is no error thrown but my asset is not getting excluded by this update. Please help me to resolve this. :)