住所表示オプション

住所表示オプションを使うと、店舗や会社の住所、電話番号、地図上のマーカーを広告文と一緒に表示できます。住所表示オプションには次の 2 種類があります。

  • AdWords の住所表示オプションは、広告に店舗や会社の住所や地図、または距離を追加表示できる機能です。この広告表示オプションの種類は、実店舗への来店を促進するのに便利です。

  • アフィリエイト住所表示オプションは、お客様の商品を販売している最寄りの小売チェーン店をユーザーに知らせるための機能です。この広告表示オプションは、小売チェーンを通じて商品を販売している場合に、どこで何を購入しようか考えているユーザーにアプローチするのに便利です。

AdWords の住所表示オプション

AdWords の住所表示オプションを使用すると、店舗や会社の住所、電話番号、地図上のマーカーを広告文と一緒に表示できます。住所などのビジネス情報は、Google マイビジネス ロケーション マネージャまたは Google My Business API を使って管理します。次のセクションでは Google My Business API を使ってビジネス情報を作成する方法や、AdWords API を使って広告とリンクする方法を詳細な例を使って解説します。

Google マイビジネス

Google マイビジネス(GMB)は、Google のすべてのサービスで利用するビジネス情報の一元的なレポジトリです。Google マイビジネスのビジネス情報と AdWords の住所表示オプションの同期を取る必要はありません。必要なフィード オブジェクトを 1 回設定すれば、AdWords の住所表示オプションの情報と Google マイビジネスの最新のデータを自動的に同期することができます。

このセクションでは Google My Business API を使ってビジネス情報をプログラムで作成し、必要なフィード オブジェクトを作成して AdWords とリンクする方法を解説します。ビジネス情報の作成に Google マイビジネス ロケーション マネージャを使用したい場合は、次以降の説明をスキップして手順 3 から作業を進めてください。

手続き

AdWords で使用するフィードのコンセプトに馴染みがない場合は、サイトリンクのフィードに関するガイドをご覧ください。以下の手順はそのガイドを参考にしています。

ビジネス情報の作成とリンクは次の手順で行います。

  1. Google My Business API と AdWords API の呼び出しの認証を行います(OAuth 2.0)。

  2. Google My Business API を使って新しいビジネス情報を作成します。

    1. accounts.list を使用して、所有しているか管理権限を持っている Google マイビジネス アカウントを取得します。
    2. 使用するアカウントを選択します(例: AccountType = BUSINESS)。
    3. ビジネス情報を作成して、ラベル住所営業時間などを指定します。
  3. Google マイビジネス アカウントにリンクした新しい住所表示オプション フィードを作成します。

    1. systemFeedGenerationData の値に、Google マイビジネス アカウントの情報を含む PlacesLocationFeedData オブジェクトを設定します。
    2. origin を ADWORDS に設定します。
    3. feedAttributes は指定しません。 これはシステムが生成するフィードであるため、そうした属性は AdWords で自動的に作成されます。
    4. FeedService.mutate() ADD オペレーションを実行します。
  4. フィードとユーザーを関連付けます。

    1. 手順 3 の feedId を使用します。
    2. LOCATION ではプレースホルダ タイプ 7 を使用します。
    3. 適切な matchingFunction を使用します。
    4. CustomerFeedService.mutate() ADD オペレーションを実行します。
  5. (省略可)フィードと特定のキャンペーンまたは広告グループを関連付けます。

    1. 手順 3 の feedId を使用します。
    2. LOCATION ではプレースホルダ タイプ 7 を使用します。
    3. matchingFunction を使用して、手順 2 の c のラベルを基にフィルタを適用します。
    4. CampaignFeedService.mutate() ADD または AdGroupFeedService.mutate() ADD オペレーションを実行します。

他の広告表示オプションでフィードに慣れている方はお気付きかもしれませんが、上記の手順では FeedMapping を作成していません。 このフィードはシステムが自動生成するもので、フィードの属性と住所表示オプションのプレースホルダ フィールドとの対応は AdWords であらかじめ認識されているため、そうした情報を提供する必要はありません。 次以降のセクションでは、新しいフィードを作成する際の systemFeedGenerationData オブジェクトの設定方法を説明します(手順 3 の a)。すべての要素をまとめるコードサンプルについては下記をご覧ください。

