هدف‌یابی مکانی

این راهنما هدف‌یابی مکانی را شرح می‌دهد و اینکه چگونه می‌توانید از Google Ads API برای افزودن، بازیابی، و به‌روزرسانی هدف‌یابی مکانی برای پویش‌هایتان استفاده کنید.

برای اطلاعات درباره محدودیت‌های هدف‌یابی، به بخش «محدودیت‌های هدف‌یابی» در درباره محدودیت‌های حساب Google Ads مراجعه کنید.

چرا هدف‌یابی جغرافیایی مهم است؟

هدف‌یابی مکانی به شما امکان می‌دهد آگهی‌ها را به کاربران در منطقه جغرافیایی خاصی ارائه دهید. برای مثال، فرض کنید برای یک سوپرمارکت زنجیره‌ای تبلیغ می‌کنید. بدون هدف‌یابی جغرافیایی، آگهی‌های شما در همه مناطق سراسر جهان نشان داده می‌شود و ممکن است آگهی‌هایتان ازسوی کاربرانی در مناطقی که هیچ سوپرمارکتی ندارید کلیک دریافت کند. این کار هزینه ایجاد می‌کند درحالی‌که هیچ امکانی برای بازگشت سرمایه فراهم نمی‌کند. با هدف‌یابی مکانی، پویش‌هایتان آگهی‌ها را فقط در مناطقی نشان می‌دهند که سوپرمارکت‌های باز دارید. این رویکرد همچنین به شما امکان می‌دهد مشتریانی را که به‌صورت محلی به‌دنبال سوپرمارکت می‌گردند مستقیماً هدف قرار دهید.

Google Ads API به شما امکان می‌دهد آگهی‌هایتان را براساس کشور، منطقه، یا مجاورت با یک نقطه جغرافیایی خاص هدف‌یابی کنید.

پویش‌های هدف‌یابی جغرافیایی برای یک منطقه

می‌توانید کمپین‌ها را برای هر منطقه جغرافیایی که Google Ads از هدف‌یابی مکانی آن پشتیبانی می‌کند، مانند کشور، ایالت، شهر، یا منطقه پستی، هدف‌یابی کنید. هر مکان هدف‌یابی‌شدنی به‌طور منحصربه‌فرد با «شناسه معیار» شناسایی می‌شود. می‌توانید شناسه معیار را بااستفاده از GeoTargetConstantService.SuggestGeoTargetConstants جستجو کنید. resource_name هر GeoTargetConstant به‌صورت geoTargetConstants/{Criterion ID} است. برای مثال، مقدار resource_name ایالت نیویورک geoTargetConstants/21167 است.

می‌توانید بااستفاده از CampaignCriterionService (یا در سطح گروه آگهی بااستفاده از AdGroupCriterion برای انواع پویش‌های پشتیبانی‌شده، مثل پویش‌های «تولید تقاضا» با upgraded_targeting فعال‌شده) هدف‌های جغرافیایی را به پویش‌هایتان اضافه کنید. تکه‌کد زیر نشان می‌دهد که چگونه پویش خود را با شناسه معیار هدف‌یابی کنید.

جاوا

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: GoogleAdsClient,
    customer_id: str,
    campaign_id: str,
    location_id: str,
) -> CampaignCriterionOperation:
    campaign_service: CampaignServiceClient = client.get_service(
        "CampaignService"
    )
    geo_target_constant_service: GeoTargetConstantServiceClient = (
        client.get_service("GeoTargetConstantService")
    )

    # Create the campaign criterion.
    campaign_criterion_operation: CampaignCriterionOperation = client.get_type(
        "CampaignCriterionOperation"
    )
    campaign_criterion: CampaignCriterion = 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
      

پرل

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::V26::Resources::CampaignCriterion->new({
      # Create a location using the specified location ID.
      location => Google::Ads::GoogleAds::V26::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::V26::Utils::ResourceNames::geo_target_constant(
            $location_id)}
      ),
      campaign => $campaign_resource_name
    });

  return
    Google::Ads::GoogleAds::V26::Services::CampaignCriterionService::CampaignCriterionOperation
    ->new({
      create => $campaign_criterion
    });
}
      

curl

Google ممکن است گاهی‌اوقات برخی معیارهای مکان را به‌دلایل مختلفی حذف کند: مکان ممکن است به مناطق کوچک‌تر یا بزرگ‌تر، تغییرات جغرافیایی-سیاسی، و غیره بازسازی شود. به فیلد status شیء GeoTargetConstant مراجعه کنید تا مشخص شود مکان ENABLED است یا REMOVAL_PLANNED.

