|
18 | 18 | import com.google.ads.googleads.examples.utils.ArgumentNames; |
19 | 19 | import com.google.ads.googleads.examples.utils.CodeSampleParams; |
20 | 20 | import com.google.ads.googleads.lib.GoogleAdsClient; |
21 | | -import com.google.ads.googleads.lib.utils.FieldMasks; |
22 | | -import com.google.ads.googleads.v8.resources.AdGroupAsset; |
23 | | -import com.google.ads.googleads.v8.resources.CampaignAsset; |
24 | 21 | import com.google.ads.googleads.v8.common.PromotionAsset; |
25 | 22 | import com.google.ads.googleads.v8.common.PromotionFeedItem; |
26 | 23 | import com.google.ads.googleads.v8.enums.AssetFieldTypeEnum.AssetFieldType; |
27 | 24 | import com.google.ads.googleads.v8.errors.GoogleAdsError; |
28 | 25 | import com.google.ads.googleads.v8.errors.GoogleAdsException; |
29 | 26 | import com.google.ads.googleads.v8.resources.AdGroup; |
| 27 | +import com.google.ads.googleads.v8.resources.AdGroupAsset; |
30 | 28 | import com.google.ads.googleads.v8.resources.AdGroupExtensionSetting; |
31 | 29 | import com.google.ads.googleads.v8.resources.Asset; |
32 | 30 | import com.google.ads.googleads.v8.resources.Campaign; |
| 31 | +import com.google.ads.googleads.v8.resources.CampaignAsset; |
33 | 32 | import com.google.ads.googleads.v8.resources.CampaignExtensionSetting; |
34 | 33 | import com.google.ads.googleads.v8.resources.ExtensionFeedItem; |
35 | 34 | import com.google.ads.googleads.v8.resources.FeedItem; |
|
39 | 38 | import com.google.ads.googleads.v8.services.AssetServiceClient; |
40 | 39 | import com.google.ads.googleads.v8.services.CampaignAssetOperation; |
41 | 40 | import com.google.ads.googleads.v8.services.CampaignAssetServiceClient; |
42 | | -import com.google.ads.googleads.v8.services.ExtensionFeedItemOperation; |
43 | | -import com.google.ads.googleads.v8.services.ExtensionFeedItemServiceClient; |
44 | 41 | import com.google.ads.googleads.v8.services.GoogleAdsRow; |
45 | 42 | import com.google.ads.googleads.v8.services.GoogleAdsServiceClient; |
46 | | -import com.google.ads.googleads.v8.services.GoogleAdsServiceClient.SearchPagedResponse; |
47 | 43 | import com.google.ads.googleads.v8.services.MutateAdGroupAssetResult; |
48 | 44 | import com.google.ads.googleads.v8.services.MutateAdGroupAssetsResponse; |
49 | 45 | import com.google.ads.googleads.v8.services.MutateAssetsResponse; |
50 | 46 | import com.google.ads.googleads.v8.services.MutateCampaignAssetResult; |
51 | 47 | import com.google.ads.googleads.v8.services.MutateCampaignAssetsResponse; |
52 | | -import com.google.ads.googleads.v8.services.MutateExtensionFeedItemsResponse; |
53 | 48 | import com.google.ads.googleads.v8.services.SearchGoogleAdsStreamRequest; |
54 | 49 | import com.google.ads.googleads.v8.services.SearchGoogleAdsStreamResponse; |
55 | 50 | import com.google.ads.googleads.v8.utils.ResourceNames; |
|
58 | 53 | import java.io.FileNotFoundException; |
59 | 54 | import java.io.IOException; |
60 | 55 | import java.util.ArrayList; |
61 | | -import java.util.Iterator; |
62 | 56 | import java.util.List; |
63 | 57 | import java.util.Optional; |
64 | 58 | import java.util.stream.Collectors; |
|
69 | 63 | * asset-based extension. The new Asset-based extension will then be associated with the same |
70 | 64 | * campaigns and ad groups as the original Feed-based extension. Finally, the Feed-based extension |
71 | 65 | * will be mutated to no longer serve. |
| 66 | + * Once copied, you should remove the Feed-based extension; see |
| 67 | + * RemoveEntireSitelinkCampaignExtensionSetting.java for an example. |
72 | 68 | */ |
73 | 69 | public class MigratePromotionFeedToAsset { |
74 | 70 |
|
@@ -148,8 +144,6 @@ private void runExample( |
148 | 144 | // Associates the new Promotion asset with the same ad groups as the original. |
149 | 145 | associateAssetWithAdGroups( |
150 | 146 | googleAdsClient, customerId, promotionAssetResourceName, adGroupIds); |
151 | | - // Prevents the extension feed item from serving. |
152 | | - clearExtensionFeedItemServingDates(googleAdsClient, customerId, extensionFeedItem); |
153 | 147 | } |
154 | 148 | } |
155 | 149 |
|
@@ -470,43 +464,4 @@ private void associateAssetWithAdGroups( |
470 | 464 | } |
471 | 465 | } |
472 | 466 | } |
473 | | - |
474 | | - /** |
475 | | - * Prevent an ExtensionFeedItem from serving by clearing its start and end dates. This allows the |
476 | | - * ExtensionFeedItem to still appear in reports while not generating new data. |
477 | | - */ |
478 | | - // [START migrate_promotion_feed_to_asset_3] |
479 | | - private void clearExtensionFeedItemServingDates( |
480 | | - GoogleAdsClient googleAdsClient, Long customerId, ExtensionFeedItem extensionFeedItem) { |
481 | | - ExtensionFeedItem.Builder updatedExtensionFeedItem = |
482 | | - ExtensionFeedItem.newBuilder().setResourceName(extensionFeedItem.getResourceName()); |
483 | | - |
484 | | - ExtensionFeedItemOperation.Builder operation = |
485 | | - ExtensionFeedItemOperation.newBuilder() |
486 | | - .setUpdate(updatedExtensionFeedItem) |
487 | | - .setUpdateMask(FieldMasks.allSetFieldsOf(updatedExtensionFeedItem.build())); |
488 | | - |
489 | | - // Clears all start and end dates to prevent the extension feed item from serving. |
490 | | - // Alternatively, remove the extension feed item completely. Note that doing so may |
491 | | - // affect this extension's reporting history. |
492 | | - // See RemoveEntireSitelinkCampaignExtensionSetting.java for an example. |
493 | | - // Note also that we must explicitly add the fields to the Update Mask; |
494 | | - // FieldMasks.allSetFieldsOf() won't pick up cleared fields. |
495 | | - operation.getUpdateMaskBuilder().addPaths("start_date_time"); |
496 | | - operation.getUpdateMaskBuilder().addPaths("end_date_time"); |
497 | | - operation.getUpdateMaskBuilder().addPaths("promotion_feed_item.promotion_start_date"); |
498 | | - operation.getUpdateMaskBuilder().addPaths("promotion_feed_item.promotion_end_date"); |
499 | | - |
500 | | - try (ExtensionFeedItemServiceClient client = |
501 | | - googleAdsClient.getLatestVersion().createExtensionFeedItemServiceClient()) { |
502 | | - // Issues the request to disable the extension feed item and report success. |
503 | | - MutateExtensionFeedItemsResponse response = |
504 | | - client.mutateExtensionFeedItems( |
505 | | - String.valueOf(customerId), ImmutableList.of(operation.build())); |
506 | | - System.out.println( |
507 | | - "Cleared serving dates for extension feed item " |
508 | | - + response.getResults(0).getResourceName()); |
509 | | - } |
510 | | - } |
511 | | - // [END migrate_promotion_feed_to_asset_3] |
512 | 467 | } |
0 commit comments