フィードで PlacesLocationFeedData オブジェクトを作成する

作成したフィードで systemFeedGenerationData 属性を設定すると、AdWords に次の指示を伝えることができます。

  • Google マイビジネス アカウントと AdWords アカウントをリンクする。
  • フィードのフィード属性を自動的に作成する。
  • フィードとターゲット地域の criterionType(77)FeedMapping を自動的に作成する。
  • (省略可)Google マイビジネス アカウントで AdWords が同期を取るビジネス情報を制限する。

PlacesLocationFeedData オブジェクトの属性は次のように設定します。

属性 必須 説明
emailAddress はい Google マイビジネス アカウントの所有者または管理者のメールアドレス。これは oAuthInfo で指定したアドレスと同じものにしてください。
oAuthInfo はい AdWords アカウントに Google マイビジネス アカウントへのアクセス権を付与する OAuth2 情報。
businessAccountIdentifier いいえ ビジネス情報を利用する管理対象ビジネス アカウントの ID。 Google My Business API を使用している場合は、Accountnameaccount_id 部分からこの ID を取得できます。フォームのビジネス用 URL から BUSINESS_ACCOUNT_ID 部分をコピーすることもできます。

https://business.google.com/b/BUSINESS_ACCOUNT_ID/...
businessNameFilter いいえ AdWords と同期を取るビジネスの名前。
categoryFilters いいえ AdWords と同期を取るリスティングのカテゴリ。
labelFilters いいえ AdWords と同期を取るリスティングのラベル。

PlacesLocationFeedData で OAuthInfo オブジェクトを作成する

AdWords アカウントでは PlacesLocationFeedDataoAuthInfo 属性の情報を利用して、Google マイビジネス アカウントからビジネス情報を読み取ります。

OAuthInfo オブジェクトの属性は次のように設定します。

属性 説明
httpMethod GET または PUT 認証情報を取得するための HTTP メソッド。
httpRequestUrl https://www.googleapis.com/auth/adwords AdWords API で Google マイビジネスへのリクエストを承認するために使用する OAuth スコープ
httpAuthorizationHeader Bearer OAUTH_ACCESS_TOKEN Google マイビジネス アカウントの読み取りアクセス権を AdWords アカウントに付与する OAuth アクセス トークンを含む認証ヘッダーOAUTH_ACCESS_TOKEN を設定すると、PlacesLocationFeedDataemailAddresshttpRequestUrl に一致するスコープの代わりに、OAuth 認証情報から生成されたアクセス トークンが使用されます。

サンプルコードの全文

次のコードでは、Google My Business API と AdWords API の両方で Java クライアント ライブラリを使用します。ご利用の言語向けの設定については、それぞれの手順をご覧ください。

手順 1: Google My Business API と AdWords API の呼び出しの認証を行う(OAuth 2.0)

// Creating the default factory and transport (used later)
JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();
HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();

// Load the credentials from the ads.properties file.
// Please note: This example assumes that your AdWords and MyBusiness accounts
// are linked to the same Google account, and that the Adwords API scope
// (https://www.googleapis.com/auth/adwords) was used when generating the
// refresh token.
// If you are using different Google accounts, you must authenticate
// separately and maintain two credentials (see
// /my-business/content/set-up-java-client).
Credential credential =
    new OfflineCredentials.Builder()
        .forApi(Api.ADWORDS)
        .withHttpTransport(httpTransport)
        .fromFile()
        .build()
        .generateCredential();

手順 2: Google My Business API を使って新しいビジネス情報を作成する

// Initialize GMB.
Mybusiness gmb =
    new Mybusiness.Builder(httpTransport, jsonFactory, credential)
        .setApplicationName(APPLICATION_NAME)
        .build();
// Get list of GMB accounts (2a).
Mybusiness.Accounts.List listAccounts = gmb.accounts().list();
ListAccountsResponse response = listAccounts.execute();
List<Account> accounts = response.getAccounts();

