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

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

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

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

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

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

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

می‌توانید پویش‌ها را برای هر منطقه جغرافیایی که 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::V25::Resources::CampaignCriterion->new({
      # Create a location using the specified location ID.
      location => Google::Ads::GoogleAds::V25::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::V25::Utils::ResourceNames::geo_target_constant(
            $location_id)}
      ),
      campaign => $campaign_resource_name
    });

  return
    Google::Ads::GoogleAds::V25::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.V25.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::V25::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::V25::Resources::CampaignCriterion->new({
      proximity => Google::Ads::GoogleAds::V25::Common::ProximityInfo->new({
          address => Google::Ads::GoogleAds::V25::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::V25::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 ترکیب شده است، مانع می‌شود آگهی‌هایتان به کاربران آن ایالت نشان داده شود، اما همچنان به کاربرانی خارج از آن ایالت که ممکن است به مکان‌های ایالات متحده علاقه‌مند باشند دسترسی پیدا می‌کند.

قدم بعدی چیست