単価設定

AdWords では、ビジネスで重視する内容に応じて広告の入札方法を選ぶことができます。

AdWords API では、入札に関わるすべてのパラメータを次のいずれかまたは両方を使って管理します。

どちらのオブジェクトでも biddingStrategyType フィールドか biddingScheme フィールド、またはその両方を使用して入札方法を指定できます。biddingScheme フィールドでは指定した入札方法に合わせてパラメータを追加できます。フィールドを 2 つとも使用する場合は入札方法を合わせる必要があります。

戦略のタイプ

下の表の「有効なコンテキスト」列は、特定の BiddingStrategyType とそれに関連する BiddingScheme タイプが、上記のどのコンテキストで使用できるのかを表しています。

  • 標準戦略と BiddingStrategyConfiguration オブジェクト。
  • ポートフォリオ戦略と SharedBiddingStrategy オブジェクト。
BiddingStrategyType BiddingScheme 名前 有効なコンテキスト
BUDGET_OPTIMIZER

ご利用いただけなくなりましたTARGET_SPEND をお使いください。

BudgetOptimizerBiddingScheme 予算オプティマイザー 標準
CONVERSION_OPTIMIZER

ご利用いただけなくなりました。TARGET_CPA をお使いください。

ConversionOptimizerBiddingScheme コンバージョンを重視 - コンバージョン単価を使用 標準
ENHANCED_CPC EnhancedCpcBiddingScheme 拡張 CPC ポートフォリオ
MANUAL_CPC

v201802 以降、enhancedCpcEnabled はデフォルトで true に設定されています。

ManualCpcBiddingScheme クリックを重視 - 上限クリック単価を使用 標準
MANUAL_CPM ManualCpmBiddingScheme CPM(インプレッション単価)

「ディスプレイ ネットワークのみのキャンペーン」でのみ動作

標準
MAXIMIZE_CONVERSIONS MaximizeConversionsBiddingScheme コンバージョン数の最大化

「検索キャンペーン」でのみ動作

標準
PAGE_ONE_PROMOTED PageOnePromotedBiddingScheme 検索ページの目標掲載位置 ポートフォリオ
TARGET_CPA TargetCpaBiddingScheme 目標コンバージョン単価 - 利用条件あり ポートフォリオ
標準
TARGET_OUTRANK_SHARE TargetOutrankShareBiddingScheme 目標優位表示シェア ポートフォリオ
TARGET_ROAS TargetRoasBiddingScheme 目標広告費用対効果 - 利用条件あり ポートフォリオ
標準
TARGET_SPEND

(v201710 のみ)enhancedCpcEnabled は標準戦略でのみ設定できます。

TargetSpendBiddingScheme クリック数の最大化 ポートフォリオ
標準
NONE AdGroup や AdGroupCriterion で入札戦略を削除するために使用される特別な入札戦略タイプ。 ポートフォリオ
標準

BiddingStrategyType または BiddingScheme を不適切なコンテキストで使用するとエラーになります。

  • ポートフォリオ戦略専用の入札方法を標準入札戦略のコンテキストで使用すると、INVALID_ANONYMOUS_BIDDING_STRATEGY_TYPE という理由で BiddingErrors エラーになります。
  • 標準戦略専用の入札方法をポートフォリオ戦略のコンテキストで使用すると、BIDDING_STRATEGY_NOT_SUPPORTED という理由で BiddingErrors エラーになります。

キャンペーンの戦略を指定する

標準入札戦略

キャンペーンで標準入札戦略を使用するには、キャンペーンの biddingStrategyConfiguration を次のように設定します。

  • 戦略の追加属性を設定する必要がない場合は、biddingStrategyType のみを設定します。
  • MANUAL_CPC 戦略の enhancedCpcEnabled 属性など、戦略の追加属性を設定する必要がある場合は、biddingStrategyScheme を設定します。
  • 入札戦略設定の biddingStrategyIdbiddingStrategyName は設定しないでください。

ポートフォリオ入札戦略

キャンペーンでポートフォリオ入札戦略を使用するには、次の 2 つの方法があります。

  1. 既存の SharedBiddingStrategy を使用する。
  2. BiddingStrategyService を使用して、新しい SharedBiddingStrategy を作成し、そのパラメータを設定する。