// Find the account to work with (2b). The first BUSINESS account is used
// here, but you can use any other account as well (e.g., PERSONAL).
Account mainAccount = null;
for (Account account : accounts) {
  if (account.getType().equalsIgnoreCase("BUSINESS")) {
    mainAccount = account;
    break;
  }
}
if (mainAccount == null) {
  throw new RuntimeException("Main GMB account not found");
}
// Create the location (2c).
Location location = new Location();
location.setLocationName("My Company");
location.setStoreCode("Company-1");
location.setPrimaryPhone("16505550001");
location.setPrimaryCategory(new Category().setCategoryId("gcid:software_company"));
location.setWebsiteUrl("https://www.example.com/");
// Create an address.
Address address = new Address();
List<String> addressLines = new ArrayList<String>();
addressLines.add("1600 Amphitheatre Pkwy");
address.setAddressLines(addressLines);
address.setLocality("Mountain View");
address.setAdministrativeArea("CA");
address.setCountry("US");
address.setPostalCode("94043");
location.setAddress(address);
// Create business hours (optional).
BusinessHours businessHours = new BusinessHours();
List<TimePeriod> periods = new ArrayList<TimePeriod>();
List<String> days =
    Arrays.asList("Monday", "Tuesday", "Wednesday", "Thursday", "Friday");
for (String day : days) {
  TimePeriod period = new TimePeriod();
  period.setOpenDay(day);
  period.setOpenTime("9:00");
  period.setCloseTime("17:00");
  period.setCloseDay(day);
  periods.add(period);
}
businessHours.setPeriods(periods);
location.setRegularHours(businessHours);

// Assign a label to the location (optional). This example uses the AdWords
// customer ID as a label to associate the location with an ad group in AdWords.
// You can use any label value to identify locations, or no label at all
// (e.g., filter by business name or category).
location.setLabels(Collections.singletonList(INSERT_CUSTOMER_ID_HERE));
CreateLocationRequest createLocationRequest = new CreateLocationRequest();
createLocationRequest.setLocation(location);
createLocationRequest.setLanguageCode("en-US");
// Use a random request ID.
createLocationRequest.setRequestId(UUID.randomUUID().toString());
Mybusiness.Accounts.Locations.Create createLocation =
    gmb.accounts().locations().create(mainAccount.getName(),
    createLocationRequest);
Location createdLocation = createLocation.execute();

手順 3: Google マイビジネスにリンクした新しいフィードを作成する

// Initialize AdWords.
AdWordsSession session = new AdWordsSession.Builder()
    .fromFile()
    .withOAuth2Credential(credential)
    .build();
session.setClientCustomerId(INSERT_CUSTOMER_ID_HERE);
AdWordsServices services = new AdWordsServices();
FeedServiceInterface feedService =
    services.get(session, FeedServiceInterface.class);
// Create the feed object.
Feed gmbFeed = new Feed();
gmbFeed.setName("GMB feed #" + System.currentTimeMillis());
// Create the PlacesLocationFeedData object (3a).
PlacesLocationFeedData feedData = new PlacesLocationFeedData();
feedData.setEmailAddress(GMB_ACCOUNT_EMAIL);
OAuthInfo oAuthInfo = new OAuthInfo();
oAuthInfo.setHttpMethod("GET");
oAuthInfo.setHttpRequestUrl(
    "https://www.googleapis.com/auth/adwords");
oAuthInfo.setHttpAuthorizationHeader(
    String.format("Bearer %s", credential.getAccessToken()));
feedData.setOAuthInfo(oAuthInfo);
gmbFeed.setSystemFeedGenerationData(feedData);
// Since this feed's feed items will be managed by AdWords,
// you must set its origin to ADWORDS (3b).
gmbFeed.setOrigin(FeedOrigin.ADWORDS);
// Note: No feed attributes for the feed were specified, as this is a
// system-generated feed (3c).
// Create an operation to add the feed.
FeedOperation feedOperation = new FeedOperation();
feedOperation.setOperand(gmbFeed);
feedOperation.setOperator(Operator.ADD);
// Add the feed (3d).
FeedReturnValue addFeedResult = feedService.mutate(
    new FeedOperation[] {feedOperation});
