คู่มือนี้จะอธิบายถึงการกำหนดเป้าหมายตามสถานที่และวิธีใช้ Google Ads API ดึงข้อมูลและอัปเดตการกำหนดสถานที่เป้าหมายสำหรับแคมเปญ
เหตุใดการกำหนดเป้าหมายตามภูมิศาสตร์จึงมีความสำคัญ
การกำหนดสถานที่เป้าหมายช่วยให้แสดงโฆษณาแก่ผู้ใช้ในพื้นที่ทางภูมิศาสตร์ที่เฉพาะเจาะจงได้ ภูมิภาค ตัวอย่างเช่น สมมติว่าคุณกำลังโฆษณาให้กับเครือซูเปอร์มาร์เก็ต หากไม่มีการกำหนดสถานที่เป้าหมาย โฆษณาจะแสดงในทุกภูมิภาคทั่วโลก และ โฆษณาของคุณอาจได้รับการคลิกจากผู้ใช้ในภูมิภาคที่คุณ ที่ตั้งซูเปอร์มาร์เก็ต วิธีนี้สร้างค่าใช้จ่าย ในขณะเดียวกันก็ไม่มีโอกาส ผลตอบแทนจากการลงทุน เมื่อใช้การกำหนดเป้าหมายตามสถานที่ แคมเปญของคุณจะแสดงโฆษณาเท่านั้น ในภูมิภาคที่คุณมีซูเปอร์มาร์เก็ตแบบเปิด วิธีนี้ยังช่วยให้คุณ กำหนดเป้าหมายไปยังลูกค้าที่กำลังค้นหาซูเปอร์มาร์เก็ตในท้องถิ่นโดยตรง
Google Ads API ช่วยให้คุณสามารถกำหนดเป้าหมายโฆษณาตามประเทศ ภูมิภาค หรือสถานที่ใกล้เคียง เกี่ยวกับภูมิศาสตร์ที่เฉพาะเจาะจง คะแนน
ดูข้อมูลเพิ่มเติมเกี่ยวกับ การกำหนดเป้าหมายโฆษณาตามสถานที่ตั้งทางภูมิศาสตร์
แคมเปญเป้าหมายทางภูมิศาสตร์สำหรับภูมิภาค
คุณสามารถกำหนดเป้าหมายแคมเปญไปยังภูมิภาคทางภูมิศาสตร์ใดก็ได้ที่ Google Ads
สนับสนุนการกำหนดเป้าหมายตามสถานที่ เช่น ประเทศ รัฐ เมือง หรือ
เขตไปรษณีย์ สถานที่ตั้งที่กำหนดเป้าหมายได้แต่ละแห่งจะถูกระบุโดยเกณฑ์ที่ไม่ซ้ำกัน
ID คุณสามารถค้นหารหัสเกณฑ์ได้โดยใช้
GeoTargetConstantService.SuggestGeoTargetConstants
resource_name
ของ GeoTargetConstant
แต่ละรายการคือ
จากแบบฟอร์ม geoTargetConstants/{Criterion ID}
ตัวอย่างเช่น พารามิเตอร์
ค่า resource_name
ของรัฐนิวยอร์กคือ geoTargetConstants/21167
คุณสามารถเพิ่มเป้าหมายตามภูมิศาสตร์ลงในแคมเปญได้โดยใช้
CampaignCriterionService
ดังต่อไปนี้
ข้อมูลโค้ดแสดงวิธีการกำหนดเป้าหมายแคมเปญด้วยรหัสเกณฑ์
Java
private static CampaignCriterion buildLocationIdCriterion( long locationId, String campaignResourceName) { Builder criterionBuilder = CampaignCriterion.newBuilder().setCampaign(campaignResourceName); criterionBuilder .getLocationBuilder() .setGeoTargetConstant(ResourceNames.geoTargetConstant(locationId)); return criterionBuilder.build(); }
C#
private CampaignCriterion buildLocationCriterion(long locationId, string campaignResourceName) { GeoTargetConstantName location = new GeoTargetConstantName(locationId.ToString()); return new CampaignCriterion() { Campaign = campaignResourceName, Location = new LocationInfo() { GeoTargetConstant = location.ToString() } }; }
PHP
private static function createLocationCampaignCriterionOperation( int $locationId, string $campaignResourceName ) { // Constructs a campaign criterion for the specified campaign ID using the specified // location ID. $campaignCriterion = new CampaignCriterion([ // Creates a location using the specified location ID. 'location' => new LocationInfo([ // Besides using location ID, you can also search by location names using // GeoTargetConstantServiceClient::suggestGeoTargetConstants() and directly // apply GeoTargetConstant::$resourceName here. An example can be found // in GetGeoTargetConstantByNames.php. 'geo_target_constant' => ResourceNames::forGeoTargetConstant($locationId) ]), 'campaign' => $campaignResourceName ]); return new CampaignCriterionOperation(['create' => $campaignCriterion]); }
Python
def create_location_op(client, customer_id, campaign_id, location_id): campaign_service = client.get_service("CampaignService") geo_target_constant_service = client.get_service("GeoTargetConstantService") # Create the campaign criterion. campaign_criterion_operation = client.get_type("CampaignCriterionOperation") campaign_criterion = campaign_criterion_operation.create campaign_criterion.campaign = campaign_service.campaign_path( customer_id, campaign_id ) # Besides using location_id, you can also search by location names from # GeoTargetConstantService.suggest_geo_target_constants() and directly # apply GeoTargetConstant.resource_name here. An example can be found # in get_geo_target_constant_by_names.py. campaign_criterion.location.geo_target_constant = ( geo_target_constant_service.geo_target_constant_path(location_id) ) return campaign_criterion_operation
Ruby
def create_location(client, customer_id, campaign_id, location_id) client.operation.create_resource.campaign_criterion do |criterion| criterion.campaign = client.path.campaign(customer_id, campaign_id) criterion.location = client.resource.location_info do |li| # Besides using location_id, you can also search by location names from # GeoTargetConstantService.suggest_geo_target_constants() and directly # apply GeoTargetConstant.resource_name here. An example can be found # in get_geo_target_constant_by_names.rb. li.geo_target_constant = client.path.geo_target_constant(location_id) end end end
Perl
sub create_location_campaign_criterion_operation { my ($location_id, $campaign_resource_name) = @_; # Construct a campaign criterion for the specified campaign using the # specified location ID. my $campaign_criterion = Google::Ads::GoogleAds::V17::Resources::CampaignCriterion->new({ # Create a location using the specified location ID. location => Google::Ads::GoogleAds::V17::Common::LocationInfo->new({ # Besides using location ID, you can also search by location names # using GeoTargetConstantService::suggest() and directly apply # GeoTargetConstant->{resourceName} here. An example can be found # in get_geo_target_constants_by_names.pl. geoTargetConstant => Google::Ads::GoogleAds::V17::Utils::ResourceNames::geo_target_constant( $location_id)} ), campaign => $campaign_resource_name }); return Google::Ads::GoogleAds::V17::Services::CampaignCriterionService::CampaignCriterionOperation ->new({ create => $campaign_criterion }); }
Google อาจเลิกใช้เกณฑ์ตำแหน่งบางข้อเป็นครั้งคราวด้วยเหตุผลหลายประการดังนี้
สถานที่อาจได้รับการปรับโครงสร้างให้เล็กลงหรือใหญ่ขึ้น ภูมิศาสตร์การเมือง
การเปลี่ยนแปลง ฯลฯ โปรดดูช่อง status
GeoTargetConstant เพื่อระบุว่าตำแหน่งหนึ่งๆ หรือไม่
ENABLED
หรือ
REMOVAL_PLANNED
อ่านเพิ่มเติมเกี่ยวกับ
เราจะเลิกใช้พื้นที่เป้าหมายอย่างไร
ค้นหาตามชื่อตำแหน่ง
นอกจากนี้คุณยังค้นหารหัสเกณฑ์ตามชื่อสถานที่ตั้งได้โดยใช้
GeoTargetConstantService.SuggestGeoTargetConstants
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการค้นหารหัสเกณฑ์สถานที่ตั้งตาม
ชื่อสถานที่
Java
private void runExample(GoogleAdsClient googleAdsClient) { try (GeoTargetConstantServiceClient geoTargetClient = googleAdsClient.getLatestVersion().createGeoTargetConstantServiceClient()) { SuggestGeoTargetConstantsRequest.Builder requestBuilder = SuggestGeoTargetConstantsRequest.newBuilder(); // Locale is using ISO 639-1 format. If an invalid locale is given, 'en' is used by default. requestBuilder.setLocale("en"); // A list of country codes can be referenced here: // https://developers.google.com/google-ads/api/reference/data/geotargets requestBuilder.setCountryCode("FR"); requestBuilder .getLocationNamesBuilder() .addAllNames(ImmutableList.of("Paris", "Quebec", "Spain", "Deutschland")); SuggestGeoTargetConstantsResponse response = geoTargetClient.suggestGeoTargetConstants(requestBuilder.build()); for (GeoTargetConstantSuggestion suggestion : response.getGeoTargetConstantSuggestionsList()) { System.out.printf( "%s (%s,%s,%s,%s) is found in locale (%s) with reach (%d) for search term (%s).%n", suggestion.getGeoTargetConstant().getResourceName(), suggestion.getGeoTargetConstant().getName(), suggestion.getGeoTargetConstant().getCountryCode(), suggestion.getGeoTargetConstant().getTargetType(), suggestion.getGeoTargetConstant().getStatus().name(), suggestion.getLocale(), suggestion.getReach(), suggestion.getSearchTerm()); } } }
C#
public void Run(GoogleAdsClient client) { // Get the GeoTargetConstantServiceClient. GeoTargetConstantServiceClient geoService = client.GetService(Services.V17.GeoTargetConstantService); // Locale is using ISO 639-1 format. If an invalid locale is given, // 'en' is used by default. string locale = "en"; // A list of country codes can be referenced here: // https://developers.google.com/google-ads/api/reference/data/geotargets string countryCode = "FR"; string[] locations = { "Paris", "Quebec", "Spain", "Deutschland" }; SuggestGeoTargetConstantsRequest request = new SuggestGeoTargetConstantsRequest() { Locale = locale, CountryCode = countryCode, LocationNames = new SuggestGeoTargetConstantsRequest.Types.LocationNames() }; request.LocationNames.Names.AddRange(locations); try { SuggestGeoTargetConstantsResponse response = geoService.SuggestGeoTargetConstants(request); foreach (GeoTargetConstantSuggestion suggestion in response.GeoTargetConstantSuggestions) { Console.WriteLine( $"{suggestion.GeoTargetConstant.ResourceName} " + $"({suggestion.GeoTargetConstant.Name}, " + $"{suggestion.GeoTargetConstant.CountryCode}, " + $"{suggestion.GeoTargetConstant.TargetType}, " + $"{suggestion.GeoTargetConstant.Status}) is found in locale " + $"({suggestion.Locale}) with reach ({suggestion.Reach}) " + $"for search term ({suggestion.SearchTerm})."); } } catch (GoogleAdsException e) { Console.WriteLine("Failure:"); Console.WriteLine($"Message: {e.Message}"); Console.WriteLine($"Failure: {e.Failure}"); Console.WriteLine($"Request ID: {e.RequestId}"); throw; } }
PHP
public static function runExample( GoogleAdsClient $googleAdsClient, array $locationNames, string $locale, string $countryCode ) { $geoTargetConstantServiceClient = $googleAdsClient->getGeoTargetConstantServiceClient(); $response = $geoTargetConstantServiceClient->suggestGeoTargetConstants( new SuggestGeoTargetConstantsRequest([ 'locale' => $locale, 'country_code' => $countryCode, 'location_names' => new LocationNames(['names' => $locationNames]) ]) ); // Iterates over all geo target constant suggestion objects and prints the requested field // values for each one. foreach ($response->getGeoTargetConstantSuggestions() as $geoTargetConstantSuggestion) { /** @var GeoTargetConstantSuggestion $geoTargetConstantSuggestion */ printf( "Found '%s' ('%s','%s','%s',%s) in locale '%s' with reach %d" . " for the search term '%s'.%s", $geoTargetConstantSuggestion->getGeoTargetConstant()->getResourceName(), $geoTargetConstantSuggestion->getGeoTargetConstant()->getName(), $geoTargetConstantSuggestion->getGeoTargetConstant()->getCountryCode(), $geoTargetConstantSuggestion->getGeoTargetConstant()->getTargetType(), GeoTargetConstantStatus::name( $geoTargetConstantSuggestion->getGeoTargetConstant()->getStatus() ), $geoTargetConstantSuggestion->getLocale(), $geoTargetConstantSuggestion->getReach(), $geoTargetConstantSuggestion->getSearchTerm(), PHP_EOL ); } }
Python
def main(client): gtc_service = client.get_service("GeoTargetConstantService") gtc_request = client.get_type("SuggestGeoTargetConstantsRequest") gtc_request.locale = LOCALE gtc_request.country_code = COUNTRY_CODE # The location names to get suggested geo target constants. gtc_request.location_names.names.extend( ["Paris", "Quebec", "Spain", "Deutschland"] ) results = gtc_service.suggest_geo_target_constants(gtc_request) for suggestion in results.geo_target_constant_suggestions: geo_target_constant = suggestion.geo_target_constant print( f"{geo_target_constant.resource_name} " f"({geo_target_constant.name}, " f"{geo_target_constant.country_code}, " f"{geo_target_constant.target_type}, " f"{geo_target_constant.status.name}) " f"is found in locale ({suggestion.locale}) " f"with reach ({suggestion.reach}) " f"from search term ({suggestion.search_term})." )
Ruby
def get_geo_target_constants_by_names # GoogleAdsClient will read a config file from # ENV['HOME']/google_ads_config.rb when called without parameters client = Google::Ads::GoogleAds::GoogleAdsClient.new gtc_service = client.service.geo_target_constant location_names = client.resource.location_names do |ln| ['Paris', 'Quebec', 'Spain', 'Deutschland'].each do |name| ln.names << name end end # Locale is using ISO 639-1 format. If an invalid locale is given, # 'en' is used by default. locale = 'en' # A list of country codes can be referenced here: # https://developers.google.com/google-ads/api/reference/data/geotargets country_code = 'FR' response = gtc_service.suggest_geo_target_constants( locale: locale, country_code: country_code, location_names: location_names ) response.geo_target_constant_suggestions.each do |suggestion| puts sprintf("%s (%s,%s,%s,%s) is found in locale (%s) with reach (%d)" \ " from search term (%s).", suggestion.geo_target_constant.resource_name, suggestion.geo_target_constant.name, suggestion.geo_target_constant.country_code, suggestion.geo_target_constant.target_type, suggestion.geo_target_constant.status, suggestion.locale, suggestion.reach, suggestion.search_term) end end
Perl
sub get_geo_target_constants_by_names { my ($api_client, $location_names, $locale, $country_code) = @_; my $suggest_response = $api_client->GeoTargetConstantService()->suggest({ locale => $locale, countryCode => $country_code, locationNames => Google::Ads::GoogleAds::V17::Services::GeoTargetConstantService::LocationNames ->new({ names => $location_names })}); # Iterate over all geo target constant suggestion objects and print the requested # field values for each one. foreach my $geo_target_constant_suggestion ( @{$suggest_response->{geoTargetConstantSuggestions}}) { printf "Found '%s' ('%s','%s','%s',%s) in locale '%s' with reach %d" . " for the search term '%s'.\n", $geo_target_constant_suggestion->{geoTargetConstant}{resourceName}, $geo_target_constant_suggestion->{geoTargetConstant}{name}, $geo_target_constant_suggestion->{geoTargetConstant}{countryCode}, $geo_target_constant_suggestion->{geoTargetConstant}{targetType}, $geo_target_constant_suggestion->{geoTargetConstant}{status}, $geo_target_constant_suggestion->{locale}, $geo_target_constant_suggestion->{reach}, $geo_target_constant_suggestion->{searchTerm}; } return 1; }
กำหนดเป้าหมายแคมเปญสำหรับสถานที่ใกล้เคียงกับสถานที่
มีบางครั้งที่คุณอาจต้องการกำหนดเป้าหมายให้แม่นยำมากขึ้นกว่าเมืองหรือ
ประเทศ ตัวอย่างเช่น คุณอาจต้องการโฆษณาซูเปอร์มาร์เก็ตภายในรัศมี 10
กิโลเมตรจากร้านของคุณ ในกรณีดังกล่าว คุณสามารถใช้
การกำหนดเป้าหมายบริเวณใกล้เคียง
โค้ดที่ใช้สร้างเป้าหมายที่ใกล้เคียงกันนั้นคล้ายกับการเพิ่มเป้าหมายสถานที่
เว้นแต่ว่าคุณต้องสร้าง ProximityInfo
แทนที่จะเป็นออบเจ็กต์ LocationInfo
Java
private static CampaignCriterion buildProximityLocation(String campaignResourceName) { Builder builder = CampaignCriterion.newBuilder().setCampaign(campaignResourceName); ProximityInfo.Builder proximityBuilder = builder.getProximityBuilder(); proximityBuilder.setRadius(10.0).setRadiusUnits(ProximityRadiusUnits.MILES); AddressInfo.Builder addressBuilder = proximityBuilder.getAddressBuilder(); addressBuilder .setStreetAddress("38 avenue de l'Opéra") .setCityName("Paris") .setPostalCode("75002") .setCountryCode("FR"); return builder.build(); }
C#
private CampaignCriterion buildProximityCriterion(string campaignResourceName) { ProximityInfo proximity = new ProximityInfo() { Address = new AddressInfo() { StreetAddress = "38 avenue de l'Opéra", CityName = "Paris", PostalCode = "75002", CountryCode = "FR" }, Radius = 10d, // Default is kilometers. RadiusUnits = ProximityRadiusUnits.Miles }; return new CampaignCriterion() { Campaign = campaignResourceName, Proximity = proximity }; }
PHP
private static function createProximityCampaignCriterionOperation(string $campaignResourceName) { // Constructs a campaign criterion as a proximity. $campaignCriterion = new CampaignCriterion([ 'proximity' => new ProximityInfo([ 'address' => new AddressInfo([ 'street_address' => '38 avenue de l\'Opéra', 'city_name' => 'Paris', 'postal_code' => '75002', 'country_code' => 'FR', ]), 'radius' => 10.0, // Default is kilometers. 'radius_units' => ProximityRadiusUnits::MILES ]), 'campaign' => $campaignResourceName ]); return new CampaignCriterionOperation(['create' => $campaignCriterion]); }
Python
def create_proximity_op(client, customer_id, campaign_id): campaign_service = client.get_service("CampaignService") # Create the campaign criterion. campaign_criterion_operation = client.get_type("CampaignCriterionOperation") campaign_criterion = campaign_criterion_operation.create campaign_criterion.campaign = campaign_service.campaign_path( customer_id, campaign_id ) campaign_criterion.proximity.address.street_address = "38 avenue de l'Opera" campaign_criterion.proximity.address.city_name = "Paris" campaign_criterion.proximity.address.postal_code = "75002" campaign_criterion.proximity.address.country_code = "FR" campaign_criterion.proximity.radius = 10 # Default is kilometers. campaign_criterion.proximity.radius_units = ( client.enums.ProximityRadiusUnitsEnum.MILES ) return campaign_criterion_operation
Ruby
def create_proximity(client, customer_id, campaign_id) client.operation.create_resource.campaign_criterion do |criterion| criterion.campaign = client.path.campaign(customer_id, campaign_id) criterion.proximity = client.resource.proximity_info do |proximity| proximity.address = client.resource.address_info do |address| address.street_address = "38 avenue de l'Opéra" address.city_name = "Paris" address.postal_code = "75002" address.country_code = "FR" end proximity.radius = 10 proximity.radius_units = :MILES end end end
Perl
sub create_proximity_campaign_criterion_operation { my ($campaign_resource_name) = @_; # Construct a campaign criterion as a proximity. my $campaign_criterion = Google::Ads::GoogleAds::V17::Resources::CampaignCriterion->new({ proximity => Google::Ads::GoogleAds::V17::Common::ProximityInfo->new({ address => Google::Ads::GoogleAds::V17::Common::AddressInfo->new({ streetAddress => "38 avenue de l'Opéra", cityName => "cityName", postalCode => "75002", countryCode => "FR" } ), radius => 10.0, # Default is kilometers. radiusUnits => MILES } ), campaign => $campaign_resource_name }); return Google::Ads::GoogleAds::V17::Services::CampaignCriterionService::CampaignCriterionOperation ->new({ create => $campaign_criterion }); }
ดึงข้อมูลเป้าหมายทางภูมิศาสตร์
คุณสามารถดึงข้อมูลเป้าหมายทางภูมิศาสตร์สำหรับแคมเปญโดยใช้
GoogleAdsService.SearchStream
คุณสามารถ
กรองผลการค้นหาในวลี WHERE
SELECT
campaign_criterion.campaign,
campaign_criterion.location.geo_target_constant,
campaign_criterion.proximity.geo_point.longitude_in_micro_degrees,
campaign_criterion.proximity.geo_point.latitude_in_micro_degrees,
campaign_criterion.proximity.radius,
campaign_criterion.negative
FROM campaign_criterion
WHERE
campaign_criterion.campaign = 'customers/{customer_id}/campaigns/{campaign_id}'
AND campaign_criterion.type IN (LOCATION, PROXIMITY)
อัปเดตเป้าหมายทางภูมิศาสตร์
ในการอัปเดตสถานที่เป้าหมายสำหรับแคมเปญ คุณต้องเรียกรายการ
เป้าหมายทางภูมิศาสตร์ที่มีอยู่ แล้วเปรียบเทียบกับรายการเป้าหมายใหม่ จากนั้นคุณจะสามารถ
ใช้การดำเนินการ remove
เพื่อลบเป้าหมายที่คุณไม่ต้องการ และ
create
เพื่อเพิ่มเป้าหมายทางภูมิศาสตร์ใหม่ที่คุณต้องการ (แต่ไม่มีใน
ที่มีอยู่)
ยกเว้นเป้าหมายทางภูมิศาสตร์
คุณยังยกเว้น LocationInfo
ได้ แต่ไม่รวม
ProximityInfo
ฟีเจอร์นี้มีประโยชน์มากที่สุดหากคุณต้องการ
เพื่อกำหนดเป้าหมายภูมิภาค แต่ยกเว้นภูมิภาคย่อย (เช่น กำหนดเป้าหมายทั่วทั้งภูมิภาค)
สหรัฐอเมริกา ยกเว้นนิวยอร์กซิตี้) หากต้องการยกเว้นภูมิภาค ให้ตั้งค่า
ช่อง negative
ใน
CampaignCriterion
เป็น
true
กำหนดเป้าหมายหลายพื้นที่ทางภูมิศาสตร์
เมื่อใช้LocationGroupInfo
คุณจะเปิดใช้
ให้กำหนดเป้าหมายไปยังพื้นที่ทางภูมิศาสตร์หลายแห่ง ภูมิภาคที่มีศูนย์กลางอยู่ที่
สถานที่ตั้งที่กำหนดโดยส่วนขยายสถานที่ตั้งของแคมเปญ
รัศมีที่กำหนดไว้ใน LocationGroupInfo
ครอบคลุมพื้นที่รูปวงกลมรอบๆ
และประกอบด้วยวัตถุ radius
ความยาว และ radius_units
ซึ่งอาจเป็นเมตรหรือ
ไมล์ (LocationGroupRadiusUnitsEnum
)
สถานที่ตั้งใน LocationGroupInfo
สามารถกรองได้ด้วยรายการการกำหนดเป้าหมายตามภูมิศาสตร์
รหัสเกณฑ์ที่กำหนดไว้ในฟิลด์
geo_target_constant
หากกำหนดไว้ ไม่มีสถานที่ตั้งที่อยู่ภายนอก
ระบบจะกำหนดเป้าหมายรหัสเกณฑ์ที่ระบุ