جستجو براساس نام مکان

همچنین می‌توانید شناسه معیار را بااستفاده از نام مکان در GeoTargetConstantService.SuggestGeoTargetConstants جستجو کنید. نمونه کد زیر نشان می‌دهد که چگونه می‌توان شناسه معیار مکان را براساس نام مکان جستجو کرد.

جاوا

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.V26.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: GoogleAdsClient) -> None:
    gtc_service: GeoTargetConstantServiceClient = client.get_service(
        "GeoTargetConstantService"
    )

    gtc_request: SuggestGeoTargetConstantsRequest = client.get_type(
        "SuggestGeoTargetConstantsRequest"
    )
    gtc_request.locale = LOCALE
    gtc_request.country_code = COUNTRY_CODE

    # The location names to get suggested geo target constants.
    # Type hint for gtc_request.location_names.names is not straightforward
    # as it's part of a complex protobuf object.
    gtc_request.location_names.names.extend(
        ["Paris", "Quebec", "Spain", "Deutschland"]
    )

    results: SuggestGeoTargetConstantsResponse = (
        gtc_service.suggest_geo_target_constants(gtc_request)
    )

    suggestion: GeoTargetConstantSuggestion
    for suggestion in results.geo_target_constant_suggestions:
        geo_target_constant: GeoTargetConstant = 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
      

پرل

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::V26::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;
}
      

curl

کمپین‌های هدف برای مجاورت با یک مکان

مواقعی وجود دارد که ممکن است بخواهید حتی دقیق‌تر از یک شهر یا کشور هدف‌یابی کنید. برای مثال، ممکن است بخواهید سوپرمارکت‌هایتان را در فاصله ۱۰ کیلومتری از مکان فروشگاهتان تبلیغ کنید. در چنین مواردی، می‌توانید از هدف‌یابی مجاورتی استفاده کنید. کد ایجاد هدف نزدیک مشابه افزودن مکان هدف است، با این تفاوت که باید به‌جای شیء LocationInfo، شیء ProximityInfo ایجاد کنید.

جاوا

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: GoogleAdsClient, customer_id: str, campaign_id: str
) -> CampaignCriterionOperation:
    campaign_service: CampaignServiceClient = client.get_service(
        "CampaignService"
    )

    # Create the campaign criterion.
    campaign_criterion_operation: CampaignCriterionOperation = client.get_type(
        "CampaignCriterionOperation"
    )
    campaign_criterion: CampaignCriterion = 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
      

پرل