Feed createdFeed = addFeedResult.getValue(0);

手順 4: フィードとユーザーを関連付ける

CustomerFeedServiceInterface customerFeedService =
    services.get(session, CustomerFeedServiceInterface.class);
CustomerFeed customerFeed = new CustomerFeed();
// Set feedId and placeholder type (4a + 4b).
customerFeed.setFeedId(createdFeed.getId());
customerFeed.setPlaceholderTypes(new int[] {PLACEHOLDER_LOCATION});
// Create a matching function that will always evaluate to true (4c).
Function customerMatchingFunction = new Function();
ConstantOperand constOperand = new ConstantOperand();
constOperand.setType(ConstantOperandConstantType.BOOLEAN);
constOperand.setBooleanValue(true);
customerMatchingFunction.setLhsOperand(
    new FunctionArgumentOperand[] {constOperand});
customerMatchingFunction.setOperator(FunctionOperator.IDENTITY);
customerFeed.setMatchingFunction(customerMatchingFunction);
// Create an operation to add the customer feed.
CustomerFeedOperation customerFeedOperation = new CustomerFeedOperation();
customerFeedOperation.setOperand(customerFeed);
customerFeedOperation.setOperator(Operator.ADD);
// Add the feed (4d).
CustomerFeedReturnValue customerFeedResult = customerFeedService.mutate(
    new CustomerFeedOperation[] {customerFeedOperation});
CustomerFeed createdCustomerFeed = customerFeedResult.getValue(0);

手順 5: フィードを特定の広告グループ(またはキャンペーン)に関連付ける

AdGroupFeedServiceInterface adgroupFeedService =
    services.get(session, AdGroupFeedServiceInterface.class);
// Create the ad group feed.
AdGroupFeed adgroupFeed = new AdGroupFeed();
adgroupFeed.setAdGroupId(AD_GROUP_ID);
// Set feedId and placeholder type (5a + 5b).
adgroupFeed.setFeedId(createdFeed.getId());
adgroupFeed.setPlaceholderTypes(new int[] {PLACEHOLDER_LOCATION});
// Define matching function based on the label (5c).
Function matchingFunction = new Function();
String matchingFunctionString = String.format(
    "EQUALS(FeedAttribute[%d, 14], \"%s\")",
    createdFeed.getId(),
    createdLocation.getLabels().get(0));
matchingFunction.setFunctionString(matchingFunctionString);
adgroupFeed.setMatchingFunction(matchingFunction);
// Create an operation to add the ad group feed.
AdGroupFeedOperation operation = new AdGroupFeedOperation();
operation.setOperand(adgroupFeed);
operation.setOperator(Operator.ADD);
// Add the feed (5d).
AdGroupFeedReturnValue result = adgroupFeedService.mutate(
    new AdGroupFeedOperation[]{operation});
AdGroupFeed createdAdGroupFeed = result.getValue(0);

住所表示オプションにフィルタを適用する

住所表示オプションはアカウント内のすべてのキャンペーンと広告グループに自動的に適用されます。住所表示オプションを特定の広告グループまたはキャンペーンに適用する場合はフィルタを使用します。

フィルタの使用方法

住所表示オプションでは、アカウントの複数のレベルでさまざまな内容のフィルタを定義できます。キャンペーンや広告グループによって異なるビジネス情報を表示したい場合は、CampaignFeed または AdGroupFeedmatchingFunction を使用します。

フィルタは、限定する範囲の狭いものから優先的に適用されます。たとえば、次のようなフィードを設定しているとします。

  • CustomerFeed
  • キャンペーン ACampaignFeed
  • キャンペーン A の広告グループ GAdGroupFeed
  • CampaignFeedAdGroupFeed も設定していないキャンペーン B

上記の設定ではフィルタは次のように機能します(点線はどの広告でどのマッチング関数が使用されるのかを示します)。

  • 広告グループ G の広告には、AdGroupFeed のマッチング関数で一致した項目の住所表示オプションだけが表示されます。
  • キャンペーン A の他のすべての広告グループの広告には、CampaignFeed のマッチング関数で一致した項目の住所表示オプションだけが表示されます。
  • キャンペーン B の広告には、CustomerFeed のマッチング関数で一致した項目の住所表示オプションが表示されます。

