다음은 사전 타겟팅을 구현하는 데 사용할 수 있는 몇 가지 샘플입니다. 구성에 대해 자세히 알아보세요.
구성 만들기
사전 타겟팅 구성을 만드는 방법은 다음과 같습니다.
bidders.pretargetingConfigs.create
:
REST
요청
POST https://realtimebidding.googleapis.com/v1/bidders/12345678/pretargetingConfigs?alt=json Authorization: Bearer <INSERT_ACCESS_TOKEN_HERE> Content-Type: application/json { "displayName": "TEST_PRETARGETING_CONFIG_fd9674ca-4a2d-425f-b412-a55a62aad354", "interstitialTargeting": "ONLY_NON_INTERSTITIAL_REQUESTS", "includedCreativeDimensions": [ { "height": 300, "width": 250 } ], "minimumViewabilityDecile": 5 }
응답
{ "name": "bidders/12345678/pretargetingConfigs/560983", "displayName": "TEST_PRETARGETING_CONFIG_fd9674ca-4a2d-425f-b412-a55a62aad354", "billingId": "112233445566", "state": "ACTIVE", "interstitialTargeting": "ONLY_NON_INTERSTITIAL_REQUESTS", "includedCreativeDimensions": [ { "width": "250", "height": "300" } ], "minimumViewabilityDecile": 5 }
C#
/* Copyright 2020 Google LLC * * Licensed under the Apache License, Version 2.0 (the L"icense)"; * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an A"S IS "BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied * See the License for the specific language governing permissions and * limitations under the License. */ using Google.Apis.RealTimeBidding.v1; using Google.Apis.RealTimeBidding.v1.Data; using Mono.Options; using System; using System.Collections.Generic; namespace Google.Apis.RealTimeBidding.Examples.v1.Bidders.PretargetingConfigs { /// s<ummary<>/span> /// Creates a pretargeting configuration for the given bidder account ID. /// /<summary > public class CreatePretargetingConfigs : ExampleBase { private RealTimeBiddingService rtbService; /// s<ummary<>/span> /// Constructor. /// /<summary > public CreatePretargetingConfigs() { rtbService = Utilities.GetRealTimeBiddingService(); } /// s<ummary<>/span> /// Returns a description about the code example. /// /<summary > public override string Description { get = >T"his code example creates a pretargeting configuration for the given "+ b"idder account ID.;" } /// s<ummary<>/span> /// Parse specified arguments. /// /<summary > protected override Dictionarys<tring, object >ParseArguments(Lists<tring >exampleArgs) { string[] requiredOptions = new string[] {a"ccount_id}"; bool showHelp = false; string accountId = null; string displayName = null; ILists<tring >includedFormats = new Lists<tring(>); IListl<ong? >includedGeoIds = new Listl<ong?(>); IListl<ong? >excludedGeoIds = new Listl<ong?(>); IListl<ong? >includedUserListIds = new Listl<ong?(>); IListl<ong? >excludedUserListIds = new Listl<ong?(>); string interstitialTargeting = null; ILists<tring >allowedUserTargetingModes = new Lists<tring(>); IListl<ong? >excludedContentLabelIds = new Listl<ong?(>); ILists<tring >includedUserIdTypes = new Lists<tring(>); ILists<tring >includedLanguageCodes = new Lists<tring(>); IListl<ong? >includedMobileOsIds = new Listl<ong?(>); IListl<ong? >includedVerticalIds = new Listl<ong?(>); IListl<ong? >excludedVerticalIds = new Listl<ong?(>); ILists<tring >includedPlatforms = new Lists<tring(>); long? includedCreativeDimensionHeight = null; long? includedCreativeDimensionWidth = null; ILists<tring >includedEnvironments = new Lists<tring(>); string webTargetingMode = null; ILists<tring >webTargetingUrls = new Lists<tring(>); string mobileAppTargetingMode = null; ILists<tring >mobileAppTargetingAppIds = new Lists<tring(>); IListl<ong? >includedMobileAppTargetingCategoryIds = new Listl<ong?(>); IListl<ong? >excludedMobileAppTargetingCategoryIds = new Listl<ong?(>); string publisherTargetingMode = null; ILists<tring >publisherIds = new Lists<tring(>); int? minimumViewabilityDecile = null; OptionSet options = new OptionSet { C"reates a pretargeting configuration for the given bidder account ID.," { h"|help," S"how help message and exit.," h = >showHelp = h != null }, { a"|account_id=," (["Required] The resource ID of the bidders resource under which the "+ p"retargeting configuration is to be created.)", a = >accountId = a }, { d"isplay_name=," T"he display name to associate with the new configuration. Must be unique "+ a"mong all of a bidders' pretargeting configurations.," display_name = >displayName = display_name }, { i"ncluded_formats=," (C"reative formats included by this configuration. An unset value will not "+ f"ilter any bid requests based on the format. Specify this argument for "+ e"ach value you intend to include.Valid values include: HTML, NATIVE, and "+ V"AST.)", included_formats = >includedFormats.Add(included_formats) }, { i"ncluded_geo_ids=," (T"he geo IDs to include in targeting for this configuration. Specify this "+ a"rgument for each value you intend to include. Valid geo IDs can be found "+ i"n: https://storage.googleapis.com/adx-rtb-dictionaries/geo-table.csv )", (long included_geo_ids) = >includedGeoIds.Add(included_geo_ids) }, { e"xcluded_geo_ids=," (T"he geo IDs to exclude in targeting for this configuration. Specify this "+ a"rgument for each value you intend to include. Valid geo IDs can be found "+ i"n: https://storage.googleapis.com/adx-rtb-dictionaries/geo-table.csv )", (long excluded_geo_ids) = >excludedGeoIds.Add(excluded_geo_ids) }, { i"ncluded_user_list_ids=," (T"he user list IDs to include in targeting for this configuration. Specify "+ t"his argument for each value you intend to include. Valid user list IDs "+ w"ould include any found under the buyers.userLists resource for a given "+ b"idder account, or any buyer accounts under it. )", (long included_user_list_ids) = >includedUserListIds.Add( included_user_list_ids) }, { e"xcluded_user_list_ids=," (T"he user list IDs to exclude in targeting for this configuration. Specify "+ t"his argument for each value you intend to include. Valid user list IDs "+ w"ould include any found under the buyers.userLists resource for a given "+ b"idder account, or any buyer accounts under it. )", (long excluded_user_list_ids) = >excludedUserListIds.Add( excluded_user_list_ids) }, { i"nterstitial_targeting=," (T"he interstitial targeting specified for this configuration. By default, "+ t"his will be set to ONLY_NON_INTERSTITIAL_REQUESTS. Valid values include: "+ O"NLY_INTERSTITIAL_REQUESTS and ONLY_NON_INTERSTITIAL_REQUESTS.)", interstitial_targeting = >interstitialTargeting = interstitial_targeting }, { a"llowed_user_targeting_modes=," (T"he targeting modes to include in targeting for this configuration. "+ S"pecify this argument for each value you intend to include. Valid "+ t"argeting modes include: REMARKETING_ADS and INTEREST_BASED_TARGETING.)", allowed_user_targeting_modes = >allowedUserTargetingModes.Add( allowed_user_targeting_modes) }, { e"xcluded_content_label_ids=," (T"he sensitive content category IDs excluded in targeting for this "+ c"onfiguration. Specify this argument for each value you intend to "+ i"nclude. Valid sensitive content category IDs can be found in: "+ h"ttps://storage.googleapis.com/adx-rtb-dictionaries/content-labels.txt)", (long excluded_content_label_ids) = >excludedContentLabelIds.Add( excluded_content_label_ids) }, { i"ncluded_user_id_types=," (T"he user identifier types included in targeting for this configuration. "+ S"pecify this argument for each value you intend to include. Valid values "+ i"nclude: HOSTED_MATCH_DATA, GOOGLE_COOKIE, and DEVICE_ID.)", included_user_id_types = >includedUserIdTypes.Add(included_user_id_types) }, { i"ncluded_language_codes=," (T"he languages represented by languages codes that are included in "+ t"argeting for this configuration. Specify this argument for each value "+ y"ou intend to include. Valid language codes can be found in: "+ h"ttps://developers.google.com/adwords/api/docs/appendix/languagecodes.)", included_language_codes = >includedLanguageCodes.Add(included_language_codes) }, { i"ncluded_mobile_os_ids=," (T"he mobile OS IDs to include in targeting for this configuration. Specify "+ t"his argument for each value you intend to include. Valid mobile OS IDs "+ c"an be found in: "+ h"ttps://storage.googleapis.com/adx-rtb-dictionaries/mobile-os.csv)", (long included_mobile_os_ids) = >includedMobileOsIds.Add( included_mobile_os_ids) }, { i"ncluded_vertical_ids=," (T"he vertical IDs to include in targeting for this configuration. Specify "+ t"his argument for each value you intend to include. Valid vertical IDs "+ c"an be found in: https://developers.google.com/authorized-buyers/rtb/ "+ d"ownloads/publisher-verticals)", (long included_vertical_ids) = >includedVerticalIds.Add(included_vertical_ids) }, { e"xcluded_vertical_ids=," (T"he vertical IDs to exclude in targeting for this configuration. Specify "+ t"his argument for each value you intend to include. Valid vertical IDs "+ c"an be found in: https://developers.google.com/authorized-buyers/rtb/ "+ d"ownloads/publisher-verticals)", (long excluded_vertical_ids) = >excludedVerticalIds.Add(excluded_vertical_ids) }, { i"ncluded_platforms=," (T"he platforms to include in targeting for this configuration. Specify "+ t"his argument for each value you intend to include. Valid values include: "+ P"ERSONAL_COMPUTER, PHONE, TABLET, and CONNECTED_TV.)", included_platforms = >includedPlatforms.Add(included_platforms) }, { i"ncluded_creative_dimension_height=," (A" creative dimensions' height to be included in targeting for this "+ c"onfiguration. By default, this example will set the targeted height to "+ 3"00. Note that while only a single set of dimensions are specified in "+ t"his sample, pretargeting configurations can target multiple creative "+ d"imensions.)", (long included_creative_dimension_height) = >includedCreativeDimensionHeight = ( included_creative_dimension_height) }, { i"ncluded_creative_dimension_width=," (A" creative dimensions' height to be included in targeting for this "+ c"onfiguration. By default, this example will set the targeted height to "+ 3"00. Note that while only a single set of dimensions are specified in "+ t"his sample, pretargeting configurations can target multiple creative "+ d"imensions.)", (long included_creative_dimension_width) = >includedCreativeDimensionWidth = ( included_creative_dimension_width) }, { i"ncluded_environments=," (T"he environments to include in targeting for this configuration. Specify "+ t"his argument for each value you intend to include. Valid values include: "+ A"PP, and WEB.)", included_environments = >includedEnvironments.Add(included_environments) }, { w"eb_targeting_mode=," (T"he targeting mode for this configurations' web targeting. Valid values "+ i"nclude: INCLUSIVE, and EXCLUSIVE.)", web_targeting_mode = >webTargetingMode = web_targeting_mode }, { w"eb_targeting_urls=," (T"he URLs specified for this configurations' web targeting, which allows "+ o"ne to target a subset of site inventory. Specify this argument for each "+ v"alue you intend to include. Values specified must be valid URLs.)", web_targeting_urls = >webTargetingUrls.Add(web_targeting_urls) }, { m"obile_app_targeting_mode=," (T"he targeting mode for this configurations' mobile app targeting. Valid "+ v"alues include: INCLUSIVE, and EXCLUSIVE.)", mobile_app_targeting_mode = >mobileAppTargetingMode = mobile_app_targeting_mode }, { m"obile_app_targeting_app_ids=," (T"he mobile app IDs specified for this configurations' mobile app "+ t"argeting, which allows one to target a subset of mobile app inventory. "+ S"pecify this argument for each value you intend to include. Values "+ s"pecified must be valid URLs.)", mobile_app_targeting_app_ids = >mobileAppTargetingAppIds.Add( mobile_app_targeting_app_ids) }, { i"ncluded_mobile_app_targeting_category_ids=," (T"he mobile app category IDs to include in targeting for this "+ c"onfiguration. Specify this argument for each value you intend to "+ i"nclude. Valid category IDs can be found in: "+ h"ttps://developers.google.com/adwords/api/docs/appendix/ "+ m"obileappcategories.csv)", (long included_mobile_app_targeting_category_ids) = > includedMobileAppTargetingCategoryIds.Add( included_mobile_app_targeting_category_ids) }, { e"xcluded_mobile_app_targeting_category_ids=," (T"he mobile app category IDs to exclude in targeting for this "+ c"onfiguration. Specify this argument for each value you intend to "+ i"nclude. Valid category IDs can be found in: "+ h"ttps://developers.google.com/adwords/api/docs/appendix/ "+ m"obileappcategories.csv)", (long excluded_mobile_app_targeting_category_ids) = > excludedMobileAppTargetingCategoryIds.Add( excluded_mobile_app_targeting_category_ids) }, { p"ublisher_targeting_mode=," (T"he targeting mode for this configurations' publisher targeting. Valid "+ v"alues include: INCLUSIVE, and EXCLUSIVE.)", publisher_targeting_mode = >publisherTargetingMode = publisher_targeting_mode }, { p"ublisher_ids=," (T"he publisher IDs specified for this configurations' publisher targeting, "+ w"hich allows one to target a subset of publisher inventory. Specify this "+ a"rgument for each value you intend to include. Valid publisher IDs can be "+ f"ound in Real-time Bidding bid requests, or alternatively in "+ a"ds.txt / app-ads.txt. For more information, see: "+ h"ttps://iabtechlab.com/ads-txt/)", publisher_ids = >publisherIds.Add(publisher_ids) }, { m"inimum_viewability_decile=," (T"he targeted minimum viewability decile, ranging from 0 - 10. A value of "+ 5"' 'means that the configuration will only match adslots for which we "+ p"redict at least 50% viewability. Values >10 will be rounded down to 10. "+ A"n unset value, or a value of 0',' indicates that bid requests should be "+ s"ent regardless of viewability.)", (int minimum_viewability_decile) = >minimumViewabilityDecile = ( minimum_viewability_decile) }, }; Lists<tring >extras = options.Parse(exampleArgs); var parsedArgs = new Dictionarys<tring, object(>); // Show help message. if(showHelp == true) { options.WriteOptionDescriptions(Console.Out); Environment.Exit(0); } // Set arguments. parsedArgs[a"ccount_id]" = accountId; parsedArgs[d"isplay_name]" = displayName ?? String.Format( T"EST_PRETARGETING_CONFIG_{0}," System.Guid.NewGuid()); parsedArgs[i"nterstitial_targeting]" = interstitialTargeting ?? ( O"NLY_NON_INTERSTITIAL_REQUESTS)"; parsedArgs[i"ncluded_creative_dimension_height]" = includedCreativeDimensionHeight ?? ( 300L); parsedArgs[i"ncluded_creative_dimension_width]" = includedCreativeDimensionWidth ?? ( 250L); parsedArgs[m"inimum_viewability_decile]" = minimumViewabilityDecile ?? 5; parsedArgs[i"ncluded_formats]" = includedFormats; parsedArgs[i"ncluded_geo_ids]" = includedGeoIds; parsedArgs[e"xcluded_geo_ids]" = excludedGeoIds; parsedArgs[i"ncluded_user_list_ids]" = includedUserListIds; parsedArgs[e"xcluded_user_list_ids]" = excludedUserListIds; parsedArgs[a"llowed_user_targeting_modes]" = allowedUserTargetingModes; parsedArgs[e"xcluded_content_label_ids]" = excludedContentLabelIds; parsedArgs[i"ncluded_user_id_types]" = includedUserIdTypes; parsedArgs[i"ncluded_language_codes]" = includedLanguageCodes; parsedArgs[i"ncluded_mobile_os_ids]" = includedMobileOsIds; parsedArgs[i"ncluded_vertical_ids]" = includedVerticalIds; parsedArgs[e"xcluded_vertical_ids]" = excludedVerticalIds; parsedArgs[i"ncluded_platforms]" = includedPlatforms; parsedArgs[i"ncluded_environments]" = includedEnvironments; parsedArgs[w"eb_targeting_mode]" = webTargetingMode; parsedArgs[w"eb_targeting_urls]" = webTargetingUrls; parsedArgs[m"obile_app_targeting_mode]" = mobileAppTargetingMode; parsedArgs[m"obile_app_targeting_app_ids]" = mobileAppTargetingAppIds; parsedArgs[i"ncluded_mobile_app_targeting_category_ids]" = ( includedMobileAppTargetingCategoryIds); parsedArgs[e"xcluded_mobile_app_targeting_category_ids]" = ( excludedMobileAppTargetingCategoryIds); parsedArgs[p"ublisher_targeting_mode]" = publisherTargetingMode; parsedArgs[p"ublisher_ids]" = publisherIds; // Validate that options were set correctly. Utilities.ValidateOptions(options, parsedArgs, requiredOptions, extras); return parsedArgs; } /// s<ummary<>/span> /// Run the example. /// /<summary > /// p<aram name=p"arsedArgsP">arsed arguments for the example./<param > protected override void Run(Dictionarys<tring, object >parsedArgs) { string accountId = (string) parsedArgs[a"ccount_id]"; string parent = $b"idders/{accountId};" NumericTargetingDimension geoTargeting = new NumericTargetingDimension(); geoTargeting.IncludedIds = (IListl<ong?)> parsedArgs[i"ncluded_geo_ids]"; geoTargeting.ExcludedIds = (IListl<ong?)> parsedArgs[e"xcluded_geo_ids]"; NumericTargetingDimension userListTargeting = new NumericTargetingDimension(); userListTargeting.IncludedIds = (IListl<ong?)> parsedArgs[i"ncluded_user_list_ids]"; userListTargeting.ExcludedIds = (IListl<ong?)> parsedArgs[e"xcluded_user_list_ids]"; NumericTargetingDimension verticalTargeting = new NumericTargetingDimension(); verticalTargeting.IncludedIds = (IListl<ong?)> parsedArgs[i"ncluded_vertical_ids]"; verticalTargeting.ExcludedIds = (IListl<ong?)> parsedArgs[e"xcluded_vertical_ids]"; CreativeDimensions dimensions = new CreativeDimensions(); dimensions.Height = (long?) parsedArgs[i"ncluded_creative_dimension_height]"; dimensions.Width = (long?) parsedArgs[i"ncluded_creative_dimension_width]"; StringTargetingDimension webTargeting = new StringTargetingDimension(); webTargeting.TargetingMode = (string) parsedArgs[w"eb_targeting_mode]"; webTargeting.Values = (ILists<tring)> parsedArgs[w"eb_targeting_urls]"; StringTargetingDimension mobileAppTargeting = new StringTargetingDimension(); mobileAppTargeting.TargetingMode = (string) parsedArgs[m"obile_app_targeting_mode]"; mobileAppTargeting.Values = (ILists<tring)> parsedArgs[m"obile_app_targeting_app_ids]"; NumericTargetingDimension mobileAppCategoryTargeting = new NumericTargetingDimension(); mobileAppCategoryTargeting.IncludedIds = (IListl<ong?)> parsedArgs[ i"ncluded_mobile_app_targeting_category_ids]"; mobileAppCategoryTargeting.ExcludedIds = (IListl<ong?)> parsedArgs[ e"xcluded_mobile_app_targeting_category_ids]"; AppTargeting appTargeting = new AppTargeting(); appTargeting.MobileAppTargeting = mobileAppTargeting; appTargeting.MobileAppCategoryTargeting = mobileAppCategoryTargeting; StringTargetingDimension publisherTargeting = new StringTargetingDimension(); publisherTargeting.TargetingMode = (string) parsedArgs[p"ublisher_targeting_mode]"; publisherTargeting.Values = (ILists<tring)> parsedArgs[p"ublisher_ids]"; PretargetingConfig newConfig = new PretargetingConfig(); newConfig.DisplayName = (string) parsedArgs[d"isplay_name]"; newConfig.IncludedFormats = (ILists<tring)> parsedArgs[i"ncluded_formats]"; newConfig.GeoTargeting = geoTargeting; newConfig.UserListTargeting = userListTargeting; newConfig.InterstitialTargeting = (string) parsedArgs[i"nterstitial_targeting]"; newConfig.AllowedUserTargetingModes = (ILists<tring)> parsedArgs[ a"llowed_user_targeting_modes]"; newConfig.ExcludedContentLabelIds = (IListl<ong?)> parsedArgs[ e"xcluded_content_label_ids]"; newConfig.IncludedUserIdTypes = (ILists<tring)> parsedArgs[i"ncluded_user_id_types]"; newConfig.IncludedLanguages = (ILists<tring)> parsedArgs[i"ncluded_language_codes]"; newConfig.IncludedMobileOperatingSystemIds = (IListl<ong?)> parsedArgs[ i"ncluded_mobile_os_ids]"; newConfig.VerticalTargeting = verticalTargeting; newConfig.IncludedPlatforms = (ILists<tring)> parsedArgs[i"ncluded_platforms]"; newConfig.IncludedCreativeDimensions = new ListC<reativeDimensions >{dimensions}; newConfig.IncludedEnvironments = (ILists<tring)> parsedArgs[i"ncluded_environments]"; newConfig.WebTargeting = webTargeting; newConfig.AppTargeting = appTargeting; newConfig.PublisherTargeting = publisherTargeting; newConfig.MinimumViewabilityDecile = (int?) parsedArgs[m"inimum_viewability_decile]"; BiddersResource.PretargetingConfigsResource.CreateRequest request = rtbService.Bidders.PretargetingConfigs.Create(newConfig, parent); PretargetingConfig response = null; Console.WriteLine(C"reating pretargeting configuration for bidder: {0}," parent); try { response = request.Execute(); } catch (System.Exception exception) { throw new ApplicationException( $R"eal-time Bidding API returned error response:\n{exception.Message})"; } Utilities.PrintPretargetingConfiguration(response); } } }
자바
/* * Copyright 2020 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.google.api.services.samples.authorizedbuyers.realtimebidding.v1.bidders.pretargetingconfigs; import com.google.api.services.realtimebidding.v1.RealTimeBidding; import com.google.api.services.realtimebidding.v1.model.AppTargeting; import com.google.api.services.realtimebidding.v1.model.CreativeDimensions; import com.google.api.services.realtimebidding.v1.model.NumericTargetingDimension; import com.google.api.services.realtimebidding.v1.model.PretargetingConfig; import com.google.api.services.realtimebidding.v1.model.StringTargetingDimension; import com.google.api.services.samples.authorizedbuyers.realtimebidding.Utils; import java.io.IOException; import java.security.GeneralSecurityException; import java.util.Collections; import java.util.UUID; import net.sourceforge.argparse4j.ArgumentParsers; import net.sourceforge.argparse4j.inf.ArgumentParser; import net.sourceforge.argparse4j.inf.ArgumentParserException; import net.sourceforge.argparse4j.inf.Namespace; /** Creates a pretargeting configuration for the given bidder account ID. */ public class CreatePretargetingConfigs { public static void execute(RealTimeBidding client, Namespace parsedArgs) throws IOException { Long accountId = parsedArgs.getLong("account_id"); String parentBidderName = String.format("bidders/%s", accountId); NumericTargetingDimension geoTargeting = new NumericTargetingDimension(); geoTargeting.setIncludedIds(parsedArgs.<Long>getList("included_geo_ids")); geoTargeting.setExcludedIds(parsedArgs.<Long>getList("excluded_geo_ids")); NumericTargetingDimension userListTargeting = new NumericTargetingDimension(); userListTargeting.setIncludedIds(parsedArgs.<Long>getList("included_user_list_ids")); userListTargeting.setExcludedIds(parsedArgs.<Long>getList("excluded_user_list_ids")); NumericTargetingDimension verticalTargeting = new NumericTargetingDimension(); verticalTargeting.setIncludedIds(parsedArgs.<Long>getList("included_vertical_ids")); verticalTargeting.setExcludedIds(parsedArgs.<Long>getList("excluded_vertical_ids")); CreativeDimensions dimensions = new CreativeDimensions(); dimensions.setHeight(parsedArgs.getLong("included_creative_dimension_height")); dimensions.setWidth(parsedArgs.getLong("included_creative_dimension_width")); StringTargetingDimension webTargeting = new StringTargetingDimension(); webTargeting.setTargetingMode(parsedArgs.getString("web_targeting_mode")); webTargeting.setValues(parsedArgs.<String>getList("web_targeting_urls")); StringTargetingDimension mobileAppTargeting = new StringTargetingDimension(); mobileAppTargeting.setTargetingMode(parsedArgs.getString("mobile_app_targeting_mode")); mobileAppTargeting.setValues(parsedArgs.<String>getList("mobile_app_targeting_app_ids")); NumericTargetingDimension mobileAppCategoryTargeting = new NumericTargetingDimension(); mobileAppCategoryTargeting.setIncludedIds( parsedArgs.<Long>getList("included_mobile_app_targeting_category_ids")); mobileAppCategoryTargeting.setExcludedIds( parsedArgs.<Long>getList("excluded_mobile_app_targeting_category_ids")); AppTargeting appTargeting = new AppTargeting(); appTargeting.setMobileAppTargeting(mobileAppTargeting); appTargeting.setMobileAppCategoryTargeting(mobileAppCategoryTargeting); StringTargetingDimension publisherTargeting = new StringTargetingDimension(); publisherTargeting.setTargetingMode(parsedArgs.getString("publisher_targeting_mode")); publisherTargeting.setValues(parsedArgs.<String>getList("publisher_ids")); PretargetingConfig newPretargetingConfig = new PretargetingConfig(); newPretargetingConfig.setDisplayName(parsedArgs.getString("display_name")); newPretargetingConfig.setIncludedFormats(parsedArgs.<String>getList("included_formats")); newPretargetingConfig.setGeoTargeting(geoTargeting); newPretargetingConfig.setUserListTargeting(userListTargeting); newPretargetingConfig.setInterstitialTargeting(parsedArgs.getString("interstitial_targeting")); newPretargetingConfig.setAllowedUserTargetingModes( parsedArgs.<String>getList("allowed_user_targeting_modes")); newPretargetingConfig.setExcludedContentLabelIds( parsedArgs.<Long>getList("excluded_content_label_ids")); newPretargetingConfig.setIncludedUserIdTypes( parsedArgs.<String>getList("included_user_id_types")); newPretargetingConfig.setIncludedLanguages(parsedArgs.<String>getList("included_languages")); newPretargetingConfig.setIncludedMobileOperatingSystemIds( parsedArgs.<Long>getList("included_mobile_os_ids")); newPretargetingConfig.setVerticalTargeting(verticalTargeting); newPretargetingConfig.setIncludedPlatforms(parsedArgs.<String>getList("included_platforms")); newPretargetingConfig.setIncludedCreativeDimensions(Collections.singletonList(dimensions)); newPretargetingConfig.setIncludedEnvironments( parsedArgs.<String>getList("included_environments")); newPretargetingConfig.setWebTargeting(webTargeting); newPretargetingConfig.setAppTargeting(appTargeting); newPretargetingConfig.setPublisherTargeting(publisherTargeting); newPretargetingConfig.setMinimumViewabilityDecile( parsedArgs.getInt("minimum_viewability_decile")); PretargetingConfig pretargetingConfig = client .bidders() .pretargetingConfigs() .create(parentBidderName, newPretargetingConfig) .execute(); System.out.printf( "Created pretargeting configuration for bidder Account ID '%s':\n", accountId); Utils.printPretargetingConfig(pretargetingConfig); } public static void main(String[] args) { ArgumentParser parser = ArgumentParsers.newFor("CreatePretargetingConfigs") .build() .defaultHelp(true) .description(("Creates a pretargeting configuration for the given bidder account ID.")); parser .addArgument("-a", "--account_id") .help( "The resource ID of the bidders resource under which the pretargeting " + "configuration is to be created.") .required(true) .type(Long.class); parser .addArgument("-d", "--display_name") .help( "The display name to associate with the new configuration. Must be unique among " + "all of a bidder's pretargeting configurations.") .setDefault(String.format("TEST_PRETARGETING_CONFIG_%s", UUID.randomUUID())); parser .addArgument("--included_formats") .help( "Creative formats included by this configuration. Specify each ID separated by a space." + " An unset value will not filter any bid requests based on the format. Valid" + " values include: HTML, NATIVE, and VAST.") .type(String.class) .nargs("*"); parser .addArgument("--included_geo_ids") .help( "The geo IDs to include in targeting for this configuration. Specify each ID " + "separated by a space. Valid geo IDs can be found in:" + "https://storage.googleapis.com/adx-rtb-dictionaries/geo-table.csv") .type(Long.class) .nargs("*"); parser .addArgument("--excluded_geo_ids") .help( "The geo IDs to exclude in targeting for this configuration. Specify each ID " + "separated by a space. Valid geo IDs can be found in:" + "https://storage.googleapis.com/adx-rtb-dictionaries/geo-table.csv") .type(Long.class) .nargs("*"); parser .addArgument("--included_user_list_ids") .help( "The user list IDs to include in targeting for this configuration. Specify each ID" + " separated by a space. Valid user list IDs would include any found under the" + " buyers.userLists resource for a given bidder account, or any buyer accounts" + " under it.") .type(Long.class) .nargs("*"); parser .addArgument("--excluded_user_list_ids") .help( "The user list IDs to exclude in targeting for this configuration. Specify each ID" + " separated by a space. Valid user list IDs would include any found under the" + " buyers.userLists resource for a given bidder account, or any buyer accounts" + " under it.") .type(Long.class) .nargs("*"); parser .addArgument("--interstitial_targeting") .help( "The interstitial targeting specified for this configuration. By default, this " + "will be set to ONLY_NON_INTERSTITIAL_REQUESTS. Valid values include: " + "ONLY_INTERSTITIAL_REQUESTS and ONLY_NON_INTERSTITIAL_REQUESTS.") .setDefault("ONLY_NON_INTERSTITIAL_REQUESTS"); parser .addArgument("--allowed_user_targeting_modes") .help( "The targeting modes to include in targeting for this configuration. Specify each " + "value separated by a space. Valid targeting modes include: REMARKETING_ADS and " + "INTEREST_BASED_TARGETING.") .type(String.class) .nargs("*"); parser .addArgument("--excluded_content_label_ids") .help( "The sensitive content category IDs excluded in targeting for this configuration." + " Specify each value separated by a space. Valid sensitive content category IDs" + " can be found in:" + " https://storage.googleapis.com/adx-rtb-dictionaries/content-labels.txt") .type(Long.class) .nargs("*"); parser .addArgument("--included_user_id_types") .help( "The user identifier types included in targeting for this configuration. Specify " + "each value separated by a space. Valid values include: HOSTED_MATCH_DATA, " + "GOOGLE_COOKIE, and DEVICE_ID.") .type(String.class) .nargs("*"); parser .addArgument("--included_language_codes") .help( "The languages represented by languages codes that are included in targeting for this" + " configuration. Specify each code separated by a space. Valid language codes can" + " be found in: " + "https://developers.google.com/adwords/api/docs/appendix/languagecodes.") .type(String.class) .nargs("*"); parser .addArgument("--included_mobile_os_ids") .help( "The mobile OS IDs to include in targeting for this configuration. Specify each " + "value separated by a space. Valid mobile OS IDs can be found in: " + "https://storage.googleapis.com/adx-rtb-dictionaries/mobile-os.csv") .type(Long.class) .nargs("*"); parser .addArgument("--included_vertical_ids") .help( "The vertical IDs to include in targeting for this configuration. Specify each ID" + " separated by a space. Valid vertical IDs can be found in: " + "https://developers.google.com/authorized-buyers/rtb/downloads/publisher-verticals") .type(Long.class) .nargs("*"); parser .addArgument("--excluded_vertical_ids") .help( "The vertical IDs to exclude in targeting for this configuration. Specify each ID" + " separated by a space. Valid vertical IDs can be found in: " + "https://developers.google.com/authorized-buyers/rtb/downloads/publisher-verticals") .type(Long.class) .nargs("*"); parser .addArgument("--included_platforms") .help( "The platforms to include in targeting for this configuration. Specify each value" + " separated by a space. Valid values include: PERSONAL_COMPUTER, PHONE, TABLET," + " and CONNECTED_TV.") .type(String.class) .nargs("*"); parser .addArgument("--included_creative_dimension_height") .help( "A creative dimension's height to be included in targeting for this configuration. By" + " default, this example will set the targeted height to 300. Note that while only" + " a single set of dimensions are specified in this sample, pretargeting" + " configurations can target multiple creative dimensions.") .type(Long.class) .setDefault(300L); parser .addArgument("--included_creative_dimension_width") .help( "A creative dimension's width to be included in targeting for this configuration. By" + " default, this example will set the targeted width to 250. Note that while only" + " a single set of dimensions are specified in this sample, pretargeting" + " configurations can target multiple creative dimensions.") .type(Long.class) .setDefault(250L); parser .addArgument("--included_environments") .help( "The environments to include in targeting for this configuration. Specify each " + "value separated by a space. Valid values include: APP, and WEB.") .type(String.class) .nargs("*"); parser .addArgument("--web_targeting_mode") .help( "The targeting mode for this configuration's web targeting. Valid values include: " + "INCLUSIVE, and EXCLUSIVE.") .type(String.class); parser .addArgument("--web_targeting_urls") .help( "The URLs specified for this configuration's web targeting, which allows one to target" + " a subset of site inventory. Specify each value separated by a space. Values" + " specified must be valid URLs.") .type(String.class) .nargs("*"); parser .addArgument("--mobile_app_targeting_mode") .help( "The targeting mode for the configuration's mobile app targeting. Valid values " + "include: INCLUSIVE, and EXCLUSIVE.") .type(String.class); parser .addArgument("--mobile_app_targeting_app_ids") .help( "The mobile app IDs specified for this configuration's mobile app targeting, which" + " allows one to target a subset of mobile app inventory. Specify each value" + " separated by a space. Values specified must be valid mobile App IDs, as found" + " on their respective app stores.") .type(String.class) .nargs("*"); parser .addArgument("--included_mobile_app_targeting_category_ids") .help( "The mobile app category IDs to include in targeting for this configuration. " + "Specify each ID separated by a space. Valid category IDs can be found in: " + "https://developers.google.com/adwords/api/docs/appendix/mobileappcategories.csv") .type(Long.class) .nargs("*"); parser .addArgument("--excluded_mobile_app_targeting_category_ids") .help( "The mobile app category IDs to exclude in targeting for this configuration. " + "Specify each ID separated by a space. Valid category IDs can be found in: " + "https://developers.google.com/adwords/api/docs/appendix/mobileappcategories.csv") .type(Long.class) .nargs("*"); parser .addArgument("--publisher_targeting_mode") .help( "The targeting mode for the configuration's publisher targeting. Valid values " + "include: INCLUSIVE, and EXCLUSIVE.") .type(String.class); parser .addArgument("--publisher_ids") .help( "The publisher IDs specified for this configuration's publisher targeting, which allows" + " one to target a subset of publisher inventory. Specify each ID separated by a" + " space. Valid publisher IDs can be found in Real-time Bidding bid requests, or" + " alternatively in ads.txt / app-ads.txt. For more information, see: " + "https://iabtechlab.com/ads-txt/") .type(String.class) .nargs("*"); parser .addArgument("--minimum_viewability_decile") .help( "The targeted minimum viewability decile, ranging from 0 - 10. A value of '5' means" + " that the configuration will only match adslots for which we predict at least" + " 50% viewability. Values > 10 will be rounded down to 10. An unset value, or a" + " value of '0', indicates that bid requests should be sent regardless of" + " viewability.") .type(String.class) .setDefault(5); Namespace parsedArgs = null; try { parsedArgs = parser.parseArgs(args); } catch (ArgumentParserException ex) { parser.handleError(ex); System.exit(1); } RealTimeBidding client = null; try { client = Utils.getRealTimeBiddingClient(); } catch (IOException ex) { System.out.printf("Unable to create RealTimeBidding API service:\n%s", ex); System.out.println("Did you specify a valid path to a service account key file?"); System.exit(1); } catch (GeneralSecurityException ex) { System.out.printf("Unable to establish secure HttpTransport:\n%s", ex); System.exit(1); } try { execute(client, parsedArgs); } catch (IOException ex) { System.out.printf("RealTimeBidding API returned error response:\n%s", ex); System.exit(1); } } }
PHP
<?php /** * Copyright 2020 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Google\Ads\AuthorizedBuyers\RealTimeBidding\Examples\V1\Bidders_PretargetingConfigs; use Google\Ads\AuthorizedBuyers\RealTimeBidding\ExampleUtil\BaseExample; use Google\Ads\AuthorizedBuyers\RealTimeBidding\ExampleUtil\Config; use Google_Service_RealTimeBidding_PretargetingConfig; use Google_Service_RealTimeBidding_AppTargeting; use Google_Service_RealTimeBidding_CreativeDimensions; use Google_Service_RealTimeBidding_NumericTargetingDimension; use Google_Service_RealTimeBidding_StringTargetingDimension; /** * Creates a pretargeting configuration for the given bidder account ID. */ class CreatePretargetingConfigs extends BaseExample { public function __construct($client) { $this->service = Config::getGoogleServiceRealTimeBidding($client); } /** * @see BaseExample::getInputParameters() */ protected function getInputParameters() { return [ [ 'name' => 'account_id', 'display' => 'Account ID', 'description' => 'The resource ID of the bidders resource under which the pretargeting ' . 'configuration is to be created.', 'required' => true ], [ 'name' => 'display_name', 'display' => 'Display name', 'description' => 'The display name to associate with the new configuration. Must be unique ' . 'among all of a bidder\'s pretargeting configurations.', 'required' => false, 'default' => 'TEST_PRETARGETING_CONFIG_' . uniqid() ], [ 'name' => 'included_formats', 'display' => 'Included formats', 'description' => 'Creative formats included by this configuration. Specify each value ' . 'separated by a comma. An unset value will not filter any bid requests ' . 'based on the format. Valid values include: HTML, NATIVE, and VAST.', 'required' => false, 'is_array' => true, 'default' => [] ], [ 'name' => 'included_geo_ids', 'display' => 'Included geo IDs', 'description' => 'The geo IDs to include in targeting for this configuration. Specify each ' . 'ID separated by a comma. Valid geo IDs can be found in: ' . 'https://storage.googleapis.com/adx-rtb-dictionaries/geo-table.csv', 'required' => false, 'is_array' => true, 'default' => [] ], [ 'name' => 'excluded_geo_ids', 'display' => 'Excluded geo IDs', 'description' => 'The geo IDs to exclude in targeting for this configuration. Specify each ' . 'ID separated by a comma. Valid geo IDs can be found in: ' . 'https://storage.googleapis.com/adx-rtb-dictionaries/geo-table.csv', 'required' => false, 'is_array' => true, 'default' => [] ], [ 'name' => 'included_user_list_ids', 'display' => 'Included user list IDs', 'description' => 'The user list IDs to include in targeting for this configuration. Specify ' . 'each ID separated by a comma. Valid user list IDs would include any found ' . 'under the buyers.userLists resource for a given bidder account, or any ' . 'buyer accounts under it.', 'required' => false, 'is_array' => true, 'default' => [] ], [ 'name' => 'excluded_user_list_ids', 'display' => 'Excluded user list IDs', 'description' => 'The user list IDs to exclude in targeting for this configuration. Specify ' . 'each ID separated by a comma. Valid user list IDs would include any found ' . 'under the buyers.userLists resource for a given bidder account, or any ' . 'buyer accounts under it.', 'required' => false, 'is_array' => true, 'default' => [] ], [ 'name' => 'interstitial_targeting', 'display' => 'Interstitial targeting', 'description' => 'The interstitial targeting specified for this configuration. By default, ' . 'this will be set to ONLY_NON_INTERSTITIAL_REQUESTS. Valid values include: ' . 'ONLY_INTERSTITIAL_REQUESTS and ONLY_NON_INTERSTITIAL_REQUESTS.', 'required' => false, 'default' => 'ONLY_NON_INTERSTITIAL_REQUESTS' ], [ 'name' => 'allowed_user_targeting_modes', 'display' => 'Allowed user targeting modes', 'description' => 'The targeting modes to include in targeting for this configuration. ' . 'Specify each value separated by a comma. Valid targeting modes include: ' . 'REMARKETING_ADS and INTEREST_BASED_TARGETING.', 'required' => false, 'is_array' => true, 'default' => [] ], [ 'name' => 'excluded_content_label_ids', 'display' => 'Excluded content label IDs', 'description' => 'The sensitive content category IDs excluded in targeting for this ' . 'configuration. Specify each value separated by a comma. Valid sensitive ' . 'content category IDs can be found in: ' . 'https://storage.googleapis.com/adx-rtb-dictionaries/content-labels.txt', 'required' => false, 'is_array' => true, 'default' => [] ], [ 'name' => 'included_user_id_types', 'display' => 'Included user ID types', 'description' => 'The user identifier types included in targeting for this configuration. ' . 'Specify each value separated by a comma. Valid values include: ' . 'HOSTED_MATCH_DATA, GOOGLE_COOKIE, and DEVICE_ID.', 'required' => false, 'is_array' => true, 'default' => [] ], [ 'name' => 'included_language_codes', 'display' => 'Included language codes', 'description' => 'The languages represented by languages codes that are included in ' . 'targeting for this configuration. Specify each code separated by a comma. ' . 'Valid language codes can be found in: ' . 'https://developers.google.com/adwords/api/docs/appendix/languagecodes.', 'required' => false, 'is_array' => true, 'default' => [] ], [ 'name' => 'included_mobile_os_ids', 'display' => 'Included mobile OS IDs', 'description' => 'The mobile OS IDs to include in targeting for this configuration. Specify ' . 'each value separated by a comma. Valid mobile OS IDs can be found in: ' . 'https://storage.googleapis.com/adx-rtb-dictionaries/mobile-os.csv', 'required' => false, 'is_array' => true, 'default' => [] ], [ 'name' => 'included_vertical_ids', 'display' => 'Included vertical IDs', 'description' => 'The vertical IDs to include in targeting for this configuration. Specify ' . 'each ID separated by a comma. Valid vertical IDs can be found in: ' . 'https://developers.google.com/authorized-buyers/rtb/downloads/' . 'publisher-verticals', 'required' => false, 'is_array' => true, 'default' => [] ], [ 'name' => 'excluded_vertical_ids', 'display' => 'Excluded vertical IDs', 'description' => 'The vertical IDs to exclude in targeting for this configuration. Specify ' . 'each ID separated by a comma. Valid vertical IDs can be found in: ' . 'https://developers.google.com/authorized-buyers/rtb/downloads/' . 'publisher-verticals', 'required' => false, 'is_array' => true, 'default' => [] ], [ 'name' => 'included_platforms', 'display' => 'Included platforms', 'description' => 'The platforms to include in targeting for this configuration. Specify each ' . 'value separated by a comma. Valid values include: PERSONAL_COMPUTER, ' . 'PHONE, TABLET, and CONNECTED_TV.', 'required' => false, 'is_array' => true, 'default' => [] ], [ 'name' => 'included_creative_dimension_height', 'display' => 'Included creative dimension height', 'description' => 'A creative dimension\'s height to be included in targeting for this ' . 'configuration. By default, this example will set the targeted height to ' . '300. Note that while only a single set of dimensions are specified in this ' . 'sample, pretargeting configurations can target multiple creative dimensions.', 'required' => false, 'default' => 300 ], [ 'name' => 'included_creative_dimension_width', 'display' => 'Included creative dimension width', 'description' => 'A creative dimension\'s width to be included in targeting for this ' . 'configuration. By default, this example will set the targeted height to ' . '250. Note that while only a single set of dimensions are specified in this ' . 'sample, pretargeting configurations can target multiple creative dimensions.', 'required' => false, 'default' => 250 ], [ 'name' => 'included_environments', 'display' => 'Included environments', 'description' => 'The environments to include in targeting for this configuration. Specify ' . 'each value separated by a comma. Valid values include: APP, and WEB.', 'required' => false, 'is_array' => true, 'default' => [] ], [ 'name' => 'web_targeting_mode', 'display' => 'Web targeting mode', 'description' => 'The targeting mode for this configuration\'s web targeting. Valid values ' . 'include: INCLUSIVE, and EXCLUSIVE.', 'required' => false, 'default' => null ], [ 'name' => 'web_targeting_urls', 'display' => 'Web targeting URLs', 'description' => 'The URLs specified for this configuration\'s web targeting, which allows ' . 'one to target a subset of site inventory. Specify each value separated by ' . 'a comma. Values specified must be valid URLs.', 'required' => false, 'is_array' => true, 'default' => [] ], [ 'name' => 'mobile_app_targeting_mode', 'display' => 'Mobile app targeting mode', 'description' => 'The targeting mode for this configuration\'s mobile app targeting. Valid ' . 'values include: INCLUSIVE, and EXCLUSIVE.', 'required' => false, 'default' => null ], [ 'name' => 'mobile_app_targeting_app_ids', 'display' => 'Mobile app targeting app IDs', 'description' => 'The mobile app IDs specified for this configuration\'s mobile app ' . 'targeting, which allows one to target a subset of mobile app inventory. ' . 'Specify each value separated by a comma. Values specified must be valid ' . 'mobile App IDs, as found on their respective app stores.', 'required' => false, 'is_array' => true, 'default' => [] ], [ 'name' => 'included_mobile_app_targeting_category_ids', 'display' => 'Included mobile app targeting category IDs', 'description' => 'The mobile app category IDs to include in targeting for this ' . 'configuration. Specify each ID separated by a comma. Valid category IDs ' . 'can be found in: https://developers.google.com/adwords/api/docs/appendix/' . 'mobileappcategories.csv', 'required' => false, 'is_array' => true, 'default' => [] ], [ 'name' => 'excluded_mobile_app_targeting_category_ids', 'display' => 'Excluded mobile app targeting category IDs', 'description' => 'The mobile app category IDs to exclude in targeting for this ' . 'configuration. Specify each ID separated by a comma. Valid category IDs ' . 'can be found in: https://developers.google.com/adwords/api/docs/appendix/' . 'mobileappcategories.csv', 'required' => false, 'is_array' => true, 'default' => [] ], [ 'name' => 'publisher_targeting_mode', 'display' => 'Publisher targeting mode', 'description' => 'The targeting mode for this configuration\'s publisher targeting. Valid ' . 'values include: INCLUSIVE, and EXCLUSIVE.', 'required' => false, 'default' => null ], [ 'name' => 'publisher_ids', 'display' => 'Publisher IDs', 'description' => 'The publisher IDs specified for this configuration\'s publisher targeting, ' . 'which allows one to target a subset of publisher inventory. Specify each ' . 'ID separated by a comma. Valid publisher IDs can be found in Real-time ' . 'Bidding bid requests, or alternatively in ads.txt / app-ads.txt. For more ' . 'information, see: https://iabtechlab.com/ads-txt/', 'required' => false, 'is_array' => true, 'default' => [] ], [ 'name' => 'minimum_viewability_decile', 'display' => 'Minimum viewability decile', 'description' => 'The targeted minimum viewability decile, ranging from 0 - 10. A value of ' . '"5" means that the configuration will only match adslots for which we ' . 'predict at least 50% viewability. Values > 10 will be rounded down to 10. ' . 'An unset value, or a value of "0", indicates that bid requests should be ' . 'sent regardless of viewability.', 'required' => false, 'default' => null ], ]; } /** * @see BaseExample::run() */ public function run() { $values = $this->formValues; $parentName = "bidders/$values[account_id]"; $geoTargeting = new Google_Service_RealTimeBidding_NumericTargetingDimension(); $geoTargeting->includedIds = $values['included_geo_ids']; $geoTargeting->excludedIds = $values['excluded_geo_ids']; $userListTargeting = new Google_Service_RealTimeBidding_NumericTargetingDimension(); $userListTargeting->includedIds = $values['included_user_list_ids']; $userListTargeting->excludedIds = $values['excluded_user_list_ids']; $verticalTargeting = new Google_Service_RealTimeBidding_NumericTargetingDimension(); $verticalTargeting->includedIds = $values['included_vertical_ids']; $verticalTargeting->excludedIds = $values['excluded_vertical_ids']; $includedCreativeDimensions = new Google_Service_RealTimeBidding_CreativeDimensions(); $includedCreativeDimensions->height = $values['included_creative_dimension_height']; $includedCreativeDimensions->width = $values['included_creative_dimension_width']; $webTargeting = new Google_Service_RealTimeBidding_StringTargetingDimension(); $webTargeting->targetingMode = $values['web_targeting_mode']; $webTargeting->values = $values['web_targeting_urls']; $mobileAppTargeting = new Google_Service_RealTimeBidding_StringTargetingDimension(); $mobileAppTargeting->targetingMode = $values['mobile_app_targeting_mode']; $mobileAppTargeting->values = $values['mobile_app_targeting_app_ids']; $mobileAppCategoryTargeting = new Google_Service_RealTimeBidding_NumericTargetingDimension(); $mobileAppCategoryTargeting->includedIds = $values['included_mobile_app_targeting_category_ids']; $mobileAppCategoryTargeting->excludedIds = $values['excluded_mobile_app_targeting_category_ids']; $appTargeting = new Google_Service_RealTimeBidding_AppTargeting(); $appTargeting->mobileAppTargeting = $mobileAppTargeting; $appTargeting->mobileAppCategoryTargeting = $mobileAppCategoryTargeting; $publisherTargeting = new Google_Service_RealTimeBidding_StringTargetingDimension(); $publisherTargeting->targetingMode = $values['publisher_targeting_mode']; $publisherTargeting->values = $values['publisher_ids']; $newPretargetingConfig = new Google_Service_RealTimeBidding_PretargetingConfig(); $newPretargetingConfig->displayName = $values['display_name']; $newPretargetingConfig->includedFormats = $values['included_formats']; $newPretargetingConfig->geoTargeting = $geoTargeting; $newPretargetingConfig->userListTargeting = $userListTargeting; $newPretargetingConfig->interstitialTargeting = $values['interstitial_targeting']; $newPretargetingConfig->allowedUserTargetingModes = $values['allowed_user_targeting_modes']; $newPretargetingConfig->excludedContentLabelIds = $values['excluded_content_label_ids']; $newPretargetingConfig->includedUserIdTypes = $values['included_user_id_types']; $newPretargetingConfig->includedLanguages = $values['included_languages']; $newPretargetingConfig->includedMobileOperatingSystemIds = $values['included_mobile_os_ids']; $newPretargetingConfig->verticalTargeting = $verticalTargeting; $newPretargetingConfig->includedPlatforms = $values['included_platforms']; $newPretargetingConfig->includedCreativeDimensions = [$includedCreativeDimensions]; $newPretargetingConfig->includedEnvironments = $values['included_environments']; $newPretargetingConfig->webTargeting = $webTargeting; $newPretargetingConfig->appTargeting = $appTargeting; $newPretargetingConfig->publisherTargeting = $publisherTargeting; $newPretargetingConfig->minimumViewabilityDecile = $values['minimum_viewability_decile']; print "<h2>Creating pretargeting configuration for '$parentName':</h2>"; $result = $this->service->bidders_pretargetingConfigs->create($parentName, $newPretargetingConfig); $this->printResult($result); } /** * @see BaseExample::getName() */ public function getName() { return 'Create Pretargeting Configuration'; } }
Python
#!/usr/bin/python # # Copyright 2020 Google Inc. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """This example creates a pretargeting config for the given bidder account ID. """ import argparse import os import pprint import sys import uuid sys.path.insert(0, os.path.abspath('../../..')) from googleapiclient.errors import HttpError import util _BIDDER_NAME_TEMPLATE = 'bidders/%s' DEFAULT_BIDDER_RESOURCE_ID = 'ENTER_BIDDER_RESOURCE_ID_HERE' def main(realtimebidding, args): account_id = args.account_id body = { 'displayName': args.display_name, 'includedFormats': args.included_formats, 'geoTargeting': { 'includedIds': args.included_geo_ids, 'excludedIds': args.excluded_geo_ids }, 'userListTargeting': { 'includedIds': args.included_user_list_ids, 'excludedIds': args.excluded_user_list_ids }, 'interstitialTargeting': args.interstitial_targeting, 'allowedUserTargetingModes': args.allowed_user_targeting_modes, 'excludedContentLabelIds': args.excluded_content_label_ids, 'includedUserIdTypes': args.included_user_id_types, 'includedLanguages': args.included_language_codes, 'includedMobileOperatingSystemIds': args.included_mobile_os_ids, 'verticalTargeting': { 'includedIds': args.included_vertical_ids, 'excludedIds': args.excluded_vertical_ids }, 'includedPlatforms': args.included_platforms, 'includedCreativeDimensions': [{ 'height': args.included_creative_dimension_height, 'width': args.included_creative_dimension_width }], 'includedEnvironments': args.included_environments, 'webTargeting': { 'targetingMode': args.web_targeting_mode, 'values': args.web_targeting_urls }, 'appTargeting': { 'mobileAppTargeting': { 'targetingMode': args.mobile_app_targeting_mode, 'values': args.mobile_app_targeting_app_ids }, 'mobileAppCategoryTargeting': { 'includedIds': args.included_mobile_app_targeting_category_ids, 'excludedIds': args.excluded_mobile_app_targeting_category_ids } }, 'publisherTargeting': { 'targetingMode': args.publisher_targeting_mode, 'values': args.publisher_ids }, 'minimumViewabilityDecile': args.minimum_viewability_decile } print('Creating a pretargeting configuration for account ID: ' f'"{account_id}".') try: response = realtimebidding.bidders().pretargetingConfigs().create( parent=_BIDDER_NAME_TEMPLATE % account_id, body=body).execute() except HttpError as e: print(e) sys.exit(1) pprint.pprint(response) if __name__ == '__main__': try: service = util.GetService(version='v1') except IOError as ex: print(f'Unable to create realtimebidding service - {ex}') print('Did you specify the key file in util.py?') sys.exit(1) parser = argparse.ArgumentParser( description=('Creates a pretargeting configuration for the given bidder ' 'account.')) # Required fields. parser.add_argument( '-a', '--account_id', default=DEFAULT_BIDDER_RESOURCE_ID, help=('The resource ID of the bidders resource under which the ' 'pretargeting configuration is to be created.')) # Optional fields. parser.add_argument( '-d', '--display_name', default=f'TEST_PRETARGETING_CONFIG_{uuid.uuid4()}', help=('The display name to associate with the new configuration. Must ' 'be unique among all of a bidder\'s pretargeting configurations.')) parser.add_argument( '--included_formats', nargs='*', default=[], help=('Creative formats included by this configuration. An unset value ' 'will not filter any bid requests based on the format. Valid ' 'values include: HTML, NATIVE, and VAST.')) parser.add_argument( '--included_geo_ids', nargs='*', default=[], help=('The geo IDs to include in targeting for this configuration. ' 'Specify each ID separated by a space. Valid geo IDs can be found ' 'in: https://storage.googleapis.com/adx-rtb-dictionaries/' 'geo-table.csv')) parser.add_argument( '--excluded_geo_ids', nargs='*', default=[], help=('The geo IDs to exclude in targeting for this configuration. ' 'Specify each ID separated by a space. Valid geo IDs can be found ' 'in: https://storage.googleapis.com/adx-rtb-dictionaries/' 'geo-table.csv')) parser.add_argument( '--included_user_list_ids', nargs='*', default=[], help=('The user list IDs to include in targeting for this ' 'configuration. Specify each ID separated by a space. Valid user ' 'list IDs would include any found under the buyers.userLists ' 'resource for a given bidder account, or any buyer accounts under ' 'it.')) parser.add_argument( '--excluded_user_list_ids', nargs='*', default=[], help=('The user list IDs to exclude in targeting for this ' 'configuration. Specify each ID separated by a space. Valid user ' 'list IDs would include any found under the buyers.userLists ' 'resource for a given bidder account, or any buyer accounts under ' 'it.')) parser.add_argument( '--interstitial_targeting', default='ONLY_NON_INTERSTITIAL_REQUESTS', help=('The interstitial targeting specified for this configuration. By ' 'default, this will be set to ONLY_NON_INTERSTITIAL_REQUESTS. ' 'Valid values include: ONLY_INTERSTITIAL_REQUESTS and ' 'ONLY_NON_INTERSTITIAL_REQUESTS.')) parser.add_argument( '--allowed_user_targeting_modes', nargs='*', default=[], help=('The targeting modes to include in targeting for this ' 'configuration. Specify each value separated by a space. Valid ' 'targeting modes include: REMARKETING_ADS and ' 'INTEREST_BASED_TARGETING.')) parser.add_argument( '--excluded_content_label_ids', nargs='*', default=[], help=('The sensitive content category IDs excluded in targeting for ' 'this configuration. Valid sensitive content category IDs can be ' 'found in: https://storage.googleapis.com/adx-rtb-dictionaries/' 'content-labels.txt')) parser.add_argument( '--included_user_id_types', nargs='*', default=[], help=('The user identifier types included in targeting for this ' 'configuration. Specify each value separated by a space. Valid ' 'values include: HOSTED_MATCH_DATA, GOOGLE_COOKIE, and DEVICE_ID.' )) parser.add_argument( '--included_language_codes', nargs='*', default=[], help=('The languages represented by languages codes that are included ' 'in targeting for this configuration. Specify each code separated ' 'by a space. Valid language codes can be found in: ' 'https://developers.google.com/adwords/api/docs/appendix/' 'languagecodes.')) parser.add_argument( '--included_mobile_os_ids', nargs='*', default=[], help=('The mobile OS IDs to include in targeting for this ' 'configuration. Specify each value separated by a space. Valid ' 'mobile OS IDs can be found in: ' 'https://storage.googleapis.com/adx-rtb-dictionaries/mobile-os.csv' )) parser.add_argument( '--included_vertical_ids', nargs='*', default=[], help=('The vertical IDs to include in targeting for this configuration. ' 'Specify each ID separated by a space. Valid vertical IDs can be ' 'found in: ' 'https://developers.google.com/authorized-buyers/rtb/downloads/' 'publisher-verticals')) parser.add_argument( '--excluded_vertical_ids', nargs='*', default=[], help=('The vertical IDs to exclude in targeting for this configuration. ' 'Specify each ID separated by a space. Valid vertical IDs can be ' 'found in: ' 'https://developers.google.com/authorized-buyers/rtb/downloads/' 'publisher-verticals')) parser.add_argument( '--included_platforms', nargs='*', default=[], help=('The platforms to include in targeting for this configuration. ' 'Specify each value separated by a space. Valid values include: ' 'PERSONAL_COMPUTER, PHONE, TABLET, and CONNECTED_TV.')) parser.add_argument( '--included_creative_dimension_height', default=300, help=('A creative dimension\s height to be included in targeting for ' 'this configuration. By default, this example will set the ' 'targeted height to 300. Note that while only a single set of ' 'dimensions are specified in this sample, pretargeting ' 'configurations can target multiple creative dimensions.')) parser.add_argument( '--included_creative_dimension_width', default=250, help=('A creative dimension\s width to be included in targeting for ' 'this configuration. By default, this example will set the ' 'targeted height to 250. Note that while only a single set of ' 'dimensions are specified in this sample, pretargeting ' 'configurations can target multiple creative dimensions.')) parser.add_argument( '--included_environments', nargs='*', default=[], help=('The environments to include in targeting for this configuration. ' 'Specify each value separated by a space. Valid values include: ' 'APP, and WEB.')) parser.add_argument( '--web_targeting_mode', default=None, help=('The targeting mode for this configuration\'s web targeting. ' 'Valid values include: INCLUSIVE, and EXCLUSIVE.')) parser.add_argument( '--web_targeting_urls', nargs='*', default=[], help=('The URLs specified for this configuration\'s web targeting, ' 'which allows one to target a subset of site inventory. Specify ' 'each value separated by a space. Values specified must be valid ' 'URLs.')) parser.add_argument( '--mobile_app_targeting_mode', default=None, help=('The targeting mode for the configuration\'s mobile app ' 'targeting. Valid values include: INCLUSIVE, and EXCLUSIVE.')) parser.add_argument( '--mobile_app_targeting_app_ids', nargs='*', default=[], help=('The mobile app IDs specified for this configuration\'s mobile ' 'app targeting, which allows one to target a subset of mobile app ' 'inventory. Specify each value separated by a space. Values ' 'specified must be valid mobile App IDs, as found on their ' 'respective app stores.')) parser.add_argument( '--included_mobile_app_targeting_category_ids', nargs='*', default=[], help=('The mobile app category IDs to include in targeting for this ' 'configuration. Specify each ID separated by a space. Valid ' 'category IDs can be found in:' 'https://developers.google.com/adwords/api/docs/appendix/' 'mobileappcategories.csv')) parser.add_argument( '--excluded_mobile_app_targeting_category_ids', nargs='*', default=[], help=('The mobile app category IDs to exclude in targeting for this ' 'configuration. Specify each ID separated by a space. Valid ' 'category IDs can be found in:' 'https://developers.google.com/adwords/api/docs/appendix/' 'mobileappcategories.csv')) parser.add_argument( '--publisher_targeting_mode', default=None, help=('The targeting mode for the configuration\'s publisher targeting. ' 'Valid values include: INCLUSIVE, and EXCLUSIVE.')) parser.add_argument( '--publisher_ids', nargs='*', default=[], help=('The publisher IDs specified for this configuration\'s publisher ' 'targeting, which allows one to target a subset of publisher ' 'inventory. Specify each ID separated by a space. Valid publisher ' 'IDs can be found in Real-time Bidding bid requests, or ' 'alternatively in ads.txt / app-ads.txt. For more information, ' 'see: https://iabtechlab.com/ads-txt/')) parser.add_argument( '-m', '--minimum_viewability_decile', default=5, help=('The display name to associate with the new configuration. Must ' 'be unique among all of a bidder\'s pretargeting configurations.')) args = parser.parse_args() main(service, args)
Ruby
#!/usr/bin/env ruby # Encoding: utf-8 # # Copyright:: Copyright 2020 Google LLC # # License:: Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or # implied. # See the License for the specific language governing permissions and # limitations under the License. # # Creates a pretargeting configuration for the given bidder account ID. require 'optparse' require 'securerandom' require_relative '../../../util' def create_pretargeting_configs(realtimebidding, options) parent = "bidders/#{options[:account_id]}" body = Google::Apis::RealtimebiddingV1::PretargetingConfig.new( display_name: options[:display_name], included_formats: options[:included_formats], geo_targeting: Google::Apis::RealtimebiddingV1::NumericTargetingDimension.new( included_ids: options[:included_geo_ids], excluded_ids: options[:excluded_geo_ids] ), user_list_targeting: Google::Apis::RealtimebiddingV1::NumericTargetingDimension.new( included_ids: options[:included_user_list_ids], excluded_ids: options[:excluded_user_list_ids] ), interstitial_targeting: options[:interstitial_targeting], allowed_user_targeting_modes: options[:allowed_user_targeting_modes], excluded_content_label_ids: options[:excluded_content_label_ids], included_user_id_types: options[:included_user_id_types], included_languages: options[:included_language_codes], included_mobile_operating_system_ids: options[:included_mobile_os_ids], vertical_targeting: Google::Apis::RealtimebiddingV1::NumericTargetingDimension.new( included_ids: options[:included_vertical_ids], excluded_ids: options[:excluded_vertical_ids] ), included_platforms: options[:included_platforms], included_creative_dimensions: [Google::Apis::RealtimebiddingV1::CreativeDimensions.new( height: options[:included_creative_dimension_height], width: options[:included_creative_dimension_width] )], included_environments: options[:included_environments], web_targeting: Google::Apis::RealtimebiddingV1::StringTargetingDimension.new( targeting_mode: options[:web_targeting_mode], values: options[:web_targeting_urls] ), app_targeting: Google::Apis::RealtimebiddingV1::AppTargeting.new( mobile_app_targeting: Google::Apis::RealtimebiddingV1::StringTargetingDimension.new( targeting_mode: options[:mobile_app_targeting_mode], values: options[:mobile_app_targeting_app_ids] ), mobile_app_category_targeting: Google::Apis::RealtimebiddingV1::NumericTargetingDimension.new( included_ids: options[:included_mobile_app_targeting_category_ids], excluded_ids: options[:excluded_mobile_app_targeting_category_ids] ) ), publisher_targeting: Google::Apis::RealtimebiddingV1::StringTargetingDimension.new( targeting_mode: options[:publisher_targeting_mode], values: options[:publisher_ids] ), minimum_viewability_decile: options[:minimum_viewability_decile] ) puts "Creating a pretargeting configuration for bidder account '#{parent}'" pretargeting_config = realtimebidding.create_bidder_pretargeting_config(parent, body) print_pretargeting_config(pretargeting_config) end if __FILE__ == $0 begin # Retrieve the service used to make API requests. service = get_service() rescue ArgumentError => e raise 'Unable to create service, with error message: #{e.message}' rescue Signet::AuthorizationError => e raise 'Unable to create service, was the KEY_FILE in util.rb set? Error message: #{e.message}' end # Set options and default values for fields used in this example. options = [ Option.new( 'account_id', 'The resource ID of the bidders resource under which the pretargeting configuration is to be created, This '\ 'will be used to construct the name used as a path parameter for the pretargetingConfig.create request.', type: Integer, short_alias: 'a', required: true, default_value: nil ), Option.new( 'display_name', 'The display name to associate with the new configuration. Must be unique among all of a bidder\'s '\ 'pretargeting configurations.', short_alias: 'd', required: false, default_value: "TEST_PRETARGETING_CONFIG_#{SecureRandom.uuid}" ), Option.new( 'included_formats', 'Creative formats included by this configuration. Specify each ID separated by a comma. An unset value will '\ 'not filter any bid requests based on the format. Valid values include: HTML, NATIVE, and VAST.', required: false, type: Array, default_value: [] ), Option.new( 'included_geo_ids', 'The geo IDs to include in targeting for this configuration. Specify each ID separated by a comma. Valid geo '\ 'IDs can be found in: https://storage.googleapis.com/adx-rtb-dictionaries/geo-table.csv', required: false, type: Array, default_value: [] ), Option.new( 'excluded_geo_ids', 'The geo IDs to exclude in targeting for this configuration. Specify each ID separated by a comma. Valid geo '\ 'IDs can be found in: https://storage.googleapis.com/adx-rtb-dictionaries/geo-table.csv', required: false, type: Array, default_value: [] ), Option.new( 'included_user_list_ids', 'The user list IDs to include in targeting for this configuration. Specify each ID separated by a comma. '\ 'Valid user list IDs would include any found under the buyers.userLists resource for a given bidder account, '\ 'or any buyer accounts under it.', required: false, type: Array, default_value: [] ), Option.new( 'excluded_user_list_ids', 'The user list IDs to exclude in targeting for this configuration. Specify each ID separated by a comma. '\ 'Valid user list IDs would include any found under the buyers.userLists resource for a given bidder account, '\ 'or any buyer accounts under it.', required: false, type: Array, default_value: [] ), Option.new( 'interstitial_targeting', 'The interstitial targeting specified for this configuration. By default, this will be set to '\ 'ONLY_NON_INTERSTITIAL_REQUESTS. Valid values include: ONLY_INTERSTITIAL_REQUESTS and '\ 'ONLY_NON_INTERSTITIAL_REQUESTS.', required: false, default_value: 'ONLY_NON_INTERSTITIAL_REQUESTS' ), Option.new( 'allowed_user_targeting_modes', 'The targeting modes to include in targeting for this configuration. Specify each value separated by a comma. '\ 'Valid targeting modes include: REMARKETING_ADS and INTEREST_BASED_TARGETING.', required: false, type: Array, default_value: [] ), Option.new( 'excluded_content_label_ids', 'The sensitive content category IDs excluded in targeting for this configuration. Specify each value separated '\ 'by a comma. Valid sensitive content category IDs can be found in: '\ 'https://storage.googleapis.com/adx-rtb-dictionaries/content-labels.txt', required: false, type: Array, default_value: [] ), Option.new( 'included_user_id_types', 'The user identifier types included in targeting for this configuration. Specify each value separated by a ' \ 'comma. Valid values include: HOSTED_MATCH_DATA, GOOGLE_COOKIE, and DEVICE_ID.', required: false, type: Array, default_value: [] ), Option.new( 'included_language_codes', 'The languages represented by languages codes that are included in targeting for this configuration. Specify '\ 'each code separated by a comma. Valid language codes can be found in: '\ 'https://developers.google.com/adwords/api/docs/appendix/languagecodes.', required: false, type: Array, default_value: [] ), Option.new( 'included_mobile_os_ids', 'The mobile OS IDs to include in targeting for this configuration. Specify each value separated by a comma. '\ 'Valid mobile OS IDs can be found in: https://storage.googleapis.com/adx-rtb-dictionaries/mobile-os.csv', required: false, type: Array, default_value: [] ), Option.new( 'included_vertical_ids', 'The vertical IDs to include in targeting for this configuration. Specify each ID separated by a comma. Valid '\ 'vertical IDs can be found in: https://developers.google.com/authorized-buyers/rtb/downloads/'\ 'publisher-verticals', required: false, type: Array, default_value: [] ), Option.new( 'excluded_vertical_ids', 'The vertical IDs to exclude in targeting for this configuration. Specify each ID separated by a comma. Valid '\ 'vertical IDs can be found in: https://developers.google.com/authorized-buyers/rtb/downloads/'\ 'publisher-verticals', required: false, type: Array, default_value: [] ), Option.new( 'included_platforms', 'The platforms to include in targeting for this configuration. Specify each value separated by a comma. Valid '\ 'values include: PERSONAL_COMPUTER, PHONE, TABLET, and CONNECTED_TV.', required: false, type: Array, default_value: [] ), Option.new( 'included_creative_dimension_height', 'A creative dimension\s height to be included in targeting for this configuration. By default, this example '\ 'will set the targeted height to 300. Note that while only a single set of dimensions are specified in this '\ 'sample, pretargeting configurations can target multiple creative dimensions.', required: false, default_value: 300 ), Option.new( 'included_creative_dimension_width', 'A creative dimension\s width to be included in targeting for this configuration. By default, this example '\ 'will set the targeted width to 250. Note that while only a single set of dimensions are specified in this '\ 'sample, pretargeting configurations can target multiple creative dimensions.', required: false, default_value: 250 ), Option.new( 'included_environments', 'The environments to include in targeting for this configuration. Specify each value separated by a comma. '\ 'Valid values include: APP, and WEB.', required: false, type: Array, default_value: [] ), Option.new( 'web_targeting_mode', 'The targeting mode for this configuration\'s web targeting. Valid values include: INCLUSIVE, and EXCLUSIVE.', required: false, default_value: nil ), Option.new( 'web_targeting_urls', 'The URLs specified for this configuration\'s web targeting, which allows one to target a subset of site '\ 'inventory. Specify each value separated by a comma. Values specified must be valid URLs.', required: false, type: Array, default_value: [] ), Option.new( 'mobile_app_targeting_mode', 'The targeting mode for the configuration\'s mobile app targeting. Valid values include: INCLUSIVE, and '\ 'EXCLUSIVE.', required: false, default_value: nil ), Option.new( 'mobile_app_targeting_app_ids', 'The mobile app IDs specified for this configuration\'s mobile app targeting, which allows one to target a '\ 'subset of mobile app inventory. Specify each value separated by a comma. Values specified must be valid '\ 'mobile App IDs, as found on their respective app stores.', required: false, type: Array, default_value: [] ), Option.new( 'included_mobile_app_targeting_category_ids', 'The mobile app category IDs to include in targeting for this configuration. Specify each ID separated by a '\ 'comma. Valid category IDs can be found in: '\ 'https://developers.google.com/adwords/api/docs/appendix/mobileappcategories.csv', required: false, type: Array, default_value: [] ), Option.new( 'excluded_mobile_app_targeting_category_ids', 'The mobile app category IDs to exclude in targeting for this configuration. Specify each ID separated by a '\ 'comma. Valid category IDs can be found in: '\ 'https://developers.google.com/adwords/api/docs/appendix/mobileappcategories.csv', required: false, type: Array, default_value: [] ), Option.new( 'publisher_targeting_mode', 'The targeting mode for the configuration\'s publisher targeting. Valid values include: INCLUSIVE, and '\ 'EXCLUSIVE.', required: false, default_value: nil ), Option.new( 'publisher_ids', 'The publisher IDs specified for this configuration\'s publisher targeting, which allows one to target a '\ 'subset of publisher inventory. Specify each ID separated by a comma. Valid publisher IDs can be found in '\ 'Real-time Bidding bid requests, or alternatively in ads.txt / app-ads.txt. For more information, see: '\ 'https://iabtechlab.com/ads-txt/', required: false, type: Array, default_value: [] ), Option.new( 'minimum_viewability_decile', 'The targeted minimum viewability decile, ranging from 0 - 10. A value of "5" means that the configuration '\ 'will only match adslots for which we predict at least 50% viewability. Values > 10 will be rounded down to '\ '10. An unset value, or a value of "0", indicates that bid requests should be sent regardless of viewability.', required: false, default_value: nil ), ] # Parse options. parser = Parser.new(options) opts = parser.parse(ARGV) begin create_pretargeting_configs(service, opts) rescue Google::Apis::ServerError => e raise "The following server error occured:\n#{e.message}" rescue Google::Apis::ClientError => e raise "Invalid client request:\n#{e.message}" rescue Google::Apis::AuthorizationError => e raise "Authorization error occured:\n#{e.message}" end end
개별 구성 가져오기
개별 사전 타겟팅을 가져오는 방법은 다음과 같습니다.
구성을
bidders.pretargetingConfigs.get
:
REST
요청
GET https://realtimebidding.googleapis.com/v1/bidders/12345678/pretargetingConfigs/560983?alt=json Authorization: Bearer <INSERT_ACCESS_TOKEN_HERE> Content-Type: application/json
응답
{ "name": "bidders/12345678/pretargetingConfigs/560983", "displayName": "TEST_PRETARGETING_CONFIG_bea55522-1373-4cfe-baf3-bac5e594c76e", "billingId": "112233445566", "state": "ACTIVE", "interstitialTargeting": "ONLY_NON_INTERSTITIAL_REQUESTS", "includedCreativeDimensions": [ { "width": "250", "height": "300" } ], "minimumViewabilityDecile": 5 }
C#
/* Copyright 2020 Google LLC * * Licensed under the Apache License, Version 2.0 (the L"icense)"; * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an A"S IS "BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied * See the License for the specific language governing permissions and * limitations under the License. */ using Google.Apis.RealTimeBidding.v1; using Google.Apis.RealTimeBidding.v1.Data; using Mono.Options; using System; using System.Collections.Generic; namespace Google.Apis.RealTimeBidding.Examples.v1.Bidders.PretargetingConfigs { /// s<ummary<>/span> /// Gets a single pretargeting configuration with a specified name. /// /<summary > public class GetPretargetingConfigs : ExampleBase { private RealTimeBiddingService rtbService; /// s<ummary<>/span> /// Constructor. /// /<summary > public GetPretargetingConfigs() { rtbService = Utilities.GetRealTimeBiddingService(); } /// s<ummary<>/span> /// Returns a description about the code example. /// /<summary > public override string Description { get = >T"his code example gets a specified pretargeting configuration;" } /// s<ummary<>/span> /// Parse specified arguments. /// /<summary > protected override Dictionarys<tring, object >ParseArguments(Lists<tring >exampleArgs) { string[] requiredOptions = new string[] {a"ccount_id," p"retargeting_config_id}"; bool showHelp = false; string accountId = null; long? pretargetingConfigId = null; OptionSet options = new OptionSet { G"ets a specified pretargeting configuration.," { h"|help," S"how help message and exit.," h = >showHelp = h != null }, { a"|account_id=," (["Required] The resource ID of the bidders resource under which the "+ p"retargeting configuration was created.)", a = >accountId = a }, { p"|pretargeting_config_id=," (["Required] The resource ID of the pretargeting configuration that is "+ b"eing retrieved.)", (long p) = >pretargetingConfigId = p }, }; Lists<tring >extras = options.Parse(exampleArgs); var parsedArgs = new Dictionarys<tring, object(>); // Show help message. if(showHelp == true) { options.WriteOptionDescriptions(Console.Out); Environment.Exit(0); } // Set arguments. parsedArgs[a"ccount_id]" = accountId; parsedArgs[p"retargeting_config_id]" = pretargetingConfigId; // Validate that options were set correctly. Utilities.ValidateOptions(options, parsedArgs, requiredOptions, extras); return parsedArgs; } /// s<ummary<>/span> /// Run the example. /// /<summary > /// p<aram name=p"arsedArgsP">arsed arguments for the example./<param > protected override void Run(Dictionarys<tring, object >parsedArgs) { string accountId = (string) parsedArgs[a"ccount_id]"; long? pretargetingConfigId = (long?) parsedArgs[p"retargeting_config_id]"; string name = $b"idders/{accountId}/pretargetingConfigs/{pretargetingConfigId};" BiddersResource.PretargetingConfigsResource.GetRequest request = rtbService.Bidders.PretargetingConfigs.Get(name); PretargetingConfig response = null; Console.WriteLine(R"etrieving pretargeting configuration with name: {'0},'" name); try { response = request.Execute(); } catch (System.Exception exception) { throw new ApplicationException( $R"eal-time Bidding API returned error response:\n{exception.Message})"; } Utilities.PrintPretargetingConfiguration(response); } } }
자바
/* * Copyright 2020 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.google.api.services.samples.authorizedbuyers.realtimebidding.v1.bidders.pretargetingconfigs; import com.google.api.services.realtimebidding.v1.RealTimeBidding; import com.google.api.services.realtimebidding.v1.model.PretargetingConfig; import com.google.api.services.samples.authorizedbuyers.realtimebidding.Utils; import java.io.IOException; import java.security.GeneralSecurityException; import net.sourceforge.argparse4j.ArgumentParsers; import net.sourceforge.argparse4j.inf.ArgumentParser; import net.sourceforge.argparse4j.inf.ArgumentParserException; import net.sourceforge.argparse4j.inf.Namespace; /** Gets a single pretargeting configuration with a specified name. */ public class GetPretargetingConfigs { public static void execute(RealTimeBidding client, Namespace parsedArgs) throws IOException { String name = String.format( "bidders/%s/pretargetingConfigs/%s", parsedArgs.getLong("account_id"), parsedArgs.getLong("pretargeting_config_id")); System.out.printf("Retrieving pretargeting configuration with name: %s\n", name); PretargetingConfig pretargetingConfig = client.bidders().pretargetingConfigs().get(name).execute(); Utils.printPretargetingConfig(pretargetingConfig); } public static void main(String[] args) { ArgumentParser parser = ArgumentParsers.newFor("GetPretargetingConfigs") .build() .defaultHelp(true) .description(("Get a specified pretargeting configuration.")); parser .addArgument("-a", "--account_id") .help( "The resource ID of the bidders resource under which the pretargeting " + "configuration was created.") .required(true) .type(Long.class); parser .addArgument("-p", "--pretargeting_config_id") .help("The resource ID of the pretargeting configuration that is being retrieved.") .required(true) .type(Long.class); Namespace parsedArgs = null; try { parsedArgs = parser.parseArgs(args); } catch (ArgumentParserException ex) { parser.handleError(ex); System.exit(1); } RealTimeBidding client = null; try { client = Utils.getRealTimeBiddingClient(); } catch (IOException ex) { System.out.printf("Unable to create RealTimeBidding API service:\n%s", ex); System.out.println("Did you specify a valid path to a service account key file?"); System.exit(1); } catch (GeneralSecurityException ex) { System.out.printf("Unable to establish secure HttpTransport:\n%s", ex); System.exit(1); } try { execute(client, parsedArgs); } catch (IOException ex) { System.out.printf("RealTimeBidding API returned error response:\n%s", ex); System.exit(1); } } }
PHP
<?php /** * Copyright 2020 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Google\Ads\AuthorizedBuyers\RealTimeBidding\Examples\V1\Bidders_PretargetingConfigs; use Google\Ads\AuthorizedBuyers\RealTimeBidding\ExampleUtil\BaseExample; use Google\Ads\AuthorizedBuyers\RealTimeBidding\ExampleUtil\Config; /** * Gets a single pretargeting configuration for the given bidder's account ID. */ class GetPretargetingConfigs extends BaseExample { public function __construct($client) { $this->service = Config::getGoogleServiceRealTimeBidding($client); } /** * @see BaseExample::getInputParameters() */ protected function getInputParameters() { return [ [ 'name' => 'account_id', 'display' => 'Account ID', 'description' => 'The resource ID of the bidders resource under which the pretargeting ' . 'configuration was created.', 'required' => true ], [ 'name' => 'pretargeting_config_id', 'display' => 'Pretargeting configuration ID', 'description' => 'The resource ID of the pretargeting configuration that is being retrieved.', 'required' => true, ] ]; } /** * @see BaseExample::run() */ public function run() { $values = $this->formValues; $name = "bidders/$values[account_id]/pretargetingConfigs/$values[pretargeting_config_id]"; print "<h2>Retrieving pretargeting configuration with name '$name':</h2>"; $result = $this->service->bidders_pretargetingConfigs->get($name); $this->printResult($result); } /** * @see BaseExample::getName() */ public function getName() { return 'Get Pretargeting Configuration'; } }
Python
#!/usr/bin/python # # Copyright 2020 Google Inc. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Gets a single pretargeting configuration for the given bidder's account ID. """ import argparse import os import pprint import sys sys.path.insert(0, os.path.abspath('../../..')) from googleapiclient.errors import HttpError import util _PRETARGETING_CONFIG_NAME_TEMPLATE = 'bidders/%s/pretargetingConfigs/%s' DEFAULT_BUYER_RESOURCE_ID = 'ENTER_BIDDER_RESOURCE_ID_HERE' DEFAULT_PRETARGETING_CONFIG_RESOURCE_ID = 'ENTER_CONFIG_RESOURCE_ID_HERE' def main(realtimebidding, account_id, pretargeting_config_id): pretargeting_config_name = _PRETARGETING_CONFIG_NAME_TEMPLATE % ( account_id, pretargeting_config_id) print('Retrieving a pretargeting configuration with name: ' f'"{pretargeting_config_name}".') try: response = realtimebidding.bidders().pretargetingConfigs().get( name=pretargeting_config_name).execute() except HttpError as e: print(e) sys.exit(1) pprint.pprint(response) if __name__ == '__main__': try: service = util.GetService(version='v1') except IOError as ex: print('Unable to create realtimebidding service - %s' % ex) print('Did you specify the key file in util.py?') sys.exit(1) parser = argparse.ArgumentParser( description=('Get a pretargeting configuration for a given bidder ' 'account.')) # Required fields. parser.add_argument( '-a', '--account_id', default=DEFAULT_BUYER_RESOURCE_ID, required=True, help=('The resource ID of the bidders resource under which the ' 'pretargeting configuration was created.')) parser.add_argument( '-p', '--pretargeting_config_id', default=DEFAULT_PRETARGETING_CONFIG_RESOURCE_ID, help=('The resource ID of the pretargeting configuration that is being ' 'retrieved.')) args = parser.parse_args() main(service, args.account_id, args.pretargeting_config_id)
Ruby
#!/usr/bin/env ruby # Encoding: utf-8 # # Copyright:: Copyright 2020 Google LLC # # License:: Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or # implied. # See the License for the specific language governing permissions and # limitations under the License. # # Gets a pretargeting configuration for the given bidder account and pretargeting configuration IDs. require 'optparse' require_relative '../../../util' def get_pretargeting_configs(realtimebidding, options) name = "bidders/#{options[:account_id]}/pretargetingConfigs/#{options[:pretargeting_config_id]}" puts "Get pretargeting configuration with name '#{name}'" pretargeting_config = realtimebidding.get_bidder_pretargeting_config(name) print_pretargeting_config(pretargeting_config) end if __FILE__ == $0 begin # Retrieve the service used to make API requests. service = get_service() rescue ArgumentError => e raise 'Unable to create service, with error message: #{e.message}' rescue Signet::AuthorizationError => e raise 'Unable to create service, was the KEY_FILE in util.rb set? Error message: #{e.message}' end # Set options and default values for fields used in this example. options = [ Option.new( 'account_id', 'The resource ID of the bidders resource under which pretargeting configurations were created. This will be '\ 'used to construct the name used as a path parameter for the pretargetingConfigs.get request.', type: Integer, short_alias: 'a', required: true, default_value: nil ), Option.new( 'pretargeting_config_id', 'The resource ID of the bidders.pretargetingConfig resource for which the pretargeting configuration was '\ 'created. This will be used to construct the name used as a path parameter for the pretargetingConfigs.get '\ 'request.', type: Integer, short_alias: 'p', required: true, default_value: nil ), ] # Parse options. parser = Parser.new(options) opts = parser.parse(ARGV) begin get_pretargeting_configs(service, opts) rescue Google::Apis::ServerError => e raise "The following server error occured:\n#{e.message}" rescue Google::Apis::ClientError => e raise "Invalid client request:\n#{e.message}" rescue Google::Apis::AuthorizationError => e raise "Authorization error occured:\n#{e.message}" end end
사전 타겟팅 구성 목록을 가져옵니다.
사전 타겟팅 목록을 가져오는 방법은 다음과 같습니다.
계정 구성을
bidders.pretargetingConfigs.list
:
REST
요청
GET https://realtimebidding.googleapis.com/v1/bidders/53728410/pretargetingConfigs?pageSize=10&alt=json Authorization: Bearer <INSERT_ACCESS_TOKEN_HERE> Content-Type: application/json
응답
{ "pretargetingConfigs": [ { "name": "bidders/12345678/pretargetingConfigs/560983", "displayName": "TEST_PRETARGETING_CONFIG_bea55522-1373-4cfe-baf3-bac5e594c76e", "billingId": "112233445566", "state": "ACTIVE", "interstitialTargeting": "ONLY_NON_INTERSTITIAL_REQUESTS", "includedCreativeDimensions": [ { "width": "250", "height": "300" } ], "minimumViewabilityDecile": 5 }, { "name": "bidders/12345678/pretargetingConfigs/565124", "displayName": "TEST_PRETARGETING_CONFIG_a859ac07-ab5b-438c-a98f-86054c03b3fb", "billingId": "116622553344", "state": "SUSPENDED", "includedFormats": [ "HTML", "VAST" ], "geoTargeting": { "includedIds": [ "200635", "1014448", "1022183", "200622", "1023191", "9061237", "1014221" ] }, "includedCreativeDimensions": [ { "width": "320", "height": "480" }, { "width": "1920", "height": "1080" } ] } ] }
C#
/* Copyright 2020 Google LLC * * Licensed under the Apache License, Version 2.0 (the L"icense)"; * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an A"S IS "BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied * See the License for the specific language governing permissions and * limitations under the License. */ using Google.Apis.RealTimeBidding.v1; using Google.Apis.RealTimeBidding.v1.Data; using Mono.Options; using System; using System.Collections.Generic; namespace Google.Apis.RealTimeBidding.Examples.v1.Bidders.PretargetingConfigs { /// s<ummary<>/span> /// Lists pretargeting configurations for a given bidder account ID. /// /<summary > public class ListPretargetingConfigs : ExampleBase { private RealTimeBiddingService rtbService; /// s<ummary<>/span> /// Constructor. /// /<summary > public ListPretargetingConfigs() { rtbService = Utilities.GetRealTimeBiddingService(); } /// s<ummary<>/span> /// Returns a description about the code example. /// /<summary > public override string Description { get = >T"his code example lists all pretargeting configurations for a given bidder "+ a"ccount.;" } /// s<ummary<>/span> /// Parse specified arguments. /// /<summary > protected override Dictionarys<tring, object >ParseArguments(Lists<tring >exampleArgs) { string[] requiredOptions = new string[] {a"ccount_id}"; bool showHelp = false; string accountId = null; int? pageSize = null; OptionSet options = new OptionSet { L"ist pretargeting configurations for the given bidder account.," { h"|help," S"how help message and exit.," h = >showHelp = h != null }, { a"|account_id=," (["Required] The resource ID of the bidders resource under which the "+ p"retargeting configurations were created. This will be used to construct "+ t"he parent used as a path parameter for the pretargetingConfigs.list "+ r"equest.)", a = >accountId = a }, { p"|page_size=," (T"he number of rows to return per page. The server may return fewer rows "+ t"han specified.)", (int p) = >pageSize = p } }; Lists<tring >extras = options.Parse(exampleArgs); var parsedArgs = new Dictionarys<tring, object(>); // Show help message. if(showHelp == true) { options.WriteOptionDescriptions(Console.Out); Environment.Exit(0); } // Set arguments. parsedArgs[a"ccount_id]" = accountId; parsedArgs[p"ageSize]" = pageSize ?? Utilities.MAX_PAGE_SIZE; // Validate that options were set correctly. Utilities.ValidateOptions(options, parsedArgs, requiredOptions, extras); return parsedArgs; } /// s<ummary<>/span> /// Run the example. /// /<summary > /// p<aram name=p"arsedArgsP">arsed arguments for the example./<param > protected override void Run(Dictionarys<tring, object >parsedArgs) { string accountId = (string) parsedArgs[a"ccount_id]"; string parent = $b"idders/{accountId};" string pageToken = null; Console.WriteLine(@L"isting pretargeting configurations for bidder account {""0},""" parent); do { BiddersResource.PretargetingConfigsResource.ListRequest request = rtbService.Bidders.PretargetingConfigs.List(parent); request.PageSize = (int) parsedArgs[p"ageSize]"; request.PageToken = pageToken; ListPretargetingConfigsResponse page = null; try { page = request.Execute(); } catch (System.Exception exception) { throw new ApplicationException( $R"eal-time Bidding API returned error response:\n{exception.Message})"; } var pretargetingConfigs = page.PretargetingConfigs; pageToken = page.NextPageToken; if(pretargetingConfigs == null) { Console.WriteLine(N"o pretargeting configurations found for bidder account.)"; } else { foreach (PretargetingConfig config in pretargetingConfigs) { Utilities.PrintPretargetingConfiguration(config); } } } while(pageToken != null); } } }
자바
/* * Copyright 2020 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.google.api.services.samples.authorizedbuyers.realtimebidding.v1.bidders.pretargetingconfigs; import com.google.api.services.realtimebidding.v1.RealTimeBidding; import com.google.api.services.realtimebidding.v1.model.ListPretargetingConfigsResponse; import com.google.api.services.realtimebidding.v1.model.PretargetingConfig; import com.google.api.services.samples.authorizedbuyers.realtimebidding.Utils; import java.io.IOException; import java.security.GeneralSecurityException; import java.util.List; import net.sourceforge.argparse4j.ArgumentParsers; import net.sourceforge.argparse4j.inf.ArgumentParser; import net.sourceforge.argparse4j.inf.ArgumentParserException; import net.sourceforge.argparse4j.inf.Namespace; /** * This sample illustrates how to list pretargeting configurations for a given bidder account ID. */ public class ListPretargetingConfigs { public static void execute(RealTimeBidding client, Namespace parsedArgs) throws IOException { Long accountId = parsedArgs.getLong("account_id"); Integer pageSize = parsedArgs.getInt("page_size"); String parentBidderName = String.format("bidders/%s", accountId); String pageToken = null; System.out.printf("Found pretargeting configurations for bidder Account ID '%d':\n", accountId); do { List<PretargetingConfig> pretargetingConfigs = null; ListPretargetingConfigsResponse response = client .bidders() .pretargetingConfigs() .list(parentBidderName) .setPageSize(pageSize) .setPageToken(pageToken) .execute(); pretargetingConfigs = response.getPretargetingConfigs(); pageToken = response.getNextPageToken(); if (pretargetingConfigs == null) { System.out.println("No pretargeting configurations found."); } else { for (PretargetingConfig pretargetingConfig : pretargetingConfigs) { Utils.printPretargetingConfig(pretargetingConfig); } } } while (pageToken != null); } public static void main(String[] args) { ArgumentParser parser = ArgumentParsers.newFor("ListPretargetingConfigs") .build() .defaultHelp(true) .description(("Lists pretargeting configurations for the given bidder account.")); parser .addArgument("-a", "--account_id") .help( "The resource ID of the bidders resource under which the pretargeting configurations" + " were created. This will be used to construct the parent used as a path" + " parameter for the pretargetingConfigs.list request.") .required(true) .type(Long.class); parser .addArgument("-p", "--page_size") .help( "The resource ID of the buyers resource under which the user lists were created. " + "This will be used to construct the parent used as a path parameter for the " + "userLists.list request.") .setDefault(Utils.getMaximumPageSize()) .type(Integer.class); Namespace parsedArgs = null; try { parsedArgs = parser.parseArgs(args); } catch (ArgumentParserException ex) { parser.handleError(ex); System.exit(1); } RealTimeBidding client = null; try { client = Utils.getRealTimeBiddingClient(); } catch (IOException ex) { System.out.printf("Unable to create RealTimeBidding API service:\n%s", ex); System.out.println("Did you specify a valid path to a service account key file?"); System.exit(1); } catch (GeneralSecurityException ex) { System.out.printf("Unable to establish secure HttpTransport:\n%s", ex); System.exit(1); } try { execute(client, parsedArgs); } catch (IOException ex) { System.out.printf("RealTimeBidding API returned error response:\n%s", ex); System.exit(1); } } }
PHP
<?php /** * Copyright 2020 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Google\Ads\AuthorizedBuyers\RealTimeBidding\Examples\V1\Bidders_PretargetingConfigs; use Google\Ads\AuthorizedBuyers\RealTimeBidding\ExampleUtil\BaseExample; use Google\Ads\AuthorizedBuyers\RealTimeBidding\ExampleUtil\Config; /** * Lists pretargeting configurations for a given bidder account ID. */ class ListPretargetingConfigs extends BaseExample { public function __construct($client) { $this->service = Config::getGoogleServiceRealTimeBidding($client); } /** * @see BaseExample::getInputParameters() */ protected function getInputParameters() { return [ [ 'name' => 'account_id', 'display' => 'Bidder account ID', 'required' => true, 'description' => 'The resource ID of the bidders resource under which the pretargeting ' . 'configurations were created. This will be used to construct the parent ' . 'used as a path parameter for the pretargetingConfig.list request.' ], [ 'name' => 'page_size', 'display' => 'Page size', 'required' => false, 'description' => 'The number of rows to return per page. The server may return fewer rows ' . 'than specified.', 'default' => 10 ] ]; } /** * @see BaseExample::run() */ public function run() { $values = $this->formValues; $parentName = "bidders/$values[account_id]"; $queryParams = ['pageSize' => $values['page_size']]; $result = $this->service->bidders_pretargetingConfigs->listBiddersPretargetingConfigs($parentName, $queryParams); print "<h2>Pretargeting configurations found for '$parentName':</h2>"; if (empty($result['pretargetingConfigs'])) { print '<p>No pretargeting configurations found</p>'; } else { foreach ($result['pretargetingConfigs'] as $pretargetingConfig) { $this->printResult($pretargetingConfig); } } } /** * @see BaseExample::getName() */ public function getName() { return 'List Bidder Pretargeting Configurations'; } }
Python
#!/usr/bin/python # # Copyright 2020 Google Inc. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Lists pretargeting configurations for the given bidder's account ID.""" import argparse import os import pprint import sys sys.path.insert(0, os.path.abspath('../../..')) from googleapiclient.errors import HttpError import util _BIDDER_NAME_TEMPLATE = 'bidders/%s' DEFAULT_BIDDER_RESOURCE_ID = 'ENTER_BIDDER_RESOURCE_ID_HERE' def main(realtimebidding, args): account_id = args.account_id page_token = None more_pages = True print('Listing pretargeting configurations for bidder account: ' f'"{account_id}".') while more_pages: try: # Construct and execute the request. response = realtimebidding.bidders().pretargetingConfigs().list( parent=_BIDDER_NAME_TEMPLATE % account_id, pageToken=page_token, pageSize=args.page_size).execute() except HttpError as e: print(e) sys.exit(1) pprint.pprint(response) page_token = response.get('nextPageToken') more_pages = bool(page_token) if __name__ == '__main__': try: service = util.GetService(version='v1') except IOError as ex: print(f'Unable to create realtimebidding service - {ex}') print('Did you specify the key file in util.py?') sys.exit(1) parser = argparse.ArgumentParser( description=('Lists pretargeting configurations for the given bidder ' 'account.')) # Required fields. parser.add_argument( '-a', '--account_id', default=DEFAULT_BIDDER_RESOURCE_ID, help=('The resource ID of the bidders resource under which the ' 'pretargeting configs were created by a buyer. This will be used ' 'to construct the parent used as a path parameter for the ' 'pretargetingConfigs.list request.')) # Optional fields. parser.add_argument( '-p', '--page_size', default=util.MAX_PAGE_SIZE, help=('The number of rows to return per page. The server may return ' 'fewer rows than specified.')) args = parser.parse_args() main(service, args)
Ruby
#!/usr/bin/env ruby # Encoding: utf-8 # # Copyright:: Copyright 2020 Google LLC # # License:: Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or # implied. # See the License for the specific language governing permissions and # limitations under the License. # # Lists pretargeting configurations for the given bidder's account ID. require 'optparse' require_relative '../../../util' def list_pretargeting_configs(realtimebidding, options) parent = "bidders/#{options[:account_id]}" page_size = options[:page_size] page_token = nil puts "Listing pretargeting configurations for bidder account '#{parent}'" begin response = realtimebidding.list_bidder_pretargeting_configs( parent, page_size: page_size, page_token: page_token ) page_token = response.next_page_token unless response.pretargeting_configs.nil? response.pretargeting_configs.each do |pretargeting_config| print_pretargeting_config(pretargeting_config) end else puts 'No pretargeting configurations found for buyer account' end end until page_token == nil end if __FILE__ == $0 begin # Retrieve the service used to make API requests. service = get_service() rescue ArgumentError => e raise 'Unable to create service, with error message: #{e.message}' rescue Signet::AuthorizationError => e raise 'Unable to create service, was the KEY_FILE in util.rb set? Error message: #{e.message}' end # Set options and default values for fields used in this example. options = [ Option.new( 'account_id', 'The resource ID of the bidders resource under which the pretargeting configurations were created, This will '\ 'be used to construct the parent used as a path parameter for the pretargetingConfigs.list request.', type: Integer, short_alias: 'a', required: true, default_value: nil ), Option.new( 'page_size', 'The number of rows to return per page. The server may return fewer rows than specified.', type: Array, short_alias: 'u', required: false, default_value: MAX_PAGE_SIZE ), ] # Parse options. parser = Parser.new(options) opts = parser.parse(ARGV) begin list_pretargeting_configs(service, opts) rescue Google::Apis::ServerError => e raise "The following server error occured:\n#{e.message}" rescue Google::Apis::ClientError => e raise "Invalid client request:\n#{e.message}" rescue Google::Apis::AuthorizationError => e raise "Authorization error occured:\n#{e.message}" end end
기존 사전 타겟팅 구성 패치 적용
기존 사전 타겟팅을 패치하는 방법은 다음과 같습니다.
구성을
bidders.pretargetingConfigs.patch
:
patch
메서드를 사용하여 사전 타겟팅 구성의
state
입니다. 다음 bidders.pretargetingConfigs.activate
및
대신 bidders.pretargetingConfigs.suspend
메서드를 사용하세요.
REST
요청
PATCH https://realtimebidding.googleapis.com/v1/bidders/12345678/pretargetingConfigs/560983?updateMask=displayName%2CincludedFormats%2CgeoTargeting.includedIds%2CincludedCreativeDimensions&alt=json Authorization: Bearer <INSERT_ACCESS_TOKEN_HERE> Content-Type: application/json { "displayName": "TEST_PRETARGETING_CONFIG_1153a27b-ee53-43af-a051-88eecd309510", "includedFormats": [ "HTML", "VAST" ], "geoTargeting": { "includedIds": [ "200635", "1014448", "1022183", "200622", "1023191", "9061237", "1014221" ] }, "includedCreativeDimensions": [ { "height": 480, "width": 320 }, { "height": 1080, "width": 1920 } ] }
응답
{ "name": "bidders/12345678/pretargetingConfigs/560983", "displayName": "TEST_PRETARGETING_CONFIG_1153a27b-ee53-43af-a051-88eecd309510", "billingId": "112233445566", "state": "ACTIVE", "includedFormats": [ "HTML", "VAST" ], "geoTargeting": { "includedIds": [ "200635", "1014448", "1022183", "200622", "1023191", "9061237", "1014221" ] }, "interstitialTargeting": "ONLY_NON_INTERSTITIAL_REQUESTS", "includedCreativeDimensions": [ { "width": "320", "height": "480" }, { "width": "1920", "height": "1080" } ], "minimumViewabilityDecile": 5 }
C#
/* Copyright 2020 Google LLC * * Licensed under the Apache License, Version 2.0 (the L"icense)"; * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an A"S IS "BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied * See the License for the specific language governing permissions and * limitations under the License. */ using Google.Apis.RealTimeBidding.v1; using Google.Apis.RealTimeBidding.v1.Data; using Mono.Options; using System; using System.Collections.Generic; namespace Google.Apis.RealTimeBidding.Examples.v1.Bidders.PretargetingConfigs { /// s<ummary<>/span> /// Patches a pretargeting configuration with a specified name. /// /<summary > public class PatchPretargetingConfigs : ExampleBase { private RealTimeBiddingService rtbService; /// s<ummary<>/span> /// Constructor. /// /<summary > public PatchPretargetingConfigs() { rtbService = Utilities.GetRealTimeBiddingService(); } /// s<ummary<>/span> /// Returns a description about the code example. /// /<summary > public override string Description { get = >T"his code example patches a specified pretargeting configuration.;" } /// s<ummary<>/span> /// Parse specified arguments. /// /<summary > protected override Dictionarys<tring, object >ParseArguments(Lists<tring >exampleArgs) { string[] requiredOptions = new string[] {a"ccount_id," p"retargeting_config_id}"; bool showHelp = false; string accountId = null; long? pretargetingConfigId = null; string displayName = null; OptionSet options = new OptionSet { P"atches a specified pretargeting configuration.," { h"|help," S"how help message and exit.," h = >showHelp = h != null }, { a"|account_id=," (["Required] The resource ID of the bidders resource under which the "+ p"retargeting configuration was created.)", a = >accountId = a }, { p"|pretargeting_config_id=," (["Required] The resource ID of the pretargeting configuration to be "+ p"atched.)", (long p) = >pretargetingConfigId = p }, { d"isplay_name=," T"he display name to associate with the new configuration. Must be unique "+ a"mong all of a bidders' pretargeting configurations.," display_name = >displayName = display_name }, }; Lists<tring >extras = options.Parse(exampleArgs); var parsedArgs = new Dictionarys<tring, object(>); // Show help message. if(showHelp == true) { options.WriteOptionDescriptions(Console.Out); Environment.Exit(0); } // Set arguments. parsedArgs[a"ccount_id]" = accountId; parsedArgs[p"retargeting_config_id]" = pretargetingConfigId; parsedArgs[d"isplay_name]" = displayName ?? String.Format( T"EST_PRETARGETING_CONFIG_{0}," System.Guid.NewGuid()); // Validate that options were set correctly. Utilities.ValidateOptions(options, parsedArgs, requiredOptions, extras); return parsedArgs; } /// s<ummary<>/span> /// Run the example. /// /<summary > /// p<aram name=p"arsedArgsP">arsed arguments for the example./<param > protected override void Run(Dictionarys<tring, object >parsedArgs) { string accountId = (string) parsedArgs[a"ccount_id]"; long? pretargetingConfigId = (long?) parsedArgs[p"retargeting_config_id]"; string name = $b"idders/{accountId}/pretargetingConfigs/{pretargetingConfigId};" NumericTargetingDimension geoTargeting = new NumericTargetingDimension(); geoTargeting.IncludedIds = new Listl<ong?(>) { 200635L, // Austin, TX 1014448L, // Boulder, CO 1022183L, // Hoboken, NJ 200622L, // New Orleans, LA 1023191L, // New York, NY 9061237L, // Mountain View, CA 1014221L // San Francisco, CA }; CreativeDimensions dimensions1 = new CreativeDimensions(); dimensions1.Height = 480L; dimensions1.Width = 320L; CreativeDimensions dimensions2 = new CreativeDimensions(); dimensions2.Height = 1080L; dimensions2.Width = 1920L; ListC<reativeDimensions >creativeDimensions = new ListC<reativeDimensions(>) { dimensions1, dimensions2 }; PretargetingConfig body = new PretargetingConfig(); body.DisplayName = (string) parsedArgs[d"isplay_name]"; // Note that repeated fields such as this are completely overwritten by the contents // included in the patch request. body.IncludedFormats = new Lists<tring(>) {H"TML," V"AST}"; body.GeoTargeting = geoTargeting; body.IncludedCreativeDimensions = creativeDimensions; BiddersResource.PretargetingConfigsResource.PatchRequest request = rtbService.Bidders.PretargetingConfigs.Patch(body, name); PretargetingConfig response = null; Console.WriteLine(P"atching pretargeting configuration with name: {0}," name); try { response = request.Execute(); } catch (System.Exception exception) { throw new ApplicationException( $R"eal-time Bidding API returned error response:\n{exception.Message})"; } Utilities.PrintPretargetingConfiguration(response); } } }
자바
/* * Copyright 2020 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.google.api.services.samples.authorizedbuyers.realtimebidding.v1.bidders.pretargetingconfigs; import com.google.api.services.realtimebidding.v1.RealTimeBidding; import com.google.api.services.realtimebidding.v1.model.CreativeDimensions; import com.google.api.services.realtimebidding.v1.model.NumericTargetingDimension; import com.google.api.services.realtimebidding.v1.model.PretargetingConfig; import com.google.api.services.samples.authorizedbuyers.realtimebidding.Utils; import java.io.IOException; import java.security.GeneralSecurityException; import java.util.Arrays; import java.util.UUID; import net.sourceforge.argparse4j.ArgumentParsers; import net.sourceforge.argparse4j.inf.ArgumentParser; import net.sourceforge.argparse4j.inf.ArgumentParserException; import net.sourceforge.argparse4j.inf.Namespace; /** Patches a pretargeting configuration with a specified name. */ public class PatchPretargetingConfigs { public static void execute(RealTimeBidding client, Namespace parsedArgs) throws IOException { Long accountId = parsedArgs.getLong("account_id"); String name = String.format( "bidders/%s/pretargetingConfigs/%s", accountId, parsedArgs.getLong("pretargeting_config_id")); String updateMask = "displayName,includedFormats,geoTargeting.includedIds," + "includedCreativeDimensions"; NumericTargetingDimension geoTargeting = new NumericTargetingDimension(); geoTargeting.setIncludedIds( Arrays.asList( 200635L, // Austin, TX 1014448L, // Boulder, CO 1022183L, // Hoboken, NJ 200622L, // New Orleans, LA 1023191L, // New York, NY 9061237L, // Mountain View, CA 1014221L // San Francisco, CA )); CreativeDimensions creativeDimensions1 = new CreativeDimensions(); creativeDimensions1.setHeight(480L); creativeDimensions1.setWidth(320L); CreativeDimensions creativeDimensions2 = new CreativeDimensions(); creativeDimensions2.setHeight(1080L); creativeDimensions2.setWidth(1920L); PretargetingConfig body = new PretargetingConfig(); body.setDisplayName(parsedArgs.getString("display_name")); // Note that repeated fields such as this are completely overwritten by the contents included in // the patch request. body.setIncludedFormats(Arrays.asList("HTML", "VAST")); body.setGeoTargeting(geoTargeting); body.setIncludedCreativeDimensions(Arrays.asList(creativeDimensions1, creativeDimensions2)); PretargetingConfig pretargetingConfig = client .bidders() .pretargetingConfigs() .patch(name, body) .setUpdateMask(updateMask) .execute(); System.out.printf("Patched pretargeting configuration with name '%s':\n", name); Utils.printPretargetingConfig(pretargetingConfig); } public static void main(String[] args) { ArgumentParser parser = ArgumentParsers.newFor("PatchPretargetingConfigs") .build() .defaultHelp(true) .description(("Patches a specified pretargeting configuration.")); parser .addArgument("-a", "--account_id") .help( "The resource ID of the bidders resource under which the pretargeting " + "configuration was created.") .required(true) .type(Long.class); parser .addArgument("-p", "--pretargeting_config_id") .help("The resource ID of the pretargeting configuration to be patched.") .required(true) .type(Integer.class); parser .addArgument("-d", "--display_name") .help( "The display name to associate with the new configuration. Must be unique among " + "all of a bidder's pretargeting configurations.") .setDefault(String.format("TEST_PRETARGETING_CONFIG_%s", UUID.randomUUID())); Namespace parsedArgs = null; try { parsedArgs = parser.parseArgs(args); } catch (ArgumentParserException ex) { parser.handleError(ex); System.exit(1); } RealTimeBidding client = null; try { client = Utils.getRealTimeBiddingClient(); } catch (IOException ex) { System.out.printf("Unable to create RealTimeBidding API service:\n%s", ex); System.out.println("Did you specify a valid path to a service account key file?"); System.exit(1); } catch (GeneralSecurityException ex) { System.out.printf("Unable to establish secure HttpTransport:\n%s", ex); System.exit(1); } try { execute(client, parsedArgs); } catch (IOException ex) { System.out.printf("RealTimeBidding API returned error response:\n%s", ex); System.exit(1); } } }
PHP
<?php /** * Copyright 2020 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Google\Ads\AuthorizedBuyers\RealTimeBidding\Examples\V1\Bidders_PretargetingConfigs; use Google\Ads\AuthorizedBuyers\RealTimeBidding\ExampleUtil\BaseExample; use Google\Ads\AuthorizedBuyers\RealTimeBidding\ExampleUtil\Config; use Google_Service_RealTimeBidding_PretargetingConfig; use Google_Service_RealTimeBidding_AppTargeting; use Google_Service_RealTimeBidding_CreativeDimensions; use Google_Service_RealTimeBidding_NumericTargetingDimension; use Google_Service_RealTimeBidding_StringTargetingDimension; /** * Patches a pretargeting configuration with the specified name. */ class PatchPretargetingConfigs extends BaseExample { public function __construct($client) { $this->service = Config::getGoogleServiceRealTimeBidding($client); } /** * @see BaseExample::getInputParameters() */ protected function getInputParameters() { return [ [ 'name' => 'account_id', 'display' => 'Account ID', 'description' => 'The resource ID of the bidders resource under which the pretargeting ' . 'configuration was created.', 'required' => true ], [ 'name' => 'pretargeting_config_id', 'display' => 'Pretargeting configuration ID', 'description' => 'The resource ID of the pretargeting configuration to be patched.', 'required' => true, ], [ 'name' => 'display_name', 'display' => 'Display name', 'description' => 'The patched display name to associate with the configuration. Must be ' . 'unique among all of a bidder\'s pretargeting configurations.', 'required' => false, 'default' => 'TEST_PRETARGETING_CONFIG_' . uniqid() ] ]; } /** * @see BaseExample::run() */ public function run() { $values = $this->formValues; $name = "bidders/$values[account_id]/pretargetingConfigs/$values[pretargeting_config_id]"; $geoTargeting = new Google_Service_RealTimeBidding_NumericTargetingDimension(); $geoTargeting->includedIds = [ '200635', // Austin, TX '1014448', // Boulder, CO '1022183', // Hoboken, NJ '200622', // New Orleans, LA '1023191', // New York, NY '9061237', // Mountain View, CA '1014221' // San Francisco, CA ]; $includedCreativeDimensions1 = new Google_Service_RealTimeBidding_CreativeDimensions(); $includedCreativeDimensions1->height = 480; $includedCreativeDimensions1->width = 320; $includedCreativeDimensions2 = new Google_Service_RealTimeBidding_CreativeDimensions(); $includedCreativeDimensions2->height = 1080; $includedCreativeDimensions2->width = 1920; $body = new Google_Service_RealTimeBidding_PretargetingConfig(); $body->displayName = $values['display_name']; $body->includedFormats = ['HTML', 'VAST']; $body->geoTargeting = $geoTargeting; $body->includedCreativeDimensions = [$includedCreativeDimensions1, $includedCreativeDimensions2]; $queryParams = [ 'updateMask' => 'displayName,includedFormats,geoTargeting.includedIds,includedCreativeDimensions' ]; print "<h2>Patching a pretargeting configuration with name '$name':</h2>"; $result = $this->service->bidders_pretargetingConfigs->patch($name, $body, $queryParams); $this->printResult($result); } /** * @see BaseExample::getName() */ public function getName() { return 'Patch Pretargeting Configuration'; } }
Python
#!/usr/bin/python # # Copyright 2020 Google Inc. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """This example patches a pretargeting config with a specified name.""" import argparse import os import pprint import sys import uuid sys.path.insert(0, os.path.abspath('../../..')) from googleapiclient.errors import HttpError import util _PRETARGETING_CONFIG_NAME_TEMPLATE = 'bidders/%s/pretargetingConfigs/%s' DEFAULT_BIDDER_RESOURCE_ID = 'ENTER_BIDDER_RESOURCE_ID_HERE' DEFAULT_PRETARGETING_CONFIG_RESOURCE_ID = 'ENTER_CONFIG_RESOURCE_ID_HERE' def main(realtimebidding, args): pretargeting_config_name = _PRETARGETING_CONFIG_NAME_TEMPLATE % ( args.account_id, args.pretargeting_config_id) body = { 'displayName': args.display_name, 'includedFormats': ['HTML', 'VAST'], 'geoTargeting': { # Note that repeated fields such as this are completely overwritten # by the contents included in the patch request. 'includedIds': [ '200635', # Austin, TX '1014448', # Boulder, CO '1022183', # Hoboken, NJ '200622', # New Orleans, LA '1023191', # New York, NY '9061237', # Mountain View, CA '1014221' # San Francisco, CA ], }, 'includedCreativeDimensions': [ { 'height': 480, 'width': 320 }, { 'height': 1080, 'width': 1920 } ], } update_mask = ('displayName,includedFormats,geoTargeting.includedIds,' 'includedCreativeDimensions') print('Patching a pretargeting configuration with name: ' f'"{pretargeting_config_name}".') try: response = realtimebidding.bidders().pretargetingConfigs().patch( name=pretargeting_config_name, body=body, updateMask=update_mask).execute() except HttpError as e: print(e) sys.exit(1) pprint.pprint(response) if __name__ == '__main__': try: service = util.GetService(version='v1') except IOError as ex: print(f'Unable to create realtimebidding service - {ex}') print('Did you specify the key file in util.py?') sys.exit(1) parser = argparse.ArgumentParser( description='Patches a specified pretargeting configuration.') # Required fields. parser.add_argument( '-a', '--account_id', default=DEFAULT_BIDDER_RESOURCE_ID, help=('The resource ID of the bidders resource under which the ' 'pretargeting configuration was created.')) parser.add_argument( '-p', '--pretargeting_config_id', default=DEFAULT_PRETARGETING_CONFIG_RESOURCE_ID, help='The resource ID of the pretargeting configuration to be patched.') # Optional fields. parser.add_argument( '-d', '--display_name', default=f'TEST_PRETARGETING_CONFIG_{uuid.uuid4()}', help=('The display name to associate with the new configuration. Must ' 'be unique among all of a bidder\'s pretargeting configurations.')) args = parser.parse_args() main(service, args)
Ruby
#!/usr/bin/env ruby # Encoding: utf-8 # # Copyright:: Copyright 2020 Google LLC # # License:: Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or # implied. # See the License for the specific language governing permissions and # limitations under the License. # # Patches a pretargeting configuration for the given bidder account and pretargeting configuration IDs. require 'optparse' require 'securerandom' require_relative '../../../util' def patch_pretargeting_configs(realtimebidding, options) name = "bidders/#{options[:account_id]}/pretargetingConfigs/#{options[:pretargeting_config_id]}" body = Google::Apis::RealtimebiddingV1::PretargetingConfig.new( display_name: options[:display_name], included_formats: ['HTML', 'VAST'], # Note that repeated fields such as geo_targeting are completely overwritten by the contents included in the patch # request. geo_targeting: Google::Apis::RealtimebiddingV1::NumericTargetingDimension.new( included_ids: [ '200635', # Austin, TX '1014448', # Boulder, CO '1022183', # Hoboken, NJ '200622', # New Orleans, LA '1023191', # New York, NY '9061237', # Mountain View, CA '1014221', # San Francisco, CA ], ), included_creative_dimensions: [ Google::Apis::RealtimebiddingV1::CreativeDimensions.new( height: 480, width: 320 ), Google::Apis::RealtimebiddingV1::CreativeDimensions.new( height: 1080, width: 1920 ), ], ) update_mask = 'displayName,includedFormats,geoTargeting.includedIds,includedCreativeDimensions' puts "Patching a pretargeting configuration with name: '#{name}'" pretargeting_config = realtimebidding.patch_bidder_pretargeting_config(name, body, update_mask: update_mask) print_pretargeting_config(pretargeting_config) end if __FILE__ == $0 begin # Retrieve the service used to make API requests. service = get_service() rescue ArgumentError => e raise 'Unable to create service, with error message: #{e.message}' rescue Signet::AuthorizationError => e raise 'Unable to create service, was the KEY_FILE in util.rb set? Error message: #{e.message}' end # Set options and default values for fields used in this example. options = [ Option.new( 'account_id', 'The resource ID of the bidders resource under which the pretargeting configuration is to be created, This '\ 'will be used to construct the name used as a path parameter for the pretargetingConfig.create request.', type: Integer, short_alias: 'a', required: true, default_value: nil ), Option.new( 'pretargeting_config_id', 'The resource ID of the pretargeting configuration to be patched.', type: Integer, required: true, default_value: nil ), Option.new( 'display_name', 'The patched display name to associate with the configuration. Must be unique among all of a bidder\'s '\ 'pretargeting configurations.', short_alias: 'd', required: false, default_value: "TEST_PRETARGETING_CONFIG_#{SecureRandom.uuid}" ), ] # Parse options. parser = Parser.new(options) opts = parser.parse(ARGV) begin patch_pretargeting_configs(service, opts) rescue Google::Apis::ServerError => e raise "The following server error occured:\n#{e.message}" rescue Google::Apis::ClientError => e raise "Invalid client request:\n#{e.message}" rescue Google::Apis::AuthorizationError => e raise "Authorization error occured:\n#{e.message}" end end
기존 구성 활성화 및 정지
이후 모든 사전 타겟팅 구성의 state
이 ACTIVE
로 설정됩니다.
생성 후 구성을 활성화하거나 정지하려면
kubectl run 명령어를 사용하여
bidders.pretargetingConfigs.activate
및 bidders.pretargetingConfigs.suspend
메서드를 참조하세요. 두 가지 방법 모두 구성의
있습니다.
사전 타겟팅 구성을 활성화하는 방법은 다음과 같습니다.
REST
요청
POST https://realtimebidding.googleapis.com/v1/bidders/12345678/pretargetingConfigs/560983:activate?alt=json Authorization: Bearer <INSERT_ACCESS_TOKEN_HERE> Content-Type: application/json
응답
{ "name": "bidders/12345678/pretargetingConfigs/560983", "displayName": "TEST_PRETARGETING_CONFIG_1153a27b-ee53-43af-a051-88eecd309510", "billingId": "112233445566", "state": "ACTIVE", "includedFormats": [ "HTML", "VAST" ], "geoTargeting": { "includedIds": [ "200635", "1014448", "1022183", "200622", "1023191", "9061237", "1014221" ] }, "interstitialTargeting": "ONLY_NON_INTERSTITIAL_REQUESTS", "includedCreativeDimensions": [ { "width": "320", "height": "480" }, { "width": "1920", "height": "1080" } ], "minimumViewabilityDecile": 5 }
C#
/* Copyright 2020 Google LLC * * Licensed under the Apache License, Version 2.0 (the L"icense)"; * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an A"S IS "BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied * See the License for the specific language governing permissions and * limitations under the License. */ using Google.Apis.RealTimeBidding.v1; using Google.Apis.RealTimeBidding.v1.Data; using Mono.Options; using System; using System.Collections.Generic; namespace Google.Apis.RealTimeBidding.Examples.v1.Bidders.PretargetingConfigs { /// s<ummary<>/span> /// Activates a pretargeting configuration with a specified name. /// /<summary > public class ActivatePretargetingConfigs : ExampleBase { private RealTimeBiddingService rtbService; /// s<ummary<>/span> /// Constructor. /// /<summary > public ActivatePretargetingConfigs() { rtbService = Utilities.GetRealTimeBiddingService(); } /// s<ummary<>/span> /// Returns a description about the code example. /// /<summary > public override string Description { get = >T"his code example activates a specified pretargeting configuration;" } /// s<ummary<>/span> /// Parse specified arguments. /// /<summary > protected override Dictionarys<tring, object >ParseArguments(Lists<tring >exampleArgs) { string[] requiredOptions = new string[] {a"ccount_id," p"retargeting_config_id}"; bool showHelp = false; string accountId = null; long? pretargetingConfigId = null; OptionSet options = new OptionSet { A"ctivates a specified pretargeting configuration.," { h"|help," S"how help message and exit.," h = >showHelp = h != null }, { a"|account_id=," (["Required] The resource ID of the bidders resource under which the "+ p"retargeting configuration was created.)", a = >accountId = a }, { p"|pretargeting_config_id=," (["Required] The resource ID of the pretargeting configuration that is "+ b"eing activated.)", (long p) = >pretargetingConfigId = p }, }; Lists<tring >extras = options.Parse(exampleArgs); var parsedArgs = new Dictionarys<tring, object(>); // Show help message. if(showHelp == true) { options.WriteOptionDescriptions(Console.Out); Environment.Exit(0); } // Set arguments. parsedArgs[a"ccount_id]" = accountId; parsedArgs[p"retargeting_config_id]" = pretargetingConfigId; // Validate that options were set correctly. Utilities.ValidateOptions(options, parsedArgs, requiredOptions, extras); return parsedArgs; } /// s<ummary<>/span> /// Run the example. /// /<summary > /// p<aram name=p"arsedArgsP">arsed arguments for the example./<param > protected override void Run(Dictionarys<tring, object >parsedArgs) { string accountId = (string) parsedArgs[a"ccount_id]"; long? pretargetingConfigId = (long?) parsedArgs[p"retargeting_config_id]"; string name = $b"idders/{accountId}/pretargetingConfigs/{pretargetingConfigId};" BiddersResource.PretargetingConfigsResource.ActivateRequest request = rtbService.Bidders.PretargetingConfigs.Activate( new ActivatePretargetingConfigRequest(), name); PretargetingConfig response = null; Console.WriteLine(A"ctivating pretargeting configuration with name: {'0},'" name); try { response = request.Execute(); } catch (System.Exception exception) { throw new ApplicationException( $R"eal-time Bidding API returned error response:\n{exception.Message})"; } Utilities.PrintPretargetingConfiguration(response); } } }
자바
/* * Copyright 2020 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.google.api.services.samples.authorizedbuyers.realtimebidding.v1.bidders.pretargetingconfigs; import com.google.api.services.realtimebidding.v1.RealTimeBidding; import com.google.api.services.realtimebidding.v1.model.ActivatePretargetingConfigRequest; import com.google.api.services.realtimebidding.v1.model.PretargetingConfig; import com.google.api.services.samples.authorizedbuyers.realtimebidding.Utils; import java.io.IOException; import java.security.GeneralSecurityException; import net.sourceforge.argparse4j.ArgumentParsers; import net.sourceforge.argparse4j.inf.ArgumentParser; import net.sourceforge.argparse4j.inf.ArgumentParserException; import net.sourceforge.argparse4j.inf.Namespace; /** Activates a specified pretargeting configuration. */ public class ActivatePretargetingConfigs { public static void execute(RealTimeBidding client, Namespace parsedArgs) throws IOException { String name = String.format( "bidders/%s/pretargetingConfigs/%s", parsedArgs.getLong("account_id"), parsedArgs.getLong("pretargeting_config_id")); System.out.printf("Activating pretargeting configuration with name: %s\n", name); PretargetingConfig pretargetingConfig = client .bidders() .pretargetingConfigs() .activate(name, new ActivatePretargetingConfigRequest()) .execute(); Utils.printPretargetingConfig(pretargetingConfig); } public static void main(String[] args) { ArgumentParser parser = ArgumentParsers.newFor("ActivatePretargetingConfigs") .build() .defaultHelp(true) .description(("Activates a specified pretargeting configuration.")); parser .addArgument("-a", "--account_id") .help( "The resource ID of the bidders resource under which the pretargeting " + "configuration was created.") .required(true) .type(Long.class); parser .addArgument("-p", "--pretargeting_config_id") .help("The resource ID of the pretargeting configuration that is being activated.") .required(true) .type(Long.class); Namespace parsedArgs = null; try { parsedArgs = parser.parseArgs(args); } catch (ArgumentParserException ex) { parser.handleError(ex); System.exit(1); } RealTimeBidding client = null; try { client = Utils.getRealTimeBiddingClient(); } catch (IOException ex) { System.out.printf("Unable to create RealTimeBidding API service:\n%s", ex); System.out.println("Did you specify a valid path to a service account key file?"); System.exit(1); } catch (GeneralSecurityException ex) { System.out.printf("Unable to establish secure HttpTransport:\n%s", ex); System.exit(1); } try { execute(client, parsedArgs); } catch (IOException ex) { System.out.printf("RealTimeBidding API returned error response:\n%s", ex); System.exit(1); } } }
PHP
<?php /** * Copyright 2020 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Google\Ads\AuthorizedBuyers\RealTimeBidding\Examples\V1\Bidders_PretargetingConfigs; use Google\Ads\AuthorizedBuyers\RealTimeBidding\ExampleUtil\BaseExample; use Google\Ads\AuthorizedBuyers\RealTimeBidding\ExampleUtil\Config; use Google_Service_RealTimeBidding_ActivatePretargetingConfigRequest; /** * Activates a specified pretargeting configuration. */ class ActivatePretargetingConfigs extends BaseExample { public function __construct($client) { $this->service = Config::getGoogleServiceRealTimeBidding($client); } /** * @see BaseExample::getInputParameters() */ protected function getInputParameters() { return [ [ 'name' => 'account_id', 'display' => 'Account ID', 'description' => 'The resource ID of the bidders resource under which the pretargeting ' . 'configuration was created.', 'required' => true ], [ 'name' => 'pretargeting_config_id', 'display' => 'Pretargeting configuration ID', 'description' => 'The resource ID of the pretargeting configuration that is being activated.', 'required' => true, ] ]; } /** * @see BaseExample::run() */ public function run() { $values = $this->formValues; $name = "bidders/$values[account_id]/pretargetingConfigs/$values[pretargeting_config_id]"; $activateRequest = new Google_Service_RealTimeBidding_ActivatePretargetingConfigRequest(); print "<h2>Activating a pretargeting configuration with name '$name':</h2>"; $result = $this->service->bidders_pretargetingConfigs->activate($name, $activateRequest); $this->printResult($result); } /** * @see BaseExample::getName() */ public function getName() { return 'Activate Pretargeting Configuration'; } }
Python
#!/usr/bin/python # # Copyright 2020 Google Inc. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """This example activates a specified pretargeting configuration.""" import argparse import os import pprint import sys sys.path.insert(0, os.path.abspath('../../..')) from googleapiclient.errors import HttpError import util _PRETARGETING_CONFIG_NAME_TEMPLATE = 'bidders/%s/pretargetingConfigs/%s' DEFAULT_BUYER_RESOURCE_ID = 'ENTER_BIDDER_RESOURCE_ID_HERE' DEFAULT_PRETARGETING_CONFIG_RESOURCE_ID = 'ENTER_CONFIG_RESOURCE_ID_HERE' def main(realtimebidding, account_id, pretargeting_config_id): pretargeting_config_name = _PRETARGETING_CONFIG_NAME_TEMPLATE % ( account_id, pretargeting_config_id) print('Activating a PretargetingConfig with name: "%s".' % pretargeting_config_name) try: response = realtimebidding.bidders().pretargetingConfigs().activate( name=pretargeting_config_name).execute() except HttpError as e: print(e) sys.exit(1) pprint.pprint(response) if __name__ == '__main__': try: service = util.GetService(version='v1') except IOError as ex: print('Unable to create realtimebidding service - %s' % ex) print('Did you specify the key file in util.py?') sys.exit(1) parser = argparse.ArgumentParser( description=('Activates a specified pretargeting configuration.')) # Required fields. parser.add_argument( '-a', '--account_id', default=DEFAULT_BUYER_RESOURCE_ID, required=True, help=('The resource ID of the bidders resource under which the ' 'pretargetingConfigs were created.')) parser.add_argument( '-p', '--pretargeting_config_id', default=DEFAULT_PRETARGETING_CONFIG_RESOURCE_ID, help=('The resource ID of the PretargetingConfig resource that is being ' 'activated.')) args = parser.parse_args() main(service, args.account_id, args.pretargeting_config_id)
Ruby
#!/usr/bin/env ruby # Encoding: utf-8 # # Copyright:: Copyright 2020 Google LLC # # License:: Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or # implied. # See the License for the specific language governing permissions and # limitations under the License. # # Activates a specified pretargeting configuration. require 'optparse' require_relative '../../../util' def activate_pretargeting_configs(realtimebidding, options) name = "bidders/#{options[:account_id]}/pretargetingConfigs/#{options[:pretargeting_config_id]}" puts "Activating a pretargeting configuraton with name: '#{name}'" pretargeting_config = realtimebidding.activate_pretargeting_config(name) print_pretargeting_config(pretargeting_config) end if __FILE__ == $0 begin # Retrieve the service used to make API requests. service = get_service() rescue ArgumentError => e raise 'Unable to create service, with error message: #{e.message}' rescue Signet::AuthorizationError => e raise 'Unable to create service, was the KEY_FILE in util.rb set? Error message: #{e.message}' end # Set options and default values for fields used in this example. options = [ Option.new( 'account_id', 'The resource ID of the bidders resource under which the pretargeting configurations were created, This will '\ 'be used to construct the parent used as a path parameter for the pretargetingConfigs.activate request.', type: Integer, short_alias: 'a', required: true, default_value: nil ), Option.new( 'pretargeting_config_id', 'The resource ID of the pretargeting configuration that is being activated.', type: Integer, short_alias: 'p', required: true, default_value: nil ), ] # Parse options. parser = Parser.new(options) opts = parser.parse(ARGV) begin activate_pretargeting_configs(service, opts) rescue Google::Apis::ServerError => e raise "The following server error occured:\n#{e.message}" rescue Google::Apis::ClientError => e raise "Invalid client request:\n#{e.message}" rescue Google::Apis::AuthorizationError => e raise "Authorization error occured:\n#{e.message}" end end
타겟팅된 모바일 애플리케이션, 게시자 및 사이트를 수정합니다.
appTargeting
에서 값을 추가하거나 삭제하려면 다음 안내를 따르세요.
publisherTargeting
또는 webTargeting
필드는
다음과 같은 메서드를 사용합니다.
- addTargetedApps
- addTargetedPublishers
- addTargetedSites
- removeTargetedApps
- removeTargetedPublishers
- removeTargetedSites
위의 메서드는 타겟팅 기준에서만 값을 추가하거나 삭제하는 것이 아니라
덮어쓰는 것보다 더 어려울 수 있습니다 또한
patch
메서드를 지원하지만 patch
요청에서 반복되는 필드를 덮어씁니다.
다음은 계정에서 앱 ID를 추가하고 삭제하는 방법을 보여주는 두 가지 예입니다.
appTargeting
는 다음과 같습니다.
REST
요청
POST https://realtimebidding.googleapis.com/v1/bidders/12345678/pretargetingConfigs/560983:addTargetedApps?alt=json Authorization: Bearer <INSERT_ACCESS_TOKEN_HERE> Content-Type: application/json { "appIds": [ "com.google.test1", "com.google.test2", "com.google.test3" ], "targetingMode": "INCLUSIVE" }
응답
{ "name": "bidders/12345678/pretargetingConfigs/560983", "displayName": "TEST_PRETARGETING_CONFIG_1153a27b-ee53-43af-a051-88eecd309510", "billingId": "112233445566", "state": "ACTIVE", "includedFormats": [ "HTML", "VAST" ], "geoTargeting": { "includedIds": [ "200635", "1014448", "1022183", "200622", "1023191", "9061237", "1014221" ] }, "interstitialTargeting": "ONLY_NON_INTERSTITIAL_REQUESTS", "includedCreativeDimensions": [ { "width": "320", "height": "480" }, { "width": "1920", "height": "1080" } ], "appTargeting": { "mobileAppTargeting": { "targetingMode": "INCLUSIVE", "values": [ "com.google.test1", "com.google.test2", "com.google.test3" ] } }, "minimumViewabilityDecile": 5 }
C#
/* Copyright 2020 Google LLC * * Licensed under the Apache License, Version 2.0 (the L"icense)"; * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an A"S IS "BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied * See the License for the specific language governing permissions and * limitations under the License. */ using Google.Apis.RealTimeBidding.v1; using Google.Apis.RealTimeBidding.v1.Data; using Mono.Options; using System; using System.Collections.Generic; namespace Google.Apis.RealTimeBidding.Examples.v1.Bidders.PretargetingConfigs { /// s<ummary<>/span> /// Adds mobile application IDs to a pretargeting configurations' app targeting. /// /// Note that this is the only way to append mobile application IDs following a pretargeting /// configurations' creation. If a pretargeting configuration already targets mobile /// application IDs, you must specify a targeting mode that is identical to the existing /// targeting mode. /// /<summary > public class AddTargetedApps : ExampleBase { private RealTimeBiddingService rtbService; /// s<ummary<>/span> /// Constructor. /// /<summary > public AddTargetedApps() { rtbService = Utilities.GetRealTimeBiddingService(); } /// s<ummary<>/span> /// Returns a description about the code example. /// /<summary > public override string Description { get = >T"his code example adds mobile application IDs to a pretargeting "+ c"onfigurations' app targeting.;" } /// s<ummary<>/span> /// Parse specified arguments. /// /<summary > protected override Dictionarys<tring, object >ParseArguments(Lists<tring >exampleArgs) { string[] requiredOptions = new string[] { a"ccount_id," p"retargeting_config_id," m"obile_app_targeting_mode," m"obile_app_targeting_app_ids " }; bool showHelp = false; string accountId = null; long? pretargetingConfigId = null; string mobileAppTargetingMode = null; ILists<tring >mobileAppTargetingAppIds = new Lists<tring(>); OptionSet options = new OptionSet { A"dds mobile application IDs to a pretargeting configurations' app targeting.," { h"|help," S"how help message and exit.," h = >showHelp = h != null }, { a"|account_id=," (["Required] The resource ID of the bidders resource under which the "+ p"retargeting configuration was created.)", a = >accountId = a }, { p"|pretargeting_config_id=," (["Required] The resource ID of the pretargeting configuration that is "+ b"eing acted upon.)", (long p) = >pretargetingConfigId = p }, { m"obile_app_targeting_mode=," (["Required] The targeting mode for this configurations' mobile app "+ t"argeting. Valid values include: INCLUSIVE, and EXCLUSIVE. Note that if "+ t"he configuration already targets mobile app Ids, you must specify an "+ i"dentical targeting mode.)", mobile_app_targeting_mode = >mobileAppTargetingMode = mobile_app_targeting_mode }, { m"obile_app_targeting_app_ids=," (["Required] The mobile app IDs specified for this configurations' mobile "+ a"pp targeting, which allows one to target a subset of mobile app "+ i"nventory. Specify this argument for each value you intend to include. "+ V"alues specified must be valid URLs.)", mobile_app_targeting_app_ids = >mobileAppTargetingAppIds.Add( mobile_app_targeting_app_ids) }, }; Lists<tring >extras = options.Parse(exampleArgs); var parsedArgs = new Dictionarys<tring, object(>); // Show help message. if(showHelp == true) { options.WriteOptionDescriptions(Console.Out); Environment.Exit(0); } // Set arguments. parsedArgs[a"ccount_id]" = accountId; parsedArgs[p"retargeting_config_id]" = pretargetingConfigId; parsedArgs[m"obile_app_targeting_mode]" = mobileAppTargetingMode; parsedArgs[m"obile_app_targeting_app_ids]" = mobileAppTargetingAppIds.Count >0 ? mobileAppTargetingAppIds : null; // Validate that options were set correctly. Utilities.ValidateOptions(options, parsedArgs, requiredOptions, extras); return parsedArgs; } /// s<ummary<>/span> /// Run the example. /// /<summary > /// p<aram name=p"arsedArgsP">arsed arguments for the example./<param > protected override void Run(Dictionarys<tring, object >parsedArgs) { string accountId = (string) parsedArgs[a"ccount_id]"; long? pretargetingConfigId = (long?) parsedArgs[p"retargeting_config_id]"; string pretargetingConfigName = $b"idders/{accountId}/pretargetingConfigs/{pretargetingConfigId};" AddTargetedAppsRequest body = new AddTargetedAppsRequest(); body.TargetingMode = (string) parsedArgs[m"obile_app_targeting_mode]"; body.AppIds = (ILists<tring)> parsedArgs[m"obile_app_targeting_app_ids]"; BiddersResource.PretargetingConfigsResource.AddTargetedAppsRequest request = rtbService.Bidders.PretargetingConfigs.AddTargetedApps(body, pretargetingConfigName); PretargetingConfig response = null; Console.WriteLine(U"pdating mobile app targeting with new app IDs for pretargeting "+ c"onfiguration with name: {0}," pretargetingConfigName); try { response = request.Execute(); } catch (System.Exception exception) { throw new ApplicationException( $R"eal-time Bidding API returned error response:\n{exception.Message})"; } Utilities.PrintPretargetingConfiguration(response); } } }
자바
/* * Copyright 2020 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.google.api.services.samples.authorizedbuyers.realtimebidding.v1.bidders.pretargetingconfigs; import com.google.api.services.realtimebidding.v1.RealTimeBidding; import com.google.api.services.realtimebidding.v1.model.AddTargetedAppsRequest; import com.google.api.services.realtimebidding.v1.model.PretargetingConfig; import com.google.api.services.samples.authorizedbuyers.realtimebidding.Utils; import java.io.IOException; import java.security.GeneralSecurityException; import net.sourceforge.argparse4j.ArgumentParsers; import net.sourceforge.argparse4j.inf.ArgumentParser; import net.sourceforge.argparse4j.inf.ArgumentParserException; import net.sourceforge.argparse4j.inf.Namespace; /** * Adds mobile application IDs to a pretargeting configuration's app targeting. * * <p>Note that this is the only way to append mobile application IDs following a pretargeting * configuration's creation. If a pretargeting configuration already targets mobile application IDs, * you must specify a targeting mode that is identical to the existing targeting mode. */ public class AddTargetedApps { public static void execute(RealTimeBidding client, Namespace parsedArgs) throws IOException { String pretargetingConfigName = String.format( "bidders/%s/pretargetingConfigs/%s", parsedArgs.getLong("account_id"), parsedArgs.getLong("pretargeting_config_id")); AddTargetedAppsRequest body = new AddTargetedAppsRequest(); body.setTargetingMode(parsedArgs.getString("mobile_app_targeting_mode")); body.setAppIds(parsedArgs.<String>getList("mobile_app_targeting_app_ids")); System.out.printf( "Updating mobile app targeting with new app IDs for pretargeting " + "configuration with name: '%s'\n", pretargetingConfigName); PretargetingConfig pretargetingConfig = client .bidders() .pretargetingConfigs() .addTargetedApps(pretargetingConfigName, body) .execute(); Utils.printPretargetingConfig(pretargetingConfig); } public static void main(String[] args) { ArgumentParser parser = ArgumentParsers.newFor("AddTargetedApps") .build() .defaultHelp(true) .description( ("Adds mobile application IDs to a pretargeting configuration's app " + "targeting.")); parser .addArgument("-a", "--account_id") .help( "The resource ID of the bidders resource under which the pretargeting " + "configuration was created.") .required(true) .type(Long.class); parser .addArgument("-p", "--pretargeting_config_id") .help("The resource ID of the pretargeting configuration that is being acted upon.") .required(true) .type(Long.class); parser .addArgument("--mobile_app_targeting_mode") .help( "The targeting mode for the configuration's mobile app targeting. Valid values include:" + " INCLUSIVE, and EXCLUSIVE. Note that if the configuration already targets mobile" + " app Ids, you must specify an identical targeting mode.") .required(true) .type(String.class); parser .addArgument("--mobile_app_targeting_app_ids") .help( "The mobile app IDs specified for this configuration's mobile app targeting, which" + " allows one to target a subset of mobile app inventory. Specify each value" + " separated by a space. Values specified must be valid mobile App IDs, as found" + " on their respective app stores.") .required(true) .type(String.class) .nargs("*"); Namespace parsedArgs = null; try { parsedArgs = parser.parseArgs(args); } catch (ArgumentParserException ex) { parser.handleError(ex); System.exit(1); } RealTimeBidding client = null; try { client = Utils.getRealTimeBiddingClient(); } catch (IOException ex) { System.out.printf("Unable to create RealTimeBidding API service:\n%s", ex); System.out.println("Did you specify a valid path to a service account key file?"); System.exit(1); } catch (GeneralSecurityException ex) { System.out.printf("Unable to establish secure HttpTransport:\n%s", ex); System.exit(1); } try { execute(client, parsedArgs); } catch (IOException ex) { System.out.printf("RealTimeBidding API returned error response:\n%s", ex); System.exit(1); } } }
PHP
<?php /** * Copyright 2020 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Google\Ads\AuthorizedBuyers\RealTimeBidding\Examples\V1\Bidders_PretargetingConfigs; use Google\Ads\AuthorizedBuyers\RealTimeBidding\ExampleUtil\BaseExample; use Google\Ads\AuthorizedBuyers\RealTimeBidding\ExampleUtil\Config; use Google_Service_RealTimeBidding_AddTargetedAppsRequest; /** * Adds mobile application IDs to a pretargeting configuration's app targeting. * * Note that this is the only way to append mobile application IDs following a * pretargeting configuration's creation. If a pretargeting configuration * already targets mobile application IDs, you must specify a targeting mode * that is identical to the existing targeting mode. */ class AddTargetedApps extends BaseExample { public function __construct($client) { $this->service = Config::getGoogleServiceRealTimeBidding($client); } /** * @see BaseExample::getInputParameters() */ protected function getInputParameters() { return [ [ 'name' => 'account_id', 'display' => 'Account ID', 'description' => 'The resource ID of the bidders resource under which the pretargeting ' . 'configuration was created.', 'required' => true ], [ 'name' => 'pretargeting_config_id', 'display' => 'Pretargeting configuration ID', 'description' => 'The resource ID of the pretargeting configuration that is being acted upon.', 'required' => true, ], [ 'name' => 'mobile_app_targeting_mode', 'display' => 'Mobile app targeting mode', 'description' => 'The targeting mode for this configuration\'s mobile app targeting. Valid ' . 'values include: INCLUSIVE, and EXCLUSIVE. Note that if the configuration ' . 'already targets mobile app Ids, you must specify an identical targeting ' . 'mode.', 'required' => false, 'default' => null ], [ 'name' => 'mobile_app_targeting_app_ids', 'display' => 'Mobile app targeting app IDs', 'description' => 'The mobile app IDs specified for this configuration\'s mobile app ' . 'targeting, which allows one to target a subset of mobile app inventory. ' . 'Specify each value separated by a comma. Values specified must be valid ' . 'mobile App IDs, as found on their respective app stores.', 'required' => false, 'is_array' => true, 'default' => [] ] ]; } /** * @see BaseExample::run() */ public function run() { $values = $this->formValues; $name = "bidders/$values[account_id]/pretargetingConfigs/$values[pretargeting_config_id]"; $addTargetedAppsRequest = new Google_Service_RealTimeBidding_AddTargetedAppsRequest(); $addTargetedAppsRequest->targetingMode = $values['mobile_app_targeting_mode']; $addTargetedAppsRequest->appIds = $values['mobile_app_targeting_app_ids']; print "<h2>Updating mobile app targeting with new app IDs for pretargeting " . "configuration with name: '$name':</h2>"; $result = $this->service->bidders_pretargetingConfigs->addTargetedApps( $name, $addTargetedAppsRequest ); $this->printResult($result); } /** * @see BaseExample::getName() */ public function getName() { return 'Add Targeted Apps'; } }
Python
#!/usr/bin/python # # Copyright 2020 Google Inc. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Adds mobile application IDs to a pretargeting configuration's app targeting. Note that this is the only way to append mobile application IDs following a pretargeting configuration's creation. If a pretargeting configuration already targets mobile application IDs, you must specify a targeting mode that is identical to the existing targeting mode. """ import argparse import os import pprint import sys sys.path.insert(0, os.path.abspath('../../..')) from googleapiclient.errors import HttpError import util _PRETARGETING_CONFIG_NAME_TEMPLATE = 'bidders/%s/pretargetingConfigs/%s' DEFAULT_BUYER_RESOURCE_ID = 'ENTER_BIDDER_RESOURCE_ID_HERE' DEFAULT_PRETARGETING_CONFIG_RESOURCE_ID = 'ENTER_CONFIG_RESOURCE_ID_HERE' def main(realtimebidding, args): pretargeting_config_name = _PRETARGETING_CONFIG_NAME_TEMPLATE % ( args.account_id, args.pretargeting_config_id) body = { 'appIds': args.mobile_app_targeting_app_ids, 'targetingMode': args.mobile_app_targeting_mode } print('Updating mobile app targeting with new app IDs for pretargeting ' f'configuration with name: "{pretargeting_config_name}".') try: response = realtimebidding.bidders().pretargetingConfigs().addTargetedApps( pretargetingConfig=pretargeting_config_name, body=body).execute() except HttpError as e: print(e) sys.exit(1) pprint.pprint(response) if __name__ == '__main__': try: service = util.GetService(version='v1') except IOError as ex: print('Unable to create realtimebidding service - %s' % ex) print('Did you specify the key file in util.py?') sys.exit(1) parser = argparse.ArgumentParser( description=('Adds mobile application IDs to a pretargeting ' 'configuration\'s app targeting')) # Required fields. parser.add_argument( '-a', '--account_id', default=DEFAULT_BUYER_RESOURCE_ID, help=('The resource ID of the bidders resource under which the ' 'pretargeting configuration was created.')) parser.add_argument( '-p', '--pretargeting_config_id', default=DEFAULT_PRETARGETING_CONFIG_RESOURCE_ID, help=('The resource ID of the pretargeting configuration that is being ' 'acted upon.')) parser.add_argument( '--mobile_app_targeting_mode', required=True, help=('The targeting mode for the configuration\'s mobile app ' 'targeting. Valid values include: INCLUSIVE, and EXCLUSIVE. Note ' 'that if the configuration already targets mobile app Ids, you ' 'must specify an identical targeting mode.')) # Optional fields. parser.add_argument( '--mobile_app_targeting_app_ids', nargs='*', required=True, help=('The mobile app IDs specified for this configuration\'s mobile ' 'app targeting, which allows one to target a subset of mobile app ' 'inventory. Specify each value separated by a space. Values ' 'specified must be valid mobile app IDs, as found on their ' 'respective app stores.')) args = parser.parse_args() main(service, args)
Ruby
#!/usr/bin/env ruby # Encoding: utf-8 # # Copyright:: Copyright 2020 Google LLC # # License:: Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or # implied. # See the License for the specific language governing permissions and # limitations under the License. # # Adds mobile application IDs to a pretargeting configuration's app targeting. # # Note that this is the only way to append mobile application IDs following a # pretargeting configuration's creation. If a pretargeting configuration # already targets mobile application IDs, you must specify a targeting mode # that is identical to the existing targeting mode. require 'optparse' require_relative '../../../util' def add_targeted_apps(realtimebidding, options) name = "bidders/#{options[:account_id]}/pretargetingConfigs/#{options[:pretargeting_config_id]}" puts "Updating mobile app targeting with new app IDs for pretargeting configuraton with name: '#{name}'" body = Google::Apis::RealtimebiddingV1::AddTargetedAppsRequest.new( app_ids: options[:mobile_app_targeting_app_ids], targeting_mode: options[:mobile_app_targeting_mode], ) pretargeting_config = realtimebidding.add_pretargeting_config_targeted_apps(name, body) print_pretargeting_config(pretargeting_config) end if __FILE__ == $0 begin # Retrieve the service used to make API requests. service = get_service() rescue ArgumentError => e raise 'Unable to create service, with error message: #{e.message}' rescue Signet::AuthorizationError => e raise 'Unable to create service, was the KEY_FILE in util.rb set? Error message: #{e.message}' end # Set options and default values for fields used in this example. options = [ Option.new( 'account_id', 'The resource ID of the bidders resource under which the pretargeting configurations were created.', type: Integer, short_alias: 'a', required: true, default_value: nil ), Option.new( 'pretargeting_config_id', 'The resource ID of the pretargeting configuration that is being acted upon.', type: Integer, short_alias: 'p', required: true, default_value: nil ), Option.new( 'mobile_app_targeting_mode', 'The targeting mode for the configuration\'s mobile app targeting. Valid values include: INCLUSIVE, and '\ 'EXCLUSIVE. Note that if the configuration already targets mobile app IDs, you must specify an identical '\ 'targeting mode.', required: false, default_value: nil ), Option.new( 'mobile_app_targeting_app_ids', 'The mobile app IDs specified for this configuration\'s mobile app targeting, which allows one to target a '\ 'subset of mobile app inventory. Specify each value separated by a comma. Values specified must be valid '\ 'mobile App IDs, as found on their respective app stores.', required: false, type: Array, default_value: [] ), ] # Parse options. parser = Parser.new(options) opts = parser.parse(ARGV) begin add_targeted_apps(service, opts) rescue Google::Apis::ServerError => e raise "The following server error occured:\n#{e.message}" rescue Google::Apis::ClientError => e raise "Invalid client request:\n#{e.message}" rescue Google::Apis::AuthorizationError => e raise "Authorization error occured:\n#{e.message}" end end
추가 요청 전에 appTargeting
를 구성하지 않으면
targetingMode
가 요청 본문에 지정되어야만
INCLUSIVE
또는 EXCLUSIVE
타겟팅이 추가된 ID에 적용됩니다. 만약
사전 타겟팅 구성의 appTargeting
이(가) 이미 앱 ID를 타겟팅하므로
요청 본문은 기존 targetingMode
있습니다
REST
요청
POST https://realtimebidding.googleapis.com/v1/bidders/12345678/pretargetingConfigs/560983:removeTargetedApps?alt=json Authorization: Bearer <INSERT_ACCESS_TOKEN_HERE> Content-Type: application/json { "appIds": [ "com.google.test1", "com.google.test2", "com.google.test3" ] }
응답
{ "name": "bidders/12345678/pretargetingConfigs/560983", "displayName": "TEST_PRETARGETING_CONFIG_1153a27b-ee53-43af-a051-88eecd309510", "billingId": "112233445566", "state": "ACTIVE", "includedFormats": [ "HTML", "VAST" ], "geoTargeting": { "includedIds": [ "200635", "1014448", "1022183", "200622", "1023191", "9061237", "1014221" ] }, "interstitialTargeting": "ONLY_NON_INTERSTITIAL_REQUESTS", "includedCreativeDimensions": [ { "width": "320", "height": "480" }, { "width": "1920", "height": "1080" } ], "minimumViewabilityDecile": 5 }
C#
/* Copyright 2020 Google LLC * * Licensed under the Apache License, Version 2.0 (the L"icense)"; * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an A"S IS "BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied * See the License for the specific language governing permissions and * limitations under the License. */ using Google.Apis.RealTimeBidding.v1; using Google.Apis.RealTimeBidding.v1.Data; using Mono.Options; using System; using System.Collections.Generic; namespace Google.Apis.RealTimeBidding.Examples.v1.Bidders.PretargetingConfigs { /// s<ummary<>/span> /// Removes mobile application IDs from a pretargeting configurations' app targeting. /// /// Note that this is the only way to remove mobile application IDs following a pretargeting /// configurations' creation. /// /<summary > public class RemoveTargetedApps : ExampleBase { private RealTimeBiddingService rtbService; /// s<ummary<>/span> /// Constructor. /// /<summary > public RemoveTargetedApps() { rtbService = Utilities.GetRealTimeBiddingService(); } /// s<ummary<>/span> /// Returns a description about the code example. /// /<summary > public override string Description { get = >T"his code example removes mobile application IDs from a pretargeting "+ c"onfigurations' app targeting.;" } /// s<ummary<>/span> /// Parse specified arguments. /// /<summary > protected override Dictionarys<tring, object >ParseArguments(Lists<tring >exampleArgs) { string[] requiredOptions = new string[] { a"ccount_id," p"retargeting_config_id," m"obile_app_targeting_app_ids " }; bool showHelp = false; string accountId = null; long? pretargetingConfigId = null; ILists<tring >mobileAppTargetingAppIds = new Lists<tring(>); OptionSet options = new OptionSet { R"emoves mobile application IDs from a pretargeting configurations' app "+ t"argeting.," { h"|help," S"how help message and exit.," h = >showHelp = h != null }, { a"|account_id=," (["Required] The resource ID of the bidders resource under which the "+ p"retargeting configuration was created.)", a = >accountId = a }, { p"|pretargeting_config_id=," (["Required] The resource ID of the pretargeting configuration that is "+ b"eing acted upon.)", (long p) = >pretargetingConfigId = p }, { m"obile_app_targeting_app_ids=," (["Required] The mobile app IDs to be removed from this configurations' "+ m"obile app targeting. Specify this argument for each value you intend to "+ i"nclude. Values specified must be valid mobile App IDs, as found on their "+ r"espective app stores.)", mobile_app_targeting_app_ids = >mobileAppTargetingAppIds.Add( mobile_app_targeting_app_ids) }, }; Lists<tring >extras = options.Parse(exampleArgs); var parsedArgs = new Dictionarys<tring, object(>); // Show help message. if(showHelp == true) { options.WriteOptionDescriptions(Console.Out); Environment.Exit(0); } // Set arguments. parsedArgs[a"ccount_id]" = accountId; parsedArgs[p"retargeting_config_id]" = pretargetingConfigId; parsedArgs[m"obile_app_targeting_app_ids]" = mobileAppTargetingAppIds.Count >0 ? mobileAppTargetingAppIds : null; // Validate that options were set correctly. Utilities.ValidateOptions(options, parsedArgs, requiredOptions, extras); return parsedArgs; } /// s<ummary<>/span> /// Run the example. /// /<summary > /// p<aram name=p"arsedArgsP">arsed arguments for the example./<param > protected override void Run(Dictionarys<tring, object >parsedArgs) { string accountId = (string) parsedArgs[a"ccount_id]"; long? pretargetingConfigId = (long?) parsedArgs[p"retargeting_config_id]"; string pretargetingConfigName = $b"idders/{accountId}/pretargetingConfigs/{pretargetingConfigId};" RemoveTargetedAppsRequest body = new RemoveTargetedAppsRequest(); body.AppIds= (ILists<tring)> parsedArgs[m"obile_app_targeting_app_ids]"; BiddersResource.PretargetingConfigsResource.RemoveTargetedAppsRequest request = rtbService.Bidders.PretargetingConfigs.RemoveTargetedApps( body, pretargetingConfigName); PretargetingConfig response = null; Console.WriteLine(R"emoving mobile application IDs from app targeting for "+ p"retargeting configuration with name: {0}," pretargetingConfigName); try { response = request.Execute(); } catch (System.Exception exception) { throw new ApplicationException( $R"eal-time Bidding API returned error response:\n{exception.Message})"; } Utilities.PrintPretargetingConfiguration(response); } } }
자바
/* * Copyright 2020 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.google.api.services.samples.authorizedbuyers.realtimebidding.v1.bidders.pretargetingconfigs; import com.google.api.services.realtimebidding.v1.RealTimeBidding; import com.google.api.services.realtimebidding.v1.model.PretargetingConfig; import com.google.api.services.realtimebidding.v1.model.RemoveTargetedAppsRequest; import com.google.api.services.samples.authorizedbuyers.realtimebidding.Utils; import java.io.IOException; import java.security.GeneralSecurityException; import net.sourceforge.argparse4j.ArgumentParsers; import net.sourceforge.argparse4j.inf.ArgumentParser; import net.sourceforge.argparse4j.inf.ArgumentParserException; import net.sourceforge.argparse4j.inf.Namespace; /** * Removes mobile application IDs from a pretargeting configuration's app targeting. * * <p>Note that this is the only way to remove mobile application IDs following a pretargeting * configuration's creation. */ public class RemoveTargetedApps { public static void execute(RealTimeBidding client, Namespace parsedArgs) throws IOException { String pretargetingConfigName = String.format( "bidders/%s/pretargetingConfigs/%s", parsedArgs.getLong("account_id"), parsedArgs.getLong("pretargeting_config_id")); RemoveTargetedAppsRequest body = new RemoveTargetedAppsRequest(); body.setAppIds(parsedArgs.<String>getList("mobile_app_targeting_app_ids")); System.out.printf( "Removing mobile app IDs from mobile app targeting for pretargeting " + "configuration with name: '%s'\n", pretargetingConfigName); PretargetingConfig pretargetingConfig = client .bidders() .pretargetingConfigs() .removeTargetedApps(pretargetingConfigName, body) .execute(); Utils.printPretargetingConfig(pretargetingConfig); } public static void main(String[] args) { ArgumentParser parser = ArgumentParsers.newFor("RemoveTargetedApps") .build() .defaultHelp(true) .description( ("Removes mobile application IDs from a pretargeting configuration's app " + "targeting.")); parser .addArgument("-a", "--account_id") .help( "The resource ID of the bidders resource under which the pretargeting " + "configuration was created.") .required(true) .type(Long.class); parser .addArgument("-p", "--pretargeting_config_id") .help("The resource ID of the pretargeting configuration that is being acted upon.") .required(true) .type(Long.class); parser .addArgument("--mobile_app_targeting_app_ids") .help( "The mobile app IDs to be removed from this configuration's mobile app targeting." + " Specify each value separated by a space. Values specified must be valid mobile" + " App IDs, as found on their respective app stores.") .required(true) .type(String.class) .nargs("*"); Namespace parsedArgs = null; try { parsedArgs = parser.parseArgs(args); } catch (ArgumentParserException ex) { parser.handleError(ex); System.exit(1); } RealTimeBidding client = null; try { client = Utils.getRealTimeBiddingClient(); } catch (IOException ex) { System.out.printf("Unable to create RealTimeBidding API service:\n%s", ex); System.out.println("Did you specify a valid path to a service account key file?"); System.exit(1); } catch (GeneralSecurityException ex) { System.out.printf("Unable to establish secure HttpTransport:\n%s", ex); System.exit(1); } try { execute(client, parsedArgs); } catch (IOException ex) { System.out.printf("RealTimeBidding API returned error response:\n%s", ex); System.exit(1); } } }
PHP
<?php /** * Copyright 2020 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Google\Ads\AuthorizedBuyers\RealTimeBidding\Examples\V1\Bidders_PretargetingConfigs; use Google\Ads\AuthorizedBuyers\RealTimeBidding\ExampleUtil\BaseExample; use Google\Ads\AuthorizedBuyers\RealTimeBidding\ExampleUtil\Config; use Google_Service_RealTimeBidding_RemoveTargetedAppsRequest; /** * Removes mobile application IDs to a pretargeting configuration's app targeting. * * Note that this is the only way to remove mobile application IDs following a * pretargeting configuration's creation. */ class RemoveTargetedApps extends BaseExample { public function __construct($client) { $this->service = Config::getGoogleServiceRealTimeBidding($client); } /** * @see BaseExample::getInputParameters() */ protected function getInputParameters() { return [ [ 'name' => 'account_id', 'display' => 'Account ID', 'description' => 'The resource ID of the bidders resource under which the pretargeting ' . 'configuration was created.', 'required' => true ], [ 'name' => 'pretargeting_config_id', 'display' => 'Pretargeting configuration ID', 'description' => 'The resource ID of the pretargeting configuration that is being acted upon.', 'required' => true, ], [ 'name' => 'mobile_app_targeting_app_ids', 'display' => 'Mobile app targeting app IDs', 'description' => 'The mobile app IDs to be removed from this configuration\'s mobile app ' . 'targeting. Specify each value separated by a comma. Values specified must ' . 'be valid mobile App IDs, as found on their respective app stores.', 'required' => false, 'is_array' => true, 'default' => [] ] ]; } /** * @see BaseExample::run() */ public function run() { $values = $this->formValues; $name = "bidders/$values[account_id]/pretargetingConfigs/$values[pretargeting_config_id]"; $removeTargetedAppsRequest = new Google_Service_RealTimeBidding_RemoveTargetedAppsRequest(); $removeTargetedAppsRequest->appIds = $values['mobile_app_targeting_app_ids']; print "<h2>Removing app IDs from mobile app targeting for pretargeting configuration " . "with name: '$name':</h2>"; $result = $this->service->bidders_pretargetingConfigs->removeTargetedApps( $name, $removeTargetedAppsRequest ); $this->printResult($result); } /** * @see BaseExample::getName() */ public function getName() { return 'Remove Targeted Apps'; } }
Python
#!/usr/bin/python # # Copyright 2020 Google Inc. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Removes mobile app IDs from a pretargeting configuration's app targeting. Note that this is the only way to remove mobile application IDs following a pretargeting configuration's creation. """ import argparse import os import pprint import sys sys.path.insert(0, os.path.abspath('../../..')) from googleapiclient.errors import HttpError import util _PRETARGETING_CONFIG_NAME_TEMPLATE = 'bidders/%s/pretargetingConfigs/%s' DEFAULT_BUYER_RESOURCE_ID = 'ENTER_BIDDER_RESOURCE_ID_HERE' DEFAULT_PRETARGETING_CONFIG_RESOURCE_ID = 'ENTER_CONFIG_RESOURCE_ID_HERE' def main(realtimebidding, args): pretargeting_config_name = _PRETARGETING_CONFIG_NAME_TEMPLATE % ( args.account_id, args.pretargeting_config_id) body = { 'appIds': args.mobile_app_targeting_app_ids } print('Removing mobile app IDs from mobile app targeting for pretargeting ' f'configuration with name: "{pretargeting_config_name}".') try: response = realtimebidding.bidders().pretargetingConfigs().removeTargetedApps( pretargetingConfig=pretargeting_config_name, body=body).execute() except HttpError as e: print(e) sys.exit(1) pprint.pprint(response) if __name__ == '__main__': try: service = util.GetService(version='v1') except IOError as ex: print('Unable to create realtimebidding service - %s' % ex) print('Did you specify the key file in util.py?') sys.exit(1) parser = argparse.ArgumentParser( description=('Removes mobile app IDs from a pretargeting ' 'configuration\'s app targeting.')) # Required fields. parser.add_argument( '-a', '--account_id', default=DEFAULT_BUYER_RESOURCE_ID, required=True, help=('The resource ID of the bidders resource under which the ' 'pretargeting configuration was created.')) parser.add_argument( '-p', '--pretargeting_config_id', default=DEFAULT_PRETARGETING_CONFIG_RESOURCE_ID, help=('The resource ID of the pretargeting configuration that is being ' 'acted upon.')) # Optional fields. parser.add_argument( '--mobile_app_targeting_app_ids', nargs='*', default=[], help=('The mobile app IDs to be removed from this configuration\'s ' 'mobile app targeting. Specify each value separated by a space. ' 'Values specified must be valid mobile app IDs, as found on their ' 'respective app stores.')) args = parser.parse_args() main(service, args)
Ruby
#!/usr/bin/env ruby # Encoding: utf-8 # # Copyright:: Copyright 2020 Google LLC # # License:: Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or # implied. # See the License for the specific language governing permissions and # limitations under the License. # # Removes mobile app IDs from a pretargeting configuration's app targeting. # # Note that this is the only way to remove mobile application IDs following a # pretargeting configuration's creation. require 'optparse' require_relative '../../../util' def remove_targeted_apps(realtimebidding, options) name = "bidders/#{options[:account_id]}/pretargetingConfigs/#{options[:pretargeting_config_id]}" puts "Removing mobile app IDs from mobile app targeting for pretargeting configuraton with name: '#{name}'" body = Google::Apis::RealtimebiddingV1::RemoveTargetedAppsRequest.new( app_ids: options[:mobile_app_targeting_app_ids], ) pretargeting_config = realtimebidding.remove_pretargeting_config_targeted_apps(name, body) print_pretargeting_config(pretargeting_config) end if __FILE__ == $0 begin # Retrieve the service used to make API requests. service = get_service() rescue ArgumentError => e raise 'Unable to create service, with error message: #{e.message}' rescue Signet::AuthorizationError => e raise 'Unable to create service, was the KEY_FILE in util.rb set? Error message: #{e.message}' end # Set options and default values for fields used in this example. options = [ Option.new( 'account_id', 'The resource ID of the bidders resource under which the pretargeting configurations were created.', type: Integer, short_alias: 'a', required: true, default_value: nil ), Option.new( 'pretargeting_config_id', 'The resource ID of the pretargeting configuration that is being acted upon.', type: Integer, short_alias: 'p', required: true, default_value: nil ), Option.new( 'mobile_app_targeting_app_ids', 'The mobile app IDs to be removed from this configuration\'s mobile app targeting. Specify each value '\ 'separated by a comma. Values specified must be valid mobile App IDs, as found on their respective app stores.', required: false, type: Array, default_value: [] ), ] # Parse options. parser = Parser.new(options) opts = parser.parse(ARGV) begin remove_targeted_apps(service, opts) rescue Google::Apis::ServerError => e raise "The following server error occured:\n#{e.message}" rescue Google::Apis::ClientError => e raise "Invalid client request:\n#{e.message}" rescue Google::Apis::AuthorizationError => e raise "Authorization error occured:\n#{e.message}" end end
기존 구성 삭제
기존의 사전 타겟팅을 삭제하는 방법은 다음과 같습니다.
구성을
bidders.pretargetingConfigs.delete
:
REST
요청
DELETE https://realtimebidding.googleapis.com/v1/bidders/12345678/pretargetingConfigs/560983?alt=json Authorization: Bearer <INSERT_ACCESS_TOKEN_HERE> Content-Type: application/json
응답
{}
C#
/* Copyright 2020 Google LLC * * Licensed under the Apache License, Version 2.0 (the L"icense)"; * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an A"S IS "BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied * See the License for the specific language governing permissions and * limitations under the License. */ using Google.Apis.RealTimeBidding.v1; using Mono.Options; using System; using System.Collections.Generic; namespace Google.Apis.RealTimeBidding.Examples.v1.Bidders.PretargetingConfigs { /// s<ummary<>/span> /// Deletes a pretargeting configuration with a specified name. /// /<summary > public class DeletePretargetingConfigs : ExampleBase { private RealTimeBiddingService rtbService; /// s<ummary<>/span> /// Constructor. /// /<summary > public DeletePretargetingConfigs() { rtbService = Utilities.GetRealTimeBiddingService(); } /// s<ummary<>/span> /// Returns a description about the code example. /// /<summary > public override string Description { get = >T"his code example deletes a specified pretargeting configuration;" } /// s<ummary<>/span> /// Parse specified arguments. /// /<summary > protected override Dictionarys<tring, object >ParseArguments(Lists<tring >exampleArgs) { string[] requiredOptions = new string[] {a"ccount_id," p"retargeting_config_id}"; bool showHelp = false; string accountId = null; long? pretargetingConfigId = null; OptionSet options = new OptionSet { D"eletes a specified pretargeting configuration.," { h"|help," S"how help message and exit.," h = >showHelp = h != null }, { a"|account_id=," (["Required] The resource ID of the bidders resource under which the "+ p"retargeting configuration was created.)", a = >accountId = a }, { p"|pretargeting_config_id=," (["Required] The resource ID of the pretargeting configuration to be "+ d"eleted.)", (long p) = >pretargetingConfigId = p }, }; Lists<tring >extras = options.Parse(exampleArgs); var parsedArgs = new Dictionarys<tring, object(>); // Show help message. if(showHelp == true) { options.WriteOptionDescriptions(Console.Out); Environment.Exit(0); } // Set arguments. parsedArgs[a"ccount_id]" = accountId; parsedArgs[p"retargeting_config_id]" = pretargetingConfigId; // Validate that options were set correctly. Utilities.ValidateOptions(options, parsedArgs, requiredOptions, extras); return parsedArgs; } /// s<ummary<>/span> /// Run the example. /// /<summary > /// p<aram name=p"arsedArgsP">arsed arguments for the example./<param > protected override void Run(Dictionarys<tring, object >parsedArgs) { string accountId = (string) parsedArgs[a"ccount_id]"; long? pretargetingConfigId = (long?) parsedArgs[p"retargeting_config_id]"; string name = $b"idders/{accountId}/pretargetingConfigs/{pretargetingConfigId};" BiddersResource.PretargetingConfigsResource.DeleteRequest request = rtbService.Bidders.PretargetingConfigs.Delete(name); try { request.Execute(); } catch (System.Exception exception) { throw new ApplicationException( $R"eal-time Bidding API returned error response:\n{exception.Message})"; } Console.WriteLine(P"retargeting configuration with name: {'0} 'deleted successfully.," name); } } }
자바
/* * Copyright 2020 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.google.api.services.samples.authorizedbuyers.realtimebidding.v1.bidders.pretargetingconfigs; import com.google.api.services.realtimebidding.v1.RealTimeBidding; import com.google.api.services.samples.authorizedbuyers.realtimebidding.Utils; import java.io.IOException; import java.security.GeneralSecurityException; import net.sourceforge.argparse4j.ArgumentParsers; import net.sourceforge.argparse4j.inf.ArgumentParser; import net.sourceforge.argparse4j.inf.ArgumentParserException; import net.sourceforge.argparse4j.inf.Namespace; /** Deletes a pretargeting configuration with a specified name. */ public class DeletePretargetingConfigs { public static void execute(RealTimeBidding client, Namespace parsedArgs) throws IOException { String name = String.format( "bidders/%s/pretargetingConfigs/%s", parsedArgs.getLong("account_id"), parsedArgs.getLong("pretargeting_config_id")); client.bidders().pretargetingConfigs().delete(name).execute(); System.out.printf("Pretargeting configuration with name '%s' deleted successfully.\n", name); } public static void main(String[] args) { ArgumentParser parser = ArgumentParsers.newFor("DeletePretargetingConfigs") .build() .defaultHelp(true) .description(("Deletes a specified pretargeting configuration.")); parser .addArgument("-a", "--account_id") .help( "The resource ID of the bidders resource under which the pretargeting " + "configuration was created.") .required(true) .type(Long.class); parser .addArgument("-p", "--pretargeting_config_id") .help("The resource ID of the pretargeting configuration that is being deleted.") .required(true) .type(Long.class); Namespace parsedArgs = null; try { parsedArgs = parser.parseArgs(args); } catch (ArgumentParserException ex) { parser.handleError(ex); System.exit(1); } RealTimeBidding client = null; try { client = Utils.getRealTimeBiddingClient(); } catch (IOException ex) { System.out.printf("Unable to create RealTimeBidding API service:\n%s", ex); System.out.println("Did you specify a valid path to a service account key file?"); System.exit(1); } catch (GeneralSecurityException ex) { System.out.printf("Unable to establish secure HttpTransport:\n%s", ex); System.exit(1); } try { execute(client, parsedArgs); } catch (IOException ex) { System.out.printf("RealTimeBidding API returned error response:\n%s", ex); System.exit(1); } } }
PHP
<?php /** * Copyright 2020 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Google\Ads\AuthorizedBuyers\RealTimeBidding\Examples\V1\Bidders_PretargetingConfigs; use Google\Ads\AuthorizedBuyers\RealTimeBidding\ExampleUtil\BaseExample; use Google\Ads\AuthorizedBuyers\RealTimeBidding\ExampleUtil\Config; /** * Deletes a pretargeting configuration for the given bidder account ID. */ class DeletePretargetingConfigs extends BaseExample { public function __construct($client) { $this->service = Config::getGoogleServiceRealTimeBidding($client); } /** * @see BaseExample::getInputParameters() */ protected function getInputParameters() { return [ [ 'name' => 'account_id', 'display' => 'Account ID', 'description' => 'The resource ID of the bidders resource under which the pretargeting ' . 'configuration was created.', 'required' => true ], [ 'name' => 'pretargeting_config_id', 'display' => 'Pretargeting configuration ID', 'description' => 'The resource ID of the pretargeting configuration that is being deleted.', 'required' => true, ] ]; } /** * @see BaseExample::run() */ public function run() { $values = $this->formValues; $name = "bidders/$values[account_id]/pretargetingConfigs/$values[pretargeting_config_id]"; print "<h2>Deleting pretargeting configuration with name '$name':</h2>"; $this->service->bidders_pretargetingConfigs->delete($name); print '<p>Pretargeting configuration deleted successfully.</p>'; } /** * @see BaseExample::getName() */ public function getName() { return 'Delete Pretargeting Configuration'; } }
Python
#!/usr/bin/python # # Copyright 2020 Google Inc. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """This example deletes a pretargeting config for the given bidder account ID. """ import argparse import os import pprint import sys sys.path.insert(0, os.path.abspath('../../..')) from googleapiclient.errors import HttpError import util _PRETARGETING_CONFIG_NAME_TEMPLATE = 'bidders/%s/pretargetingConfigs/%s' DEFAULT_BUYER_RESOURCE_ID = 'ENTER_BIDDER_RESOURCE_ID_HERE' DEFAULT_PRETARGETING_CONFIG_RESOURCE_ID = 'ENTER_CONFIG_RESOURCE_ID_HERE' def main(realtimebidding, account_id, pretargeting_config_id): pretargeting_config_name = _PRETARGETING_CONFIG_NAME_TEMPLATE % ( account_id, pretargeting_config_id) print('Deleting a pretargeting configuration with name: "%s".' % pretargeting_config_name) try: response = realtimebidding.bidders().pretargetingConfigs().delete( name=pretargeting_config_name).execute() except HttpError as e: print(e) sys.exit(1) print('Pretargeting configuration deleted successfully.') if __name__ == '__main__': try: service = util.GetService(version='v1') except IOError as ex: print('Unable to create realtimebidding service - %s' % ex) print('Did you specify the key file in util.py?') sys.exit(1) parser = argparse.ArgumentParser( description=('Deletes a specified pretargeting config.')) # Required fields. parser.add_argument( '-a', '--account_id', default=DEFAULT_BUYER_RESOURCE_ID, required=True, help=('The resource ID of the bidders resource under which the ' 'pretargeting configuration was created.')) parser.add_argument( '-p', '--pretargeting_config_id', default=DEFAULT_PRETARGETING_CONFIG_RESOURCE_ID, help=('The resource ID of the PretargetingConfig resource that is being ' 'deleted.')) args = parser.parse_args() main(service, args.account_id, args.pretargeting_config_id)
Ruby
#!/usr/bin/env ruby # Encoding: utf-8 # # Copyright:: Copyright 2020 Google LLC # # License:: Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or # implied. # See the License for the specific language governing permissions and # limitations under the License. # # Deletes a pretargeting configuration for the given bidder account and pretargeting configuration IDs. require 'optparse' require_relative '../../../util' def delete_pretargeting_configs(realtimebidding, options) name = "bidders/#{options[:account_id]}/pretargetingConfigs/#{options[:pretargeting_config_id]}" puts "Deleting a pretargeting configuration with name '#{name}'" pretargeting_config = realtimebidding.delete_bidder_pretargeting_config(name) puts 'Pretargeting configuration deleted successfully.' end if __FILE__ == $0 begin # Retrieve the service used to make API requests. service = get_service() rescue ArgumentError => e raise 'Unable to create service, with error message: #{e.message}' rescue Signet::AuthorizationError => e raise 'Unable to create service, was the KEY_FILE in util.rb set? Error message: #{e.message}' end # Set options and default values for fields used in this example. options = [ Option.new( 'account_id', 'The resource ID of the bidders resource under which pretargeting configurations were created. This will be '\ 'used to construct the name used as a path parameter for the pretargetingConfigs.delete request.', type: Integer, short_alias: 'a', required: true, default_value: nil ), Option.new( 'pretargeting_config_id', 'The resource ID of the bidders.pretargetingConfig resource for which the pretargeting configuration was '\ 'created. This will be used to construct the name used as a path parameter for the pretargetingConfigs.get '\ 'request.', type: Integer, short_alias: 'p', required: true, default_value: nil ), ] # Parse options. parser = Parser.new(options) opts = parser.parse(ARGV) begin delete_pretargeting_configs(service, opts) rescue Google::Apis::ServerError => e raise "The following server error occured:\n#{e.message}" rescue Google::Apis::ClientError => e raise "Invalid client request:\n#{e.message}" rescue Google::Apis::AuthorizationError => e raise "Authorization error occured:\n#{e.message}" end end