SharedBiddingStrategy を選択したら、その戦略を使用するキャンペーンを設定するために、キャンペーンの biddingStrategyConfiguration について biddingStrategyId を共有入札戦略の id に設定します。

入札戦略の変更

CampaignService mutate()SET operation を使用して、キャンペーンの入札戦略を更新できます。operand は、id をキャンペーンの ID に設定し、biddingStrategyConfiguration を上記のキャンペーンの戦略を指定するのように設定した Campaign である必要があります。

戦略設定をオーバーライドする

広告グループ単位で目標コンバージョン単価をオーバーライドする

広告グループの入札戦略設定の targetRoasOverride を設定することで、標準 TARGET_ROAS 戦略の TargetRoasBiddingSchemetargetRoas を広告グループ単位でオーバーライドすることができます。戦略の入札スキームの他のフィールドをオーバーライドすることはできません。

オーバーライドを解除するには、広告グループの BiddingStrategyConfigurationtargetRoasOverride0 に設定します。

ポートフォリオ TargetRoasBiddingSchemetargetRoas をオーバーライドしようとすると、エラーが発生します。

広告グループ単位で目標コンバージョン単価をオーバーライドする

広告グループの入札戦略設定に CpaBid を追加することで、TARGET_CPA 戦略の TargetCpaBiddingSchemetargetCpa を広告グループ単位でオーバーライドすることができます。戦略の入札スキームの他のフィールドをオーバーライドすることはできません。

上位の標準入札戦略設定をオーバーライドする

上位の単位とは異なる入札戦略を下位の単位に設定することはできません。たとえば、キャンペーン単位に MANUAL_CPC 戦略がある場合、広告グループ単位で MANUAL_CPM 戦略を設定するとエラーが返されます。

上位の単位に MANUAL_CPC 戦略がある場合に別の MANUAL_CPC 戦略を下位の単位に設定することは可能ですが、直接、入札単価を設定することをおすすめします。

入札単価を設定する

入札単価は広告グループ単位かグループ条件単位で設定できます。優先順位は、グループ条件に設定された入札単価、広告グループの入札単価の順になります。キャンペーン単位で入札単価を設定しようとしても失敗します。

1 つの BiddingStrategyConfiguration で同時に複数の入札方法を使用し、複数の単価を設定することができますが(CpcBidCpmBid など)、現在選択している biddingStrategyType に関連する入札単価だけが広告の入札に使用されます。

次のコードサンプルは mutate を呼び出し、広告グループ単位でクリック単価を追加します。

Java

// Get the AdGroupService.
AdGroupServiceInterface adGroupService =
    adWordsServices.get(session, AdGroupServiceInterface.class);

// Create an ad group with the specified ID.
AdGroup adGroup = new AdGroup();
adGroup.setId(adGroupId);
// Update the CPC bid if specified.
if (bidMicroAmount != null) {
  BiddingStrategyConfiguration biddingStrategyConfiguration =
      new BiddingStrategyConfiguration();
  Money cpcBidMoney = new Money();
  cpcBidMoney.setMicroAmount(bidMicroAmount);
  CpcBid cpcBid = new CpcBid();
  cpcBid.setBid(cpcBidMoney);
  biddingStrategyConfiguration.setBids(new Bids[] {cpcBid});
  adGroup.setBiddingStrategyConfiguration(biddingStrategyConfiguration);
}
// Pause the ad group.
adGroup.setStatus(AdGroupStatus.PAUSED);

// Create operations.
AdGroupOperation operation = new AdGroupOperation();
operation.setOperand(adGroup);
operation.setOperator(Operator.SET);

AdGroupOperation[] operations = new AdGroupOperation[] {operation};

// Update ad group.
AdGroupReturnValue result = adGroupService.mutate(operations);

C#

// Create an ad group with the specified ID.
AdGroup adGroup = new AdGroup();
adGroup.id = adGroupId;

// Pause the ad group.
adGroup.status = AdGroupStatus.PAUSED;

// Update the CPC bid if specified.
if (bidMicroAmount != null) {
  BiddingStrategyConfiguration biddingStrategyConfiguration =
      new BiddingStrategyConfiguration();
  Money cpcBidMoney = new Money();
  cpcBidMoney.microAmount = bidMicroAmount.Value;
  CpcBid cpcBid = new CpcBid();
  cpcBid.bid = cpcBidMoney;
  biddingStrategyConfiguration.bids = new Bids[] { cpcBid };
  adGroup.biddingStrategyConfiguration = biddingStrategyConfiguration;
}