属性を基にフィルタを適用する

フィード オブジェクトのフィルタは PlacesLocationFeedData オブジェクトの businessNameFiltercategoryFilters、または labelFilters 属性に基づいて同期を取るフィード アイテムを限定します。その他のオブジェクトのフィルタはユーザー、キャンペーン、広告グループの特定の組み合わせで、AdWords のどのフィード アイテムが住所表示オプションとして使われるのかを指定します。これらのフィルタは次のような場合に利用できます。

  • 複数の AdWords アカウントで同じ Google マイビジネス アカウントを使用しており、各 AdWords アカウントがビジネス情報の一部と論理的に関連付けられている。
  • 広告に絶対に表示したくないビジネス情報が、Google マイビジネス アカウントに保存されている。

アカウント、キャンペーン、広告グループで matchingFunction を指定すると、住所表示オプション フィードのいずれかの属性に基づいてフィルタを適用できます。フィルタは以下の属性を基に適用することをおすすめします。

  • ラベル(プレースホルダ 14): Google マイビジネスでビジネス情報ごとにラベルを指定して AdWords のフィルタで使用すると、フィルタを全体的にカスタマイズできます。たとえば、アプリケーションで生成された固有の ID やお客様 ID を使用することができます。

    labelFilters を指定した場合は、指定したラベルが設定されているリスティングだけが、FeedItem と同期を取る対象となります。labelFilters にエントリがない場合は、すべてのリスティングが同期の対象となります。また、Google マイビジネスのリスティングのラベルはすべて、feedAttributeId = 14type = STRING_LIST のフィード属性と同期が取られます。マッチング関数の条件を次のように指定すれば、ラベルが設定されているフィード アイテムにフィルタをかけることができます。

    CONTAINS_ANY(FeedAttribute[FeedId,14],{"label1","label2","label3"})
    
  • ビジネス名(プレースホルダ 1): ビジネス情報のビジネス名を使用すると、きめ細かなフィルタを適用できます。

  • ビジネス カテゴリ(プレースホルダ 9): カテゴリに基づくフィルタでは、一致する範囲を広げたり、ビジネス名と AND で結合して精度を高めたりすることができます。

無効なフィルタの自動削除

AdWords では、住所表示オプションに定義されているフィルタが毎日確認されます。Google マイビジネスのビジネス情報がフィルタと一致しないと判断された場合、次の手順でフィルタが削除されます。

フィルタの場所 フィルタを削除する手順
PlacesLocationFeedData PlacesLocationFeedData の次の属性を null に設定します。
  • businessNameFilter
  • categoryFilters
  • labelFilters
CampaignFeed CampaignFeed を削除します。
AdGroupFeed AdGroupFeed を削除します。

次のステップ

フィード属性 ID に基づくフィルタについて詳しくは、マッチング関数に関するガイドをご覧ください。広告グループ フィードやキャンペーン フィードの作成方法の例については、サイトリンク フィードに関するガイドをご覧ください。

アフィリエイト住所表示オプション

小売チェーンを通じて商品を販売している場合、アフィリエイト住所表示オプションを使用すると、どこで何を購入しようか考えているユーザーにアプローチできます。 アフィリエイト住所表示オプションは、Google マイビジネス(GMB)を使った住所表示オプションと似ていますが、次の点で異なります。

GMB の住所表示オプション アフィリエイト住所表示オプション
広告主はまず GMB アカウントにリンクする必要があります。 GMB アカウントへのリンクは必要ありません。
フィードのビジネス情報は GMB アカウントのビジネス情報から作成されます。 フィードのビジネス情報は、チェーン ID に基づいて AdWords によって入力されます。
アカウントごとに 1 つのフィードのみ使用できます。 アカウントごとに複数のフィードを使用できます。

手順

アフィリエイト住所表示オプションを設定する手順は、Google マイビジネスで住所表示オプションを作成する手順と似ています。

  1. 新しいアフィリエイト住所表示オプション フィードを作成する。
  2. フィードとユーザー、キャンペーン、または広告グループを関連付ける。