sub create_proximity_campaign_criterion_operation {
  my ($campaign_resource_name) = @_;

  # Construct a campaign criterion as a proximity.
  my $campaign_criterion =
    Google::Ads::GoogleAds::V26::Resources::CampaignCriterion->new({
      proximity => Google::Ads::GoogleAds::V26::Common::ProximityInfo->new({
          address => Google::Ads::GoogleAds::V26::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::V26::Services::CampaignCriterionService::CampaignCriterionOperation
    ->new({
      create => $campaign_criterion
    });
}
      

curl

بازیابی هدف‌های جغرافیایی

بااستفاده از GoogleAdsService.SearchStream می‌توانید اهداف جغرافیایی پویش را بازیابی کنید. گنجاندن campaign_criterion.type و campaign_criterion.resource_name در عبارت SELECT به شما امکان می‌دهد بین معیارهای LOCATION و PROXIMITY تمایز قائل شوید و نام منابع را برای به‌روزرسانی‌ها یا حذف‌های بعدی ثبت کنید.

SELECT
  campaign_criterion.resource_name,
  campaign_criterion.campaign,
  campaign_criterion.type,
  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.proximity.radius_units,
  campaign_criterion.proximity.address.street_address,
  campaign_criterion.proximity.address.city_name,
  campaign_criterion.proximity.address.postal_code,
  campaign_criterion.proximity.address.country_code,
  campaign_criterion.negative
FROM campaign_criterion
WHERE
  campaign_criterion.campaign = 'customers/{customer_id}/campaigns/{campaign_id}'
  AND campaign_criterion.type IN ('LOCATION', 'PROXIMITY')

به‌روزرسانی هدف‌های جغرافیایی

معیارهای مکان در پویش پس‌از ایجاد تغییرناپذیر هستند، بنابراین به‌روزرسانی هدف‌های جغرافیایی پویش مستلزم جایگزینی هدف‌های منسوخ با هدف‌های جدید در یک درخواست اتمی واحد CampaignCriterionService.MutateCampaignCriteria است:

  1. بااستفاده از پُرسمان GAQL در بازیابی هدف‌های جغرافیایی، معیارهای LOCATION و PROXIMITY موجود پویش را پُرسمان کنید.
  2. معیارهای موجود را با فهرست هدف موردنظرتان مقایسه کنید.
  3. برای هر معیار منسوخ، یک CampaignCriterionOperation با remove تنظیم‌شده روی resource_name معیار موجود بسازید.
  4. برای هر مکان یا هدف نزدیک جدید، CampaignCriterionOperation با create پرشده با معیار LocationInfo یا ProximityInfo جدید بسازید.
  5. هر دو عملیات remove و create را در یک تماس MutateCampaignCriteria ارسال کنید تا انتقال به‌صورت اتمی انجام شود.

کنار گذاشتن هدف‌های جغرافیایی

همچنین می‌توانید LocationInfo را کنار بگذارید، اما نه ProximityInfo. این ویژگی زمانی بسیار مفید است که بخواهید منطقه‌ای را هدف‌یابی کنید، اما زیرمنطقه‌ای را مستثنی کنید (برای مثال، هدف‌یابی کل ایالات متحده، به‌جز شهر نیویورک). برای مستثنی کردن منطقه، فیلد negative را در CampaignCriterion روی true تنظیم کنید.

هدف‌یابی چند منطقه جغرافیایی

اگر از LocationGroupInfo استفاده می‌کنید، می‌توانید کمپینی را فعال کنید تا چندین منطقه جغرافیایی را که در مرکز مکان‌های تعریف‌شده توسط دارایی‌های مکان قرار دارند یا براساس منطقه جغرافیایی فیلتر شده‌اند هدف قرار دهد:

  • مجموعه‌های دارایی مکان: یا enable_customer_level_location_asset_set = true (برای هدف‌یابی مجموعه دارایی مکان مشتری) یا location_group_asset_sets (برای هدف‌یابی نام‌های منبع AssetSet خاص) را تنظیم کنید. این دو فیلد را نمی‌توان باهم تنظیم کرد، و هیچ‌کدام را نمی‌توان با geo_target_constants ترکیب کرد.
  • شعاع و واحدها: شعاع در LocationGroupInfo یک منطقه دایره‌ای را در اطراف هر مکان تعریف می‌کند و به هر دو radius و radius_units (LocationGroupRadiusUnitsEnum) نیاز دارد:
    • هنگام استفاده از مجموعه‌های دارایی مکان (enable_customer_level_location_asset_set یا location_group_asset_sets)، مقادیر radius_units پشتیبانی‌شده عبارت‌اند از MILLI_MILES و METERS.
    • هنگام فیلتر کردن براساس geo_target_constants (که حداکثر یک شناسه معیار مجاز است و فیلدهای AssetSet تنظیم نشده‌اند)، مقادیر radius_units پشتیبانی‌شده عبارت‌اند از MILES و METERS.

گزینه‌های پیشرفته مکان با GeoTargetTypeSetting

علاوه‌بر مشخص کردن مکان‌ها برای هدف‌یابی یا مستثنی کردن، می‌توانید نحوه مطابقت دادن کاربران با این مکان‌ها توسط Google Ads را بااستفاده از گزینه‌های پیشرفته مکان اصلاح کنید. این تنظیمات ازطریق Campaign.GeoTargetTypeSetting مدیریت می‌شود.

این تنظیم شامل دو فیلد است:

  • positive_geo_target_type: تعیین می‌کند کاربران چگونه برای مکان‌هایی که هدف‌یابی می‌کنید مطابقت داده شوند.
  • negative_geo_target_type: تعیین می‌کند کاربران چگونه برای مکان‌هایی که مستثنی می‌کنید مطابقت داده شوند.

تنظیمات هدف‌یابی مثبت (positive_geo_target_type)

می‌توانید از گزینه‌های زیر برای هدف‌یابی مکان مثبت خود انتخاب کنید، بااستفاده از مقادیر PositiveGeoTargetTypeEnum:

  • PRESENCE_OR_INTEREST (پیش‌فرض توصیه‌شده):

    • به افرادی دسترسی پیدا می‌کند که احتمالاً در مکان‌های موردهدف شما هستند یا مرتباً هستند، به‌علاوه افرادی که به مکان‌های موردهدف شما علاقه نشان داده‌اند.
    • علاقه می‌تواند با عبارت‌های جستجو، بازدیدهای گذشته، یا محتوای مصرف‌شده مرتبط با مکان نشان داده شود.
    • این گزینه گسترده‌ترین دسترسی را فراهم می‌کند.
  • PRESENCE:

    • فقط به افرادی دسترسی پیدا می‌کند که احتمالاً به‌طور فیزیکی در مکان‌های موردهدف شما هستند یا مرتباً در آنجا حضور دارند.
    • این گزینه محدودکننده‌تر است و اگر خدمات یا محصولاتتان دقیقاً محدود به افرادی باشد که به‌طور فیزیکی در منطقه‌ای حضور دارند، مفید است.

تنظیمات هدف‌یابی منفی (negative_geo_target_type)

برای مکان‌هایی که می‌خواهید مستثنی کنید، از NegativeGeoTargetTypeEnum استفاده می‌کنید:

  • PRESENCE (پیش‌فرض توصیه‌شده):
    • افرادی را که احتمالاً به‌طور فیزیکی در مکان‌هایی که مستثنی کرده‌اید حضور دارند کنار می‌گذارد.
    • افراد خارج از مناطق مستثنی‌شده، حتی اگر به آن‌ها علاقه‌مند باشند، ممکن است همچنان آگهی‌های شما را ببینند، مشروط بر اینکه با هدف‌یابی مثبت شما مطابقت داشته باشند.

مدیریت گزینه‌های پیشرفته مکان

با به‌روزرسانی شیء Campaign.geo_target_type_setting می‌توانید این تنظیمات را کنترل کنید. مثال زیر ساختار به‌روزرسانی CampaignOperation را نشان می‌دهد که positive_geo_target_type را روی PRESENCE تنظیم می‌کند:

// Conceptual structure for a Campaign update operation
operations {
  update {
    resource_name: "customers/{customer_id}/campaigns/{campaign_id}"
    geo_target_type_setting {
      positive_geo_target_type: PRESENCE
      // negative_geo_target_type remains at its default PRESENCE
    }
  }
  update_mask {
    paths: "geo_target_type_setting.positive_geo_target_type"
  }
}

برای واکشی تنظیمات فعلی، campaign.geo_target_type_setting.positive_geo_target_type و campaign.geo_target_type_setting.negative_geo_target_type را در GoogleAdsService پرسمان جستجو اضافه کنید.

با پیکربندی این تنظیمات، کنترل دقیق‌تری بر اینکه چه کسانی آگهی‌هایتان را براساس رابطه‌شان با مکان‌های جغرافیایی مشخص‌شده توسط شما ببینند به‌دست می‌آورید و این آگهی‌ها را بیشتر با اهداف کسب‌وکارتان همسو می‌کنید.

روال‌های مطلوب

  • اگر محصول یا سرویس شما صرفاً محدود به افرادی است که به‌طور فیزیکی در مکانی حضور دارند، PRESENCE را انتخاب کنید. برای مثال، فرض کنید که از کاربران می‌خواهید در فروشگاه باشند یا ارسال محلی را الزامی می‌کنید.
  • PRESENCE_OR_INTEREST را انتخاب کنید اگر محصول یا خدمات شما می‌تواند برای افرادی که به مکانی علاقه‌مند هستند نیز مفید باشد، حتی اگر به‌طور فیزیکی در آنجا حضور نداشته باشند. برای مثال، کاربری که برای تعطیلات برنامه‌ریزی می‌کند ممکن است به هتل‌های شهر مقصدش علاقه‌مند باشد.
  • برای پالایش کردن دسترسی، از هدف‌یابی مکانی منفی استفاده کنید. اگر ایالات متحده را با PRESENCE_OR_INTEREST هدف‌یابی می‌کنید، اما به ایالت خاصی ارسال نمی‌کنید، می‌توانید آن ایالت را بااستفاده از negative=true در معیار LocationInfo مستثنی کنید. این تنظیمات در ترکیب با negative_geo_target_type که روی PRESENCE تنظیم شده است، از نمایش آگهی‌های شما به کاربران در آن ایالت جلوگیری می‌کند، درحالی‌که همچنان به کاربران خارج از آن ایالت که ممکن است به مکان‌های ایالات متحده علاقه‌مند باشند دسترسی پیدا می‌کند.

قدم بعدی چیست