// Create the operation.
AdGroupOperation operation = new AdGroupOperation();
operation.@operator = Operator.SET;
operation.operand = adGroup;

try {
  // Update the ad group.
  AdGroupReturnValue retVal = adGroupService.mutate(new AdGroupOperation[] { operation });

Python

# Initialize appropriate service.
ad_group_service = client.GetService('AdGroupService', version='v201802')

# Construct operations and update an ad group.
operations = [{
    'operator': 'SET',
    'operand': {
        'id': ad_group_id,
        'status': 'PAUSED'
    }
}]

if bid_micro_amount:
  operations[0]['operand']['biddingStrategyConfiguration'] = {
      'bids': [{
          'xsi_type': 'CpcBid',
          'bid': {
              'microAmount': bid_micro_amount,
          }
      }]
  }

ad_groups = ad_group_service.mutate(operations)

PHP

$adGroupService = $adWordsServices->get($session, AdGroupService::class);

$operations = [];
// Create ad group with the specified ID.
$adGroup = new AdGroup();
$adGroup->setId($adGroupId);

// Update the CPC bid if specified.
if (!is_null($cpcBidMicroAmount)) {
    $bid = new CpcBid();
    $money = new Money();
    $money->setMicroAmount($cpcBidMicroAmount);
    $bid->setBid($money);
    $biddingStrategyConfiguration = new BiddingStrategyConfiguration();
    $biddingStrategyConfiguration->setBids([$bid]);
    $adGroup->setBiddingStrategyConfiguration($biddingStrategyConfiguration);
}

// Create ad group operation and add it to the list.
$operation = new AdGroupOperation();
$operation->setOperand($adGroup);
$operation->setOperator(Operator::SET);
$operations[] = $operation;

// Update the ad group on the server.
$result = $adGroupService->mutate($operations);

Perl

# Create an ad group with the specified ID.
# Pause the ad group.
my $ad_group = Google::Ads::AdWords::v201802::AdGroup->new({
  id     => $ad_group_id,
  status => "PAUSED"
});

# Update the CPC bid if specified.
if ($cpc_bid_micro_amount) {
  my $bidding_strategy_configuration =
    Google::Ads::AdWords::v201802::BiddingStrategyConfiguration->new({
      bids => [
        Google::Ads::AdWords::v201802::CpcBid->new({
            bid => Google::Ads::AdWords::v201802::Money->new({
                microAmount => $cpc_bid_micro_amount
            }),
          }),
      ]
    });
  $ad_group->set_biddingStrategyConfiguration(
    $bidding_strategy_configuration);
}

# Create operation.
my $operation = Google::Ads::AdWords::v201802::AdGroupOperation->new({
  operand  => $ad_group,
  operator => "SET"
});

# Update ad group.
my $result = $client->AdGroupService()->mutate({operations => [$operation]});

Ruby

ad_group_srv = adwords.service(:AdGroupService, API_VERSION)

# Create an ad group with the specified ID.
ad_group = {
  :status => 'PAUSED',
  :id => ad_group_id
}

# Update the CPC bid if specified.
unless cpc_bid_micro_amount.nil?
  ad_group[:bidding_strategy_configuration] = {
    :bids => [{
      :xsi_type => 'CpcBid',
      :bid => {
        :micro_amount => cpc_bid_micro_amount
      }
    }]
  }
end

operation = {
  :operator => 'SET',
  :operand => ad_group
}

# Update ad group.
response = ad_group_srv.mutate([operation])

VB.NET

' Create an ad group with the specified ID.
Dim adGroup As New AdGroup
adGroup.id = adGroupId

' Pause the ad group.
adGroup.status = AdGroupStatus.PAUSED

' Update the CPC bid if specified.
If bidMicroAmount.HasValue() Then
  Dim biddingStrategyConfiguration As New BiddingStrategyConfiguration()
  Dim cpcBidMoney = New Money()
  cpcBidMoney.microAmount = bidMicroAmount.Value
  Dim cpcBid As New CpcBid()
  cpcBid.bid = cpcBidMoney
  biddingStrategyConfiguration.bids = New Bids() {cpcBid}
  adGroup.biddingStrategyConfiguration = biddingStrategyConfiguration
End If

' Create the operation.
Dim operation As New AdGroupOperation
operation.operator = [Operator].SET
operation.operand = adGroup

Try
  ' Update the ad group.
  Dim retVal As AdGroupReturnValue = adGroupService.mutate(
      New AdGroupOperation() {operation})

入札単価を削除する

BiddingStrategyConfiguration から入札単価を削除するには、bid フィールドを Money オブジェクトに変更して、microAmount0 に設定します。

ディスプレイ ネットワークの条件項目

ディスプレイ ネットワークで広告を掲載する場合、広告グループの入札単価設定にはさまざまな項目があります。異なる項目に複数の単価が設定されている場合は、contentBidCriterionTypeGroup フィールドを使用して絶対単価に使用する項目を指定できます。検索ネットワーク上の広告には、 常にキーワードの入札単価が適用されます。

絶対単価が指定された項目に 含まれない条件がある場合には、入札単価調整で設定することもできます。設定には bidModifierBiddableAdGroupCriterion フィールドを使用してください。

単価調整比

キャンペーンや広告グループの単位で入札単価調整を行うと、AdWords キャンペーンの入札単価をきめ細かく管理でき、特定の条件に合わせて入札単価を調整できます。

AdWords API では、キャンペーン単位の調整は CampaignCriterionServiceCampaignBidModifierService、広告グループ単位の調整は AdGroupBidModifierService を使って行います。

入札単価調整を取得する

既存の入札単価調整を取得するには、CampaignCriterionServiceAdGroupBidModifierServiceCampaignBidModifierServiceget()query() メソッドを使います。 他のサービスと同様、get() メソッドで汎用セレクタを利用できるため、応答フィールドの選択や結果セットへのフィルタ適用が可能です。

次のコードは、広告グループのすべての入札単価調整比を取得します。

Java

public static void runExample(AdWordsServicesInterface adWordsServices,
    AdWordsSession session) throws RemoteException {
  // Get the AdGroupBidModifierService.
  AdGroupBidModifierServiceInterface adGroupBidModifierService =
      adWordsServices.get(session, AdGroupBidModifierServiceInterface.class);

  // Create selector.
  Selector selector = new SelectorBuilder()
      .fields(
          AdGroupBidModifierField.CampaignId,
          AdGroupBidModifierField.AdGroupId,
          AdGroupBidModifierField.BidModifier,
          AdGroupBidModifierField.Id)
      .offset(0)
      .limit(PAGE_SIZE)
      .build();

  AdGroupBidModifierPage page = adGroupBidModifierService.get(selector);
  if (page.getEntries() != null) {
    for (AdGroupBidModifier bidModifierResult : page.getEntries()) {
      String bidModifierValue =
          bidModifierResult.getBidModifier() != null
              ? bidModifierResult.getBidModifier().toString()
              : "unset";
      System.out.printf("Campaign ID %d, AdGroup ID %d, Criterion ID %d, "
          + "has ad group level modifier: %s%n",
          bidModifierResult.getCampaignId(),
          bidModifierResult.getAdGroupId(),
          bidModifierResult.getCriterion().getId(),
          bidModifierValue);
    }
  } else {
    System.out.println("No ad group level bid modifiers were found.");
  }
}

C#

public void Run(AdWordsUser user, long campaignId) {
  using (AdGroupBidModifierService adGroupBidModifierService =
      (AdGroupBidModifierService) user.GetService(
          AdWordsService.v201802.AdGroupBidModifierService)) {

    // Get all ad group bid modifiers for the campaign.
    Selector selector = new Selector() {
      fields = new String[] {
      AdGroupBidModifier.Fields.CampaignId, AdGroupBidModifier.Fields.AdGroupId,
      AdGroupBidModifier.Fields.BidModifier, AdGroupBidModifier.Fields.BidModifierSource,
      Criterion.Fields.CriteriaType, Criterion.Fields.Id
    },
      predicates = new Predicate[] {
      Predicate.Equals(AdGroupBidModifier.Fields.CampaignId, campaignId)
    },
      paging = Paging.Default
    };

    AdGroupBidModifierPage page = new AdGroupBidModifierPage();

    try {
      do {
        // Get the campaigns.
        page = adGroupBidModifierService.get(selector);

        // Display the results.
        if (page != null && page.entries != null) {
          int i = selector.paging.startIndex;
          foreach (AdGroupBidModifier adGroupBidModifier in page.entries) {
            string bidModifier = (adGroupBidModifier.bidModifierSpecified) ?
                adGroupBidModifier.bidModifier.ToString() : "UNSET";
            Console.WriteLine("{0}) Campaign ID {1}, AdGroup ID {2}, Criterion ID {3} has " +
                "ad group level modifier: {4} and source = {5}.",
                i + 1, adGroupBidModifier.campaignId,
                adGroupBidModifier.adGroupId, adGroupBidModifier.criterion.id, bidModifier,
                adGroupBidModifier.bidModifierSource);
            i++;
          }
        }
        selector.paging.IncreaseOffset();
      } while (selector.paging.startIndex < page.totalNumEntries);
      Console.WriteLine("Number of adgroup bid modifiers found: {0}", page.totalNumEntries);
    } catch (Exception e) {
      throw new System.ApplicationException("Failed to retrieve adgroup bid modifiers.", e);
    }
  }
}

Python

def main(client):
  # Initialize appropriate service.
  ad_group_bid_modifier_service = client.GetService(
      'AdGroupBidModifierService', version='v201802')

  # Get all ad group bid modifiers for the campaign.
  selector = {
      'fields': ['CampaignId', 'AdGroupId', 'BidModifier', 'Id'],
      'paging': {
          'startIndex': '0',
          'numberResults': str(PAGE_SIZE)
      }
  }

  # Set initial values.
  offset, page = 0, {}
  more_results = True

  while more_results:
    page = ad_group_bid_modifier_service.get(selector)
    if page['entries']:
      for modifier in page['entries']:
        value = (modifier['bidModifier'] if 'bidModifier' in modifier
                 else 'unset')
        print ('Campaign ID %s, AdGroup ID %s, Criterion ID %s has ad group '
               'level modifier: %s' %
               (modifier['campaignId'], modifier['adGroupId'],
                modifier['criterion']['id'], value))

      # Increment values to request the next page.
      offset += PAGE_SIZE
      selector['paging']['startIndex'] = str(offset)
    else:
      print 'No ad group bid modifiers returned.'
    more_results = int(page['totalNumEntries']) > offset

PHP

public static function runExample(
    AdWordsServices $adWordsServices,
    AdWordsSession $session

Perl

sub get_ad_group_bid_modifier {
  my $client = shift;

  # Create selector.
  my $paging = Google::Ads::AdWords::v201802::Paging->new({
      startIndex    => 0,
      numberResults => PAGE_SIZE
  });
  my $selector = Google::Ads::AdWords::v201802::Selector->new({
      fields => ["CampaignId", "AdGroupId", "BidModifier", "Id"],
      paging => $paging
  });

  # Paginate through results.
  Google::Ads::AdWords::Utilities::PageProcessor->new({
      client   => $client,
      service  => $client->AdGroupBidModifierService(),
      selector => $selector
    }
    )->process_entries(
    sub {
      my ($modifier) = @_;
      my $modifier_value = $modifier->get_bidModifier() || "unset";
      printf "Campaign ID %s, AdGroup ID %s, Criterion ID %s has ad group " .
        "level modifier: %s\n", $modifier->get_campaignId(),
        $modifier->get_adGroupId(), $modifier->get_criterion()->get_id(),
        $modifier_value;
    });

  return 1;
}

Ruby

def get_ad_group_bid_modifiers(campaign_id)
  # AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
  # when called without parameters.
  adwords = AdwordsApi::Api.new

  # To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
  # the configuration file or provide your own logger:
  # adwords.logger = Logger.new('adwords_xml.log')

  bid_modifier_srv = adwords.service(:AdGroupBidModifierService, API_VERSION)

  # Get all ad group bid modifiers for the campaign.
  selector = {
    :fields => ['CampaignId', 'AdGroupId', 'Id', 'BidModifier'],
    :predicates => [
      {:field => 'CampaignId', :operator => 'EQUALS', :values => [campaign_id]}
    ],
    :paging => {
      :start_index => 0,
      :number_results => PAGE_SIZE
    }
  }

  # Set initial values.
  offset, page = 0, {}

  begin
    page = bid_modifier_srv.get(selector)
    if page[:entries]
      page[:entries].each do |modifier|
        value = modifier[:bid_modifier] || 'unset'
        puts ('Campaign ID %d, AdGroup ID %d, Criterion ID %d has ad group ' +
           'level modifier: %s') %
           [modifier[:campaign_id], modifier[:ad_group_id],
            modifier[:criterion][:id], value]
      end
      # Increment values to request the next page.
      offset += PAGE_SIZE
      selector[:paging][:start_index] = offset
    else
      puts 'No ad group level bid overrides returned.'
    end
  end while page[:total_num_entries] > offset
end

VB.NET

Public Sub Run(ByVal user As AdWordsUser, ByVal campaignId As Long)
  ' Get the AdGroupBidModifierService.
  Using adGroupBidModifierService As AdGroupBidModifierService = CType(user.GetService(
      AdWordsService.v201802.AdGroupBidModifierService), AdGroupBidModifierService)

    ' Get all ad group bid modifiers for the campaign.
    Dim selector As New Selector()
    selector.fields = New String() {
      AdGroupBidModifier.Fields.CampaignId, AdGroupBidModifier.Fields.AdGroupId,
      AdGroupBidModifier.Fields.BidModifier, AdGroupBidModifier.Fields.BidModifierSource,
      Criterion.Fields.CriteriaType, Criterion.Fields.Id
    }

    Dim predicate As New Predicate()
    predicate.field = "CampaignId"
    predicate.[operator] = PredicateOperator.EQUALS
    predicate.values = New String() {campaignId.ToString()}
    selector.predicates = New Predicate() {
      Predicate.Equals(AdGroupBidModifier.Fields.CampaignId, campaignId)
    }
    selector.paging = Paging.Default

    Dim page As New AdGroupBidModifierPage()

    Try
      Do
        ' Get the ad group bids.
        page = adGroupBidModifierService.get(selector)

        ' Display the results.
        If (Not page Is Nothing) AndAlso (Not page.entries Is Nothing) Then
          Dim i As Integer = selector.paging.startIndex
          For Each adGroupBidModifier As AdGroupBidModifier In page.entries
            Dim bidModifier As String = ""
            If adGroupBidModifier.bidModifierSpecified Then
              bidModifier = adGroupBidModifier.bidModifier.ToString()
            Else
              bidModifier = "UNSET"
            End If
            Console.WriteLine("{0}) Campaign ID {1}, AdGroup ID {2}, Criterion ID {3} has " &
              "ad group level modifier: {4}, source = {5}.",
              i + 1, adGroupBidModifier.campaignId,
              adGroupBidModifier.adGroupId, adGroupBidModifier.criterion.id,
              bidModifier, adGroupBidModifier.bidModifierSource)
            i = i + 1
          Next
        End If
        selector.paging.IncreaseOffset()
      Loop While selector.paging.startIndex < page.totalNumEntries
      Console.WriteLine("Number of adgroup bid modifiers found: {0}", page.totalNumEntries)
    Catch e As Exception
      Throw New System.ApplicationException("Failed to retrieve adgroup bid modifiers.", e)
    End Try
  End Using

入札単価調整を追加、更新、削除する

入札単価調整を追加または修正するには、CampaignCriterionServiceAdGroupBidModifierServiceCampaignBidModifierServicemutate() メソッドを使用します。

  • 新しい単価調整比を追加するには ADD 演算子を使用します。
  • 既存の入札単価の上書きを新しい値に変更するには SET 演算子を使用します。
  • 単価調整比のオーバーライドを削除するには REMOVE 演算子を使用します。
  • 既存の CampaignBidModifier や AdGroupBidModifier、AdGroupCriterion で ADD オペレーションを実行すると、そのオペレーションは SET ように扱われます。

次の例では、広告グループ単位のモバイルの入札単価調整を新しく追加する方法を示します。

Java

public static void runExample(AdWordsServicesInterface adWordsServices, AdWordsSession session,
    Long adGroupId) throws RemoteException {
  // Get the AdGroupBidModifierService.
  AdGroupBidModifierServiceInterface adGroupBidModifierService =
      adWordsServices.get(session, AdGroupBidModifierServiceInterface.class);

  // Create mobile platform. The ID can be found in the documentation.
  // https://developers.google.com/adwords/api/docs/appendix/platforms
  Platform mobile = new Platform();
  mobile.setId(30001L);

  AdGroupBidModifier adGroupBidModifier = new AdGroupBidModifier();
  adGroupBidModifier.setAdGroupId(adGroupId);
  adGroupBidModifier.setBidModifier(BID_MODIFIER);
  adGroupBidModifier.setCriterion(mobile);

  // Create ADD operation.
  AdGroupBidModifierOperation operation = new AdGroupBidModifierOperation();
  operation.setOperand(adGroupBidModifier);
  // Use 'ADD' to add a new modifier and 'SET' to update an existing one. A
  // modifier can be removed with the 'REMOVE' operator.
  operation.setOperator(Operator.ADD);

  // Update ad group bid modifier.
  AdGroupBidModifierReturnValue result =
      adGroupBidModifierService.mutate(new AdGroupBidModifierOperation[] {operation});
  for (AdGroupBidModifier bidModifierResult : result.getValue()) {
    System.out.printf(
        "Campaign ID %d, ad group ID %d was updated with ad group level modifier: %.4f%n",
        bidModifierResult.getCampaignId(), bidModifierResult.getAdGroupId(),
        bidModifierResult.getBidModifier());
  }
}

C#

public void Run(AdWordsUser user, long adGroupId, double bidModifier) {
  using (AdGroupBidModifierService adGroupBidModifierService =
      (AdGroupBidModifierService) user.GetService(
          AdWordsService.v201802.AdGroupBidModifierService)) {

    // Mobile criterion ID.
    long criterionId = 30001;

    // Create the adgroup bid modifier.
    AdGroupBidModifier adGroupBidModifier = new AdGroupBidModifier();
    adGroupBidModifier.bidModifier = bidModifier;
    adGroupBidModifier.adGroupId = adGroupId;

    Platform platform = new Platform();
    platform.id = criterionId;

    adGroupBidModifier.criterion = platform;

    AdGroupBidModifierOperation operation = new AdGroupBidModifierOperation();
    operation.@operator = Operator.ADD;
    operation.operand = adGroupBidModifier;

    try {
      // Add ad group level mobile bid modifier.
      AdGroupBidModifierReturnValue retval = adGroupBidModifierService.mutate(
          new AdGroupBidModifierOperation[] { operation });

      // Display the results.
      if (retval != null && retval.value != null && retval.value.Length > 0) {
        AdGroupBidModifier newBidModifier = retval.value[0];
        Console.WriteLine("AdGroup ID {0}, Criterion ID {1} was updated with ad group level " +
            "modifier: {2}", newBidModifier.adGroupId, newBidModifier.criterion.id,
            newBidModifier.bidModifier);
      } else {
        Console.WriteLine("No bid modifiers were added to the adgroup.");
      }
    } catch (Exception e) {
      throw new System.ApplicationException("Failed to add bid modifiers to adgroup.", e);
    }
  }
}

Python

def main(client, ad_group_id, bid_modifier):
  # Initialize appropriate service.
  ad_group_bid_modifier_service = client.GetService(
      'AdGroupBidModifierService', version='v201802')

  # Mobile criterion ID.
  criterion_id = '30001'

  # Prepare to add an ad group level override.
  operation = {
      # Use 'ADD' to add a new modifier and 'SET' to update an existing one. A
      # modifier can be removed with the 'REMOVE' operator.
      'operator': 'ADD',
      'operand': {
          'adGroupId': ad_group_id,
          'criterion': {
              'xsi_type': 'Platform',
              'id': criterion_id
          },
          'bidModifier': bid_modifier
      }
  }

  # Add ad group level mobile bid modifier.
  response = ad_group_bid_modifier_service.mutate([operation])
  if response and response['value']:
    modifier = response['value'][0]
    value = modifier['bidModifier'] if 'bidModifier' in modifier else 'unset'
    print ('Campaign ID %s, AdGroup ID %s, Criterion ID %s was updated with '
           'ad group level modifier: %s' %
           (modifier['campaignId'], modifier['adGroupId'],
            modifier['criterion']['id'], value))
  else:
    print 'No modifiers were added.'

PHP

public static function runExample(
    AdWordsServices $adWordsServices,
    AdWordsSession $session,
    $adGroupId,
    $bidModifier

Perl

sub add_ad_group_bid_modifier {
  my $client      = shift;
  my $ad_group_id = shift;

  # Create mobile platform. The ID can be found in the documentation.
  # https://developers.google.com/adwords/api/docs/appendix/platforms
  my $mobile = Google::Ads::AdWords::v201802::Platform->new({id => 30001});

  # Create the bid modifier.
  my $modifier = Google::Ads::AdWords::v201802::AdGroupBidModifier->new({
      adGroupId   => $ad_group_id,
      criterion   => $mobile,
      bidModifier => BID_MODIFIER
  });

  # Create ADD operation.
  my $operation =
    Google::Ads::AdWords::v201802::AdGroupBidModifierOperation->new({
      operator => "ADD",
      operand  => $modifier
    });

  # Update campaign criteria.
  my $result =
    $client->AdGroupBidModifierService()->mutate({operations => [$operation]});

  # Display campaign criteria.
  if ($result->get_value()) {
    foreach my $modifier (@{$result->get_value()}) {
      printf "Ad Group ID '%s', criterion ID '%s', " .
        "and type '%s' was modified with bid %.2f.\n",
        $modifier->get_adGroupId(),
        $modifier->get_criterion()->get_id(),
        $modifier->get_criterion()->get_type(),
        $modifier->get_bidModifier();
    }
  } else {
    print "No ad group bid modifier was added.\n";
  }

  return 1;
}

Ruby

def add_ad_group_bid_modifier(ad_group_id, bid_modifier)
  # AdwordsApi::Api will read a config file from ENV['HOME']/adwords_api.yml
  # when called without parameters.
  adwords = AdwordsApi::Api.new

  # To enable logging of SOAP requests, set the log_level value to 'DEBUG' in
  # the configuration file or provide your own logger:
  # adwords.logger = Logger.new('adwords_xml.log')

  bid_modifier_srv = adwords.service(:AdGroupBidModifierService, API_VERSION)

  # Mobile criterion ID.
  criterion_id = 30001

  # Prepare to add an ad group level override.
  operation = {
    # Use 'ADD' to add a new modifier and 'SET' to update an existing one. A
    # modifier can be removed with the 'REMOVE' operator.
    :operator => 'ADD',
    :operand => {
      :ad_group_id => ad_group_id,
      :criterion => {
        :xsi_type => 'Platform',
        :id => criterion_id
      },
      :bid_modifier => bid_modifier
    }
  }

  # Add ad group level mobile bid modifier.
  response = bid_modifier_srv.mutate([operation])
  if response and response[:value]
    modifier = response[:value].first
    value = modifier[:bid_modifier] || 'unset'
    puts ('Campaign ID %d, AdGroup ID %d, Criterion ID %d was updated with ' +
        'ad group level modifier: %s') %
           [modifier[:campaign_id], modifier[:ad_group_id],
            modifier[:criterion][:id], value]
  else
    puts 'No modifiers were added.'
  end
end

VB.NET

Public Sub Run(ByVal user As AdWordsUser, ByVal adGroupId As Long, ByVal bidModifier As Double)
  Using adGroupBidModifierService As AdGroupBidModifierService = CType(user.GetService(
      AdWordsService.v201802.AdGroupBidModifierService),
          AdGroupBidModifierService)

    ' Mobile criterion ID.
    Dim criterionId As Long = 30001

    ' Create the adgroup bid modifier.
    Dim adGroupBidModifier As New AdGroupBidModifier()
    adGroupBidModifier.bidModifier = bidModifier
    adGroupBidModifier.adGroupId = adGroupId

    Dim platform As New Platform()
    platform.id = criterionId

    adGroupBidModifier.criterion = platform

    Dim operation As New AdGroupBidModifierOperation()
    operation.operator = [Operator].ADD
    operation.operand = adGroupBidModifier

    Try
      ' Add ad group level mobile bid modifier.
      Dim retval As AdGroupBidModifierReturnValue = adGroupBidModifierService.mutate(
        New AdGroupBidModifierOperation() {operation})

      ' Display the results.
      If Not retval Is Nothing AndAlso Not retval.value Is Nothing AndAlso
        retval.value.Length > 0 Then
        Dim newBidModifier As AdGroupBidModifier = retval.value(0)
        Console.WriteLine("AdGroup ID {0}, Criterion ID {1} was updated with ad group " &
          "level modifier: {2}", newBidModifier.adGroupId, newBidModifier.criterion.id,
          newBidModifier.bidModifier)
      Else
        Console.WriteLine("No bid modifiers were added to the adgroup.")
      End If
    Catch e As Exception
      Throw New System.ApplicationException("Failed to add bid modifiers to adgroup.", e)
    End Try
  End Using

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

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