[null,null,["最后更新时间 (UTC):2025-08-31。"],[[["\u003cp\u003eCreating a Things to do ad involves creating an \u003ccode\u003eAd\u003c/code\u003e with \u003ccode\u003eTravelAdInfo\u003c/code\u003e and associating it with an \u003ccode\u003eAdGroupAd\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eTo serve ads, ensure your \u003ccode\u003eAdGroupAd\u003c/code\u003e has an \u003ccode\u003ead\u003c/code\u003e set and its \u003ccode\u003estatus\u003c/code\u003e is \u003ccode\u003eENABLED\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eFor easier performance tracking, it's recommended to create only one ad per ad group, as serving multiple ads is arbitrary.\u003c/p\u003e\n"],["\u003cp\u003ePausing Things to do ads should be done at the ad group or campaign level, not the ad level.\u003c/p\u003e\n"]]],[],null,["# Creating a Things to do ad group ad\n\nCreating a Things to do ad involves two steps:\n\n1. Creating an [`Ad`](/google-ads/api/reference/rpc/v21/Ad) and setting its [`travel_ad`](/google-ads/api/reference/rpc/v21/Ad#travel_ad) to an instance of [`TravelAdInfo`](/google-ads/api/reference/rpc/v21/TravelAdInfo).\n\n2. Creating an [`AdGroupAd`](/google-ads/api/reference/rpc/v21/AdGroupAd) and associating the\n previously created `Ad` to it.\n\n| **Key Point:** In order to serve ads for your ad group, you need one [`AdGroupAd`](/google-ads/api/reference/rpc/v21/AdGroupAd) whose [`ad`](/google-ads/api/reference/rpc/v21/AdGroupAd#ad) is set and whose [`status`](/google-ads/api/reference/rpc/v21/AdGroupAd#status) is [`ENABLED`](/google-ads/api/reference/rpc/v21/AdGroupAdStatusEnum.AdGroupAdStatus#enabled). You can create more than one ad in an ad group, but the serving of the ads will then be arbitrary, resulting in impressions that are shared among the whole lot of ads. Therefore, we recommend creating only one ad per ad group to make it easier to track ad performance.\n\n\n### Java\n\n```java\nprivate String addAddGroupAd(\n GoogleAdsClient googleAdsClient, long customerId, String adGroupResourceName) {\n // Creates a new travel ad.\n Ad ad = Ad.newBuilder().setTravelAd(TravelAdInfo.newBuilder()).build();\n // Creates a new ad group ad and sets its ad to the travel ad.\n AdGroupAd adGroupAd =\n AdGroupAd.newBuilder()\n // Sets the ad to the ad created above.\n .setAd(ad)\n // Set the ad group ad to enabled. Setting this to paused will cause an error for\n // Things to do campaigns. Pausing should happen at either the ad group or campaign\n // level.\n .setStatus(AdGroupAdStatus.ENABLED)\n // Sets the ad group.\n .setAdGroup(adGroupResourceName)\n .build();\n\n // Creates an ad group ad operation.\n AdGroupAdOperation operation = AdGroupAdOperation.newBuilder().setCreate(adGroupAd).build();\n\n // Issues a mutate request to add an ad group ad.\n try (AdGroupAdServiceClient adGroupAdServiceClient =\n googleAdsClient.getLatestVersion().createAdGroupAdServiceClient()) {\n MutateAdGroupAdResult mutateAdGroupAdResult =\n adGroupAdServiceClient\n .mutateAdGroupAds(Long.toString(customerId), Collections.singletonList(operation))\n .getResults(0);\n System.out.printf(\n \"Added an ad group ad with resource name: '%s'%n\",\n mutateAdGroupAdResult.getResourceName());\n return mutateAdGroupAdResult.getResourceName();\n }\n}https://github.com/googleads/google-ads-java/blob/3c3c1041c2a0ab81553e3b2a79876256649397ed/google-ads-examples/src/main/java/com/google/ads/googleads/examples/travel/AddThingsToDoAd.java#L292-L324\n \n```\n\n### C#\n\n```c#\nprivate static void CreateAdGroupAd(GoogleAdsClient client, long customerId,\n string adGroup)\n{\n\n // Get the AdGroupAdService.\n AdGroupAdServiceClient adGroupAdService =\n client.GetService(Services.V21.AdGroupAdService);\n\n // Creates a new ad group ad and sets a travel ad info.\n AdGroupAd adGroupAd = new AdGroupAd()\n {\n Ad = new Ad()\n {\n TravelAd = new TravelAdInfo()\n },\n // Set the ad group ad to enabled. Setting this to paused will cause an error for\n // Things to do campaigns. Pausing should happen at either the ad group or campaign\n // level.\n Status = AdGroupAdStatus.Enabled,\n AdGroup = adGroup\n };\n\n MutateAdGroupAdsResponse response = adGroupAdService.MutateAdGroupAds(\n customerId.ToString(), new AdGroupAdOperation[] { new AdGroupAdOperation() {\n Create = adGroupAd\n }}\n );\n\n string adGroupAdResourceName = response.Results[0].ResourceName;\n Console.WriteLine(\"Ad group ad with resource name = '{0}' was added.\",\n adGroupAdResourceName);\n}https://github.com/googleads/google-ads-dotnet/blob/ada966e1983b655e82172b6c3e7d9b091b522377/Google.Ads.GoogleAds/examples/Travel/AddThingsToDoAd.cs#L244-L275\n \n```\n\n### PHP\n\n```php\nprivate static function addAdGroupAd(\n GoogleAdsClient $googleAdsClient,\n int $customerId,\n string $adGroupResourceName\n) {\n // Creates a new ad group ad and sets a travel ad info.\n $adGroupAd = new AdGroupAd([\n 'ad' =\u003e new Ad(['travel_ad' =\u003e new TravelAdInfo()]),\n // Set the ad group ad to enabled. Setting this to paused will cause an error for Things\n // to do campaigns. Pausing should happen at either the ad group or campaign level.\n 'status' =\u003e AdGroupAdStatus::ENABLED,\n // Sets the ad group.\n 'ad_group' =\u003e $adGroupResourceName\n ]);\n\n // Creates an ad group ad operation.\n $adGroupAdOperation = new AdGroupAdOperation();\n $adGroupAdOperation-\u003esetCreate($adGroupAd);\n\n // Issues a mutate request to add an ad group ad.\n $adGroupAdServiceClient = $googleAdsClient-\u003egetAdGroupAdServiceClient();\n $response = $adGroupAdServiceClient-\u003emutateAdGroupAds(\n MutateAdGroupAdsRequest::build($customerId, [$adGroupAdOperation])\n );\n\n /** @var AdGroupAd $addedAdGroupAd */\n $addedAdGroupAd = $response-\u003egetResults()[0];\n printf(\n \"Added an ad group ad with resource name '%s'.%s\",\n $addedAdGroupAd-\u003egetResourceName(),\n PHP_EOL\n );\n} \nhttps://github.com/googleads/google-ads-php/blob/be0249c30c27b4760387bec6682b82c9f4167761/examples/Travel/AddThingsToDoAd.php#L314-L346\n\n \n```\n\n### Python\n\n```python\ndef add_ad_group_ad(\n client: GoogleAdsClient, customer_id: str, ad_group_resource_name: str\n) -\u003e None:\n \"\"\"Creates a new ad group ad in the specified ad group.\n\n Args:\n client: an initialized GoogleAdsClient instance.\n customer_id: a client customer ID.\n ad_group_resource_name: the resource name of ad group that a new ad\n group ad will belong to.\n \"\"\"\n # Creates an ad group ad operation.\n operation: AdGroupAdOperation = client.get_type(\"AdGroupAdOperation\")\n # Creates a new ad group ad and sets a travel ad info.\n ad_group_ad: AdGroupAd = operation.create\n # Sets the ad group ad to enabled. Setting this to paused will cause an error\n # for Things to do campaigns. Pausing should happen at either the ad group\n # or campaign level.\n ad_group_ad.status = client.enums.AdGroupAdStatusEnum.ENABLED\n ad_group_ad.ad.travel_ad = client.get_type(\"TravelAdInfo\")\n # Sets the ad group.\n ad_group_ad.ad_group = ad_group_resource_name\n\n # Issues a mutate request to add an ad group ad.\n ad_group_ad_service: AdGroupAdServiceClient = client.get_service(\n \"AdGroupAdService\"\n )\n response: MutateAdGroupAdsResponse = (\n ad_group_ad_service.mutate_ad_group_ads(\n customer_id=customer_id, operations=[operation]\n )\n )\n\n resource_name: str = response.results[0].resource_name\n print(f\"Added an ad group ad with resource name: '{resource_name}'.\")https://github.com/googleads/google-ads-python/blob/d0595698b8a7de6cc00684b467462601037c9db9/examples/travel/add_things_to_do_ad.py#L258-L292\n \n```\n\n### Ruby\n\n```ruby\ndef add_ad_group_ad(client, customer_id, ad_group_resource)\n # Creates a new ad group ad and sets a travel ad info.\n ad_group_ad_operation = client.operation.create_resource.ad_group_ad do |aga|\n aga.ad = client.resource.ad do |ad|\n ad.travel_ad = client.resource.travel_ad_info\n end\n # Set the ad group ad to enabled. Setting this to paused will cause an error\n # for Things to Do campaigns. Pausing should happen at either the ad group\n # or campaign level.\n aga.status = :ENABLED\n\n # Set the ad group.\n aga.ad_group = ad_group_resource\n end\n\n # Issue a mutate request to add the ad group ad.\n ad_group_ad_service = client.service.ad_group_ad\n response = ad_group_ad_service.mutate_ad_group_ads(\n customer_id: customer_id,\n operations: [ad_group_ad_operation],\n )\n\n # Fetch the new ad group ad's resource name.\n ad_group_ad_resource = response.results.first.resource_name\n\n puts \"Added an ad group ad with resource name '#{ad_group_ad_resource}'.\"\nend \nhttps://github.com/googleads/google-ads-ruby/blob/2752563c7ffd15a4d2238116869f64aea3011cc3/examples/travel/add_things_to_do_ad.rb#L173-L199\n\n \n```\n\n### Perl\n\n```perl\nsub add_ad_group_ad {\n my ($api_client, $customer_id, $ad_group_resource_name) = @_;\n\n # Create an ad group ad and set a travel ad info.\n my $ad_group_ad = Google::Ads::GoogleAds::V21::Resources::AdGroupAd-\u003enew({\n # Set the ad group.\n adGroup =\u003e $ad_group_resource_name,\n ad =\u003e Google::Ads::GoogleAds::V21::Resources::Ad-\u003enew({\n travelAd =\u003e Google::Ads::GoogleAds::V21::Common::TravelAdInfo-\u003enew()}\n ),\n # Set the ad group to enabled. Setting this to paused will cause an error\n # for Things to do campaigns. Pausing should happen at either the ad group\n # or campaign level.\n status =\u003e Google::Ads::GoogleAds::V21::Enums::AdGroupAdStatusEnum::ENABLED\n });\n\n # Create an ad group ad operation.\n my $ad_group_ad_operation =\n Google::Ads::GoogleAds::V21::Services::AdGroupAdService::AdGroupAdOperation\n -\u003enew({create =\u003e $ad_group_ad});\n\n # Add the ad group ad.\n my $ad_group_ad_resource_name = $api_client-\u003eAdGroupAdService()-\u003emutate({\n customerId =\u003e $customer_id,\n operations =\u003e [$ad_group_ad_operation]})-\u003e{results}[0]{resourceName};\n\n printf \"Added an ad group ad with resource name: '%s'.\\n\",\n $ad_group_ad_resource_name;\n\n return $ad_group_ad_resource_name;\n}https://github.com/googleads/google-ads-perl/blob/9abffd69cd856633dfdcee5c636fe9cd0eb4b5ed/examples/travel/add_things_to_do_ad.pl#L211-L241\n \n```\n\n\u003cbr /\u003e"]]