通过Google Ads API添加图片扩展时遇LEGACY_EXTENSION_TYPE_READ_ONLY错误
解决Google Ads API添加图片扩展的LEGACY_EXTENSION_TYPE_READ_ONLY错误
错误原因
错误
LEGACY_EXTENSION_TYPE_READ_ONLY是因为图片扩展(Image Extension)不属于传统的基于Feed的扩展类型,无法通过ExtensionFeedItemService创建和管理。这类扩展需要通过Asset服务创建对应资产,再通过CampaignAsset服务关联到目标广告系列。
修正后的代码
def create_image_extensions(df): # 预获取所需服务实例 asset_service = client.get_service("AssetService") campaign_service = client.get_service("CampaignService") campaign_asset_service = client.get_service("CampaignAssetService") for index, row in df.iterrows(): # 1. 创建IMAGE_EXTENSION类型的资产 asset_operation = client.get_type("AssetOperation") image_ext_asset = asset_operation.create # 关联已上传的图片资产ID image_ext_asset.image_extension_asset.image_asset = asset_service.asset_path(account_id, row.asset_id) # 提交资产创建请求 asset_response = asset_service.mutate_assets( customer_id=account_id, operations=[asset_operation] ) ext_asset_resource = asset_response.results[0].resource_name print(f"创建图片扩展资产成功: '{ext_asset_resource}'") # 2. 将图片扩展资产关联到目标广告系列 campaign_asset_operation = client.get_type("CampaignAssetOperation") campaign_asset = campaign_asset_operation.create campaign_asset.campaign = campaign_service.campaign_path(account_id, row.campaign_id) campaign_asset.asset = ext_asset_resource # 指定资产类型为图片扩展 campaign_asset.field_type = client.enums.AssetFieldTypeEnum.IMAGE_EXTENSION # 提交关联请求 ca_response = campaign_asset_service.mutate_campaign_assets( customer_id=account_id, operations=[campaign_asset_operation] ) print(f"图片扩展关联广告系列成功: '{ca_response.results[0].resource_name}'")
关键说明
- 替换原代码中
ExtensionFeedItemService和CampaignExtensionSettingService的使用,改用AssetService创建图片扩展资产,CampaignAssetService完成与广告系列的绑定 - 图片扩展资产需通过
image_extension_asset字段关联已上传的图片资产(即你传入的row.asset_id对应资源) - 关联广告系列时必须指定
field_type为IMAGE_EXTENSION,确保系统识别该资产的用途
内容的提问来源于stack exchange,提问作者Sidharth Ravindra
相关产品推荐
相关产品推荐

