I read that we can't delete asset using AssetService but some of the Google 
Team recommended users to mutate via AdService instead. 

So I tried to remove specific asset from AdGroup by using this code:
```
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.id,
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 = row.ad_group_ad.ad

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. :)

-- 
-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
Also find us on our blog:
https://googleadsdeveloper.blogspot.com/
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~

You received this message because you are subscribed to the Google
Groups "AdWords API and Google Ads API Forum" group.
To post to this group, send email to adwords-api@googlegroups.com
To unsubscribe from this group, send email to
adwords-api+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/adwords-api?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Google Ads API and AdWords API Forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to adwords-api+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/adwords-api/91db49dd-28d4-4b05-a912-2c059e1e5ba8n%40googlegroups.com.

Reply via email to