手順 1: 新しいアフィリエイト住所表示オプション フィードを作成する

アフィリエイト住所表示オプションを使用するには、アカウントに新しいアフィリエイト住所表示オプション フィードを作成する必要があります。AdWords で使用するフィードのコンセプトに馴染みがない場合は、サイトリンクのフィードに関するガイドをご覧ください。 以下の手順はそのガイドを参考にしています。

まず、AdWords のセッションとサービスを初期化します。

// Generate a refreshable OAuth2 credential.
Credential oAuth2Credential =
    new OfflineCredentials.Builder()
        .forApi(Api.ADWORDS)
        .fromFile()
        .build()
        .generateCredential();

// Construct an AdWordsSession.
AdWordsSession session =
    new AdWordsSession.Builder().fromFile().withOAuth2Credential(oAuth2Credential).build();

AdWordsServicesInterface adWordsServices = AdWordsServices.getInstance();

次に、フィードを作成し、systemFeedGenerationData に、商品を販売する小売チェーンに関する情報を含む AffiliateLocationFeedData オブジェクトを設定します。 originADWORDS を設定して、フィードをシステム生成フィードとしてマークします。

// Create a feed that will be populated with all the addresses that correspond to the chain ID
// you requested. Do not add FeedAttributes to this object, as AdWords will add them
// automatically because this will be a system generated feed.
Feed affiliateFeed = new Feed();
affiliateFeed.setName("Affiliate location extension feed " + System.currentTimeMillis());

Chain chain = new Chain();
chain.setChainId(chainId);

// Since this feed's feed items will be managed by AdWords, you must set its origin to ADWORDS.
affiliateFeed.setOrigin(FeedOrigin.ADWORDS);

// Set the system feed generation data for AdWords.
AffiliateLocationFeedData feedData = new AffiliateLocationFeedData();
feedData.setChains(new Chain[] {chain});
feedData.setRelationshipType(RelationshipType.GENERAL_RETAILERS);

affiliateFeed.setSystemFeedGenerationData(feedData);

// Create an operation to add the feed.
FeedOperation feedOperation = new FeedOperation();
feedOperation.setOperand(affiliateFeed);
feedOperation.setOperator(Operator.ADD);

FeedReturnValue addFeedResult = feedService.mutate(new FeedOperation[] {feedOperation});
return addFeedResult.getValue(0);
AffiliateLocationFeedData オブジェクトについて

アフィリエイト住所表示オプション フィードに FeedMappingfeedAttributes を作成する必要がないのは、住所表示オプション フィードの場合と同様です。このフィードはシステム生成フィードであり、AdWords ではフィードの systemFeedGenerationData 属性を使用して次のオペレーションを行います。

  • フィードのフィード属性を自動的に作成する。
  • フィードの FeedMapping を自動的に作成する。
  • systemFeedGenerationData に指定した小売チェーンに対応するビジネス情報のリストをフィードに入力する。

AffiliateLocationFeedData オブジェクトの属性は次のように設定します。

属性 必須 説明
chains はい 広告を掲載するチェーンのリスト。有効なチェーン ID のリストをご覧ください。
relationshipType はい 広告主様と小売チェーンの関係タイプ
フィード設定完了の待機

住所表示オプションのフィードと同様に、アフィリエイト住所フィードをユーザーに関連付ける前に、アフィリエイト住所フィードの準備が整うのを待つ必要があります。このアプローチは、住所表示オプションのフィードの場合と似ていますが、FeedMappingService.query() を呼び出すときに PLACEHOLDER ID = 30 で絞り込む必要がある点が異なります。

FeedMappingServiceInterface feedMappingService =
    adWordsServices.get(session, FeedMappingServiceInterface.class);

String query =
    String.format(
        "SELECT FeedId, FeedMappingId, AttributeFieldMappings WHERE "
            + "FeedId = %d AND PlaceholderType = %d AND Status = ENABLED",
        feed.getId(), PLACEHOLDER_AFFILIATE_LOCATION);

FeedMapping retval = null;
FeedMappingPage page = null;

int numberOfAttempts = 0;
do {
  numberOfAttempts++;
  page = feedMappingService.query(query);

  if (page.getTotalNumEntries() == 0) {
    long sleepSeconds = (long) Math.scalb(5, numberOfAttempts);
    System.out.printf(
        "Attempt #%d to get FeedMapping was not successful. "
            + "Waiting %d seconds before trying again.%n",
        numberOfAttempts, sleepSeconds);
    Thread.sleep(sleepSeconds * 1000);
  } else {
    retval = page.getEntries(0);
    break;
  }

} while (numberOfAttempts < MAX_FEED_MAPPING_POLL_ATTEMPTS);

if (retval == null) {
  throw new IllegalStateException("Affiliate location feedmapping isn't setup correctly.");
}
return retval;

手順 2: フィードをユーザー、キャンペーン、または広告グループに関連付ける

フィードを使用する準備が整ったら、CampaignFeed オブジェクトを作成して、フィードをキャンペーンに関連付けることができます。フィードを広告グループまたはユーザーに関連付ける場合も同様ですが、それぞれ AdGroupFeed または CustomerFeed オブジェクトを作成して、適切なマッチング関数を使用する点が異なります。

次のコード スニペットは、キャンペーンのアフィリエイト住所表示オプションを絞り込み、1 つの小売チェーン ID のビジネス情報のみを提供します。

/**
 * The placeholder ID for affiliate locations. See
 * https://developers.google.com/adwords/api/docs/appendix/placeholders for a complete list of
 * valid values.
 */
private static final int PLACEHOLDER_AFFILIATE_LOCATION = 30;

/** Placeholder feed ID for chain ID attribute. */
private static final int PLACEHOLDER_FIELD_CHAIN_ID = 10;

...

CampaignFeedServiceInterface campaignFeedService =
    adWordsServices.get(session, CampaignFeedServiceInterface.class);

CampaignFeed campaignFeed = new CampaignFeed();
campaignFeed.setPlaceholderTypes(new int[] {PLACEHOLDER_AFFILIATE_LOCATION});

campaignFeed.setCampaignId(campaignId);
campaignFeed.setFeedId(feed.getId());

Function matchingFunction = new Function();
matchingFunction.setFunctionString(
    String.format(
        "IN(FeedAttribute[%d, %d], {%d})", feed.getId(), attributeIdForChainId, chainId));

campaignFeed.setMatchingFunction(matchingFunction);

CampaignFeedOperation operation = new CampaignFeedOperation();
operation.setOperator(Operator.ADD);
operation.setOperand(campaignFeed);

CampaignFeedReturnValue addedCampaignFeedResult =
    campaignFeedService.mutate(new CampaignFeedOperation[] {operation});
return addedCampaignFeedResult.getValue(0);

フィード属性 ID は、フィードの FeedMapping から次のように取得できます。

/**
 * The placeholder ID for affiliate locations. See
 * https://developers.google.com/adwords/api/docs/appendix/placeholders for a complete list of
 * valid values.
 */
private static final int PLACEHOLDER_AFFILIATE_LOCATION = 30;

/** Placeholder feed ID for chain ID attribute. */
private static final int PLACEHOLDER_FIELD_CHAIN_ID = 10;

...

for (AttributeFieldMapping fieldMapping : feedMapping.getAttributeFieldMappings()) {
  if (fieldMapping.getFieldId() == PLACEHOLDER_FIELD_CHAIN_ID) {
    return fieldMapping.getFeedAttributeId();
  }
}
throw new IllegalStateException("Affiliate location feed mapping isn't setup correctly.");

有効なマッチング関数

次の表に、サポートされているマッチング関数のリストとそれらの一般的な使用例を示します。

使用例 マッチング関数 備考
チェーン ID で絞り込む IN(FeedAttribute[FeedId, ChainAttributeId], {"CH1234", "CH2345"}) 最大 20 件のチェーン ID を絞り込むことができます。
フィードのすべてのビジネス情報のエンティティを対象にする IDENTITY(true)
エンティティのアフィリエイト住所をオフにする IDENTITY(false)

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。