Création des groupes d'éléments de règle

Cet exemple crée deux groupes d'éléments de règle.

Créer le premier rule_item_group

Commencez par créer le premier rule_item_group, qui se compose de deux champs rule_item, ou objets UserListRuleItemInfo:

  1. Utilisateurs ayant consulté la page de paiement.
  2. Utilisateurs ayant ajouté plusieurs articles à leur panier

Le premier élément de règle utilise le paramètre ecomm_pagetype, qui contient des valeurs de chaîne. Vous devez donc d'abord créer un string_rule_item.

UserListRuleItemInfo checkoutRule =
    UserListRuleItemInfo.newBuilder()
        // The rule variable name must match a corresponding key name fired from a pixel.
        // To learn more about setting up remarketing tags, visit
        // https://support.google.com/google-ads/answer/2476688.
        // To learn more about remarketing events and parameters, visit
        // https://support.google.com/google-ads/answer/7305793.
        .setName("ecomm_pagetype")
        .setStringRuleItem(
            UserListStringRuleItemInfo.newBuilder()
                .setOperator(UserListStringRuleItemOperator.EQUALS)
                .setValue("checkout")
                .build())
        .build();
      
UserListRuleItemInfo checkoutRule = new UserListRuleItemInfo
{
    // The rule variable name must match a corresponding key name fired from a pixel.
    // To learn more about setting up remarketing tags, visit
    // https://support.google.com/google-ads/answer/2476688.
    // To learn more about remarketing events and parameters, visit
    // https://support.google.com/google-ads/answer/7305793.
    Name = "ecomm_pagetype",
    StringRuleItem = new UserListStringRuleItemInfo
    {
        Operator = UserListStringRuleItemOperator.Equals,
        Value = "checkout"
    }
};
      
$checkoutRule = new UserListRuleItemInfo([
    // The rule variable name must match a corresponding key name fired from a pixel.
    // To learn more about setting up remarketing tags, visit
    // https://support.google.com/google-ads/answer/2476688.
    // To learn more about remarketing events and parameters, visit
    // https://support.google.com/google-ads/answer/7305793.
    'name' => 'ecomm_pagetype',
    'string_rule_item' => new UserListStringRuleItemInfo([
        'operator' => UserListStringRuleItemOperator::EQUALS,
        'value' => 'checkout'
    ])
]);
      
checkout_rule = client.get_type("UserListRuleItemInfo")

# The rule variable name must match a corresponding key name fired from a
# pixel. To learn more about setting up remarketing tags, visit:
# https://support.google.com/google-ads/answer/2476688.
#
# To learn more about remarketing events and parameters, visit:
# https://support.google.com/google-ads/answer/7305793.
checkout_rule.name = "ecomm_pagetype"
checkout_string_rule_item = checkout_rule.string_rule_item
checkout_string_rule_item.operator = (
    client.enums.UserListStringRuleItemOperatorEnum.EQUALS
)
checkout_string_rule_item.value = "checkout"
      
checkout_rule = client.resource.user_list_rule_item_info do |rule|
  # The rule variable name must match a corresponding key name fired
  # from a pixel.
  # To learn more about setting up remarketing tags, visit
  # https://support.google.com/google-ads/answer/2476688.
  # To learn more about remarketing events and parameters, visit
  # https://support.google.com/google-ads/answer/7305793.
  rule.name = "ecomm_pagetype"
  rule.string_rule_item = client.resource.user_list_string_rule_item_info do |sr|
    sr.operator = :EQUALS
    sr.value = "checkout"
  end
end
      
my $checkout_rule =
  Google::Ads::GoogleAds::V19::Common::UserListRuleItemInfo->new({
    # The rule variable name must match a corresponding key name fired from a
    # pixel. To learn more about setting up remarketing tags, visit
    # https://support.google.com/google-ads/answer/2476688.
    # To learn more about remarketing events and parameters, visit
    # https://support.google.com/google-ads/answer/7305793.
    name           => "ecomm_pagetype",
    stringRuleItem =>
      Google::Ads::GoogleAds::V19::Common::UserListStringRuleItemInfo->new({
        operator => EQUALS,
        value    => "checkout"
      })});
      

Le deuxième élément de règle utilise le paramètre cartsize, qui comporte des valeurs numériques. Vous avez donc besoin d'un number_rule_item.

UserListRuleItemInfo cartSizeRule =
    UserListRuleItemInfo.newBuilder()
        // The rule variable name must match a corresponding key name fired from a pixel.
        .setName("cart_size")
        .setNumberRuleItem(
            UserListNumberRuleItemInfo.newBuilder()
                .setOperator(UserListNumberRuleItemOperator.GREATER_THAN)
                .setValue(1.0)
                .build())
        .build();
      
UserListRuleItemInfo cartSizeRule = new UserListRuleItemInfo
{
    // The rule variable name must match a corresponding key name fired from a pixel.
    Name = "cart_size",
    NumberRuleItem = new UserListNumberRuleItemInfo
    {
        Operator = UserListNumberRuleItemOperator.GreaterThan,
        Value = 1.0
    }
};
      
$cartSizeRule = new UserListRuleItemInfo([
    // The rule variable name must match a corresponding key name fired from a pixel.
    'name' => 'cart_size',
    'number_rule_item' => new UserListNumberRuleItemInfo([
        'operator' => UserListNumberRuleItemOperator::GREATER_THAN,
        'value' => 1.0
    ])
]);
      
cart_size_rule = client.get_type("UserListRuleItemInfo")
# The rule variable name must match a corresponding key name fired from a
# pixel.
cart_size_rule.name = "cart_size"
cart_size_number_rule_item = cart_size_rule.number_rule_item
cart_size_number_rule_item.operator = (
    client.enums.UserListNumberRuleItemOperatorEnum.GREATER_THAN
)
cart_size_number_rule_item.value = 1.0
      
cart_size_rule = client.resource.user_list_rule_item_info do |rule|
  # The rule variable name must match a corresponding key name fired
  # from a pixel.
  rule.name = "cart_size"
  rule.number_rule_item = client.resource.user_list_number_rule_item_info do |nr|
    nr.operator = :GREATER_THAN
    nr.value = 1.0
  end
end
      
my $cart_size_rule =
  Google::Ads::GoogleAds::V19::Common::UserListRuleItemInfo->new({
    # The rule variable name must match a corresponding key name fired from a
    # pixel.
    name           => "cart_size",
    numberRuleItem =>
      Google::Ads::GoogleAds::V19::Common::UserListNumberRuleItemInfo->new({
        # Available UserListNumberRuleItemOperators can be found at
        # https://developers.google.com/google-ads/api/reference/rpc/latest/UserListNumberRuleItemOperatorEnum.UserListNumberRuleItemOperator
        operator => GREATER_THAN,
        value    => 1.0
      })});
      

Combinez ensuite les deux éléments de règle dans un objet UserListRuleItemGroupInfo. Par défaut, lorsque des articles sont combinés dans un groupe d'articles, Google Ads AND leurs règles. Pour en savoir plus, consultez Créer la liste des utilisateurs.

UserListRuleItemGroupInfo checkoutAndCartSizeRuleGroup =
    UserListRuleItemGroupInfo.newBuilder()
        .addAllRuleItems(ImmutableList.of(checkoutRule, cartSizeRule))
        .build();
      
UserListRuleItemGroupInfo checkoutAndCartSizeRuleGroup =
    new UserListRuleItemGroupInfo();
checkoutAndCartSizeRuleGroup.RuleItems.Add(checkoutRule);
checkoutAndCartSizeRuleGroup.RuleItems.Add(cartSizeRule);
      
$checkoutAndCartSizeRuleGroup = new UserListRuleItemGroupInfo([
    'rule_items' => [$checkoutRule, $cartSizeRule]
]);
      
checkout_and_cart_size_rule_group.rule_items.extend(
    [
        checkout_rule,
        cart_size_rule,
    ]
)
      
  checkout_and_cart_size_rule_group = client.resource.user_list_rule_item_group_info do |g|
    g.rule_items += [checkout_rule, cart_size_rule]
  end

  # Create the RuleItem for checkout start date.
  # The tags and keys used below must have been in place in the past for the
  # date range specified in the rules.
  start_date_rule = client.resource.user_list_rule_item_info do |rule|
    # The rule variable name must match a corresponding key name fired
    # from a pixel.
    rule.name = "checkoutdate"
    rule.date_rule_item = client.resource.user_list_date_rule_item_info do |dr|
      dr.operator = :AFTER
      dr.value = "20191031"
    end
  end

  # Create the RuleItem for checkout end date.
  end_date_rule = client.resource.user_list_rule_item_info do |rule|
    # The rule variable name must match a corresponding key name fired
    # from a pixel.
    rule.name = "checkoutdate"
    rule.date_rule_item = client.resource.user_list_date_rule_item_info do |dr|
      dr.operator = :BEFORE
      dr.value = "20200101"
    end
  end

  # Creates a rule group targeting users who checked out between
  # November and December by using the start and end date rules.
  # Combining the two rule items into a user_list_rule_item_group_info
  # object causes Google Ads to AND their rules together.
  # To instead OR the rules together, each rule should be placed in its
  # own rule item group.
  checkout_date_rule_group = client.resource.user_list_rule_item_group_info do |g|
    g.rule_items += [start_date_rule, end_date_rule]
  end

  # Creates the user list operation.
  operation = client.operation.create_resource.user_list do |ul|
    ul.name = "My expression rule user list ##{(Time.new.to_f * 1000).to_i}"
    ul.description = "Users who checked out in November or December OR visited " \
      "the checkout page with more than one item in their cart"
    ul.membership_status = :OPEN
    ul.membership_life_span = 90
    ul.rule_based_user_list = client.resource.rule_based_user_list_info do |r|
      # Optional: To include past users in the user list, set the
      # prepopulation_status to REQUESTED.
      r.prepopulation_status = :REQUESTED
      # Create a flexible_rule_user_list object, or a flexible rule representation
      # of visitors with one or multiple actions. FlexibleRuleUserListInfo wraps
      # UserListRuleInfo in a FlexibleRuleOperandInfo object that represents which
      # user lists to include or exclude.
      r.flexible_rule_user_list = client.resource.flexible_rule_user_list_info do |frul|
        frul.inclusive_rule_operator = :AND
        frul.inclusive_operands << client.resource.flexible_rule_operand_info do |froi|
          froi.rule = client.resource.user_list_rule_info do |info|
            info.rule_item_groups += [checkout_date_rule_group, checkout_and_cart_size_rule_group]
          end
          # Optionally include a lookback window for this rule, in days.
          froi.lookback_window_days = 7
        end
      end
    end
  end

  # Issues a muate request to create the user list.
  response = client.service.user_list.mutate_user_lists(
    customer_id: customer_id,
    operations: [operation],
  )
  puts "Created user list with resource name '#{response.results.first.resource_name}'"
end

if __FILE__ == $0
  options = {}

  # Running the example with -h will print the command line usage.
  OptionParser.new do |opts|
    opts.banner = sprintf('Usage: %s [options]', File.basename(__FILE__))

    opts.separator ''
    opts.separator 'Options:'

    opts.on('-C', '--customer-id CUSTOMER-ID', String, 'Customer ID') do |v|
      options[:customer_id] = v
    end

    opts.separator ''
    opts.separator 'Help:'

    opts.on_tail('-h', '--help', 'Show this message') do
      puts opts
      exit
    end
  end.parse!

  begin
    set_up_advanced_remarketing(options.fetch(:customer_id).tr("-", ""))
  rescue Google::Ads::GoogleAds::Errors::GoogleAdsError => e
    e.failure.errors.each do |error|
      STDERR.printf("Error with message: %s\n", error.message)
      if error.location
        error.location.field_path_elements.each do |field_path_element|
          STDERR.printf("\tOn field: %s\n", field_path_element.field_name)
        end
      end
      error.error_code.to_h.each do |k, v|
        next if v == :UNSPECIFIED
        STDERR.printf("\tType: %s\n\tCode: %s\n", k, v)
      end
    end
    raise
  end
end

      
my $checkout_and_cart_size_rule_group =
  Google::Ads::GoogleAds::V19::Common::UserListRuleItemGroupInfo->new(
  {ruleItems => [$checkout_rule, $cart_size_rule]});
      

Créez le deuxième groupe rule_item_group.

Le deuxième rule_item_group se compose également de deux champs rule_item, ou d'objets UserListRuleItemInfo:

  1. Utilisateurs ayant effectué un achat après le 31 octobre.
  2. Utilisateurs ayant effectué un achat avant le 1er janvier

Ces deux éléments de règle utilisent le paramètre checkoutdate, qui comporte des valeurs de date. Vous allez donc renseigner les champs date_rule_item avec des objets UserListDateRuleItemInfo.

Commencez par la date de début:

UserListRuleItemInfo startDateRule =
    UserListRuleItemInfo.newBuilder()
        // The rule variable name must match a corresponding key name fired from a pixel.
        .setName("checkoutdate")
        .setDateRuleItem(
            UserListDateRuleItemInfo.newBuilder()
                // Available UserListDateRuleItemOperators can be found at
                // https://developers.google.com/google-ads/api/reference/rpc/latest/UserListDateRuleItemOperatorEnum.UserListDateRuleItemOperator
                .setOperator(UserListDateRuleItemOperator.AFTER)
                .setValue("20191031")
                .build())
        .build();
      
UserListRuleItemInfo startDateRule = new UserListRuleItemInfo
{
    // The rule variable name must match a corresponding key name fired from a pixel.
    Name = "checkoutdate",
    DateRuleItem = new UserListDateRuleItemInfo
    {
        // Available UserListDateRuleItemOperators can be found at
        // https://developers.google.com/google-ads/api/reference/rpc/latest/UserListDateRuleItemOperatorEnum.UserListDateRuleItemOperator
        Operator = UserListDateRuleItemOperator.After,
        Value = "20191031"
    }
};
      
$startDateRule = new UserListRuleItemInfo([
    // The rule variable name must match a corresponding key name fired from a pixel.
    'name' => 'checkoutdate',
    'date_rule_item' => new UserListDateRuleItemInfo([
        // Available UserListDateRuleItemOperators can be found at
        // https://developers.google.com/google-ads/api/reference/rpc/latest/UserListDateRuleItemOperatorEnum.UserListDateRuleItemOperator
        'operator' => UserListDateRuleItemOperator::AFTER,
        'value' => '20191031'
    ])
]);
      
start_date_rule = client.get_type("UserListRuleItemInfo")
start_date_rule.name = "checkoutdate"
start_date_rule_item = start_date_rule.date_rule_item
# Available UserListDateRuleItemOperators can be found at:
# https://developers.google.com/google-ads/api/reference/rpc/latest/UserListDateRuleItemOperatorEnum.UserListDateRuleItemOperator
user_list_data_rule_item_operator_enum = (
    client.enums.UserListDateRuleItemOperatorEnum
)
start_date_rule_item.operator = user_list_data_rule_item_operator_enum.AFTER
start_date_rule_item.value = "20191031"
      
start_date_rule = client.resource.user_list_rule_item_info do |rule|
  # The rule variable name must match a corresponding key name fired
  # from a pixel.
  rule.name = "checkoutdate"
  rule.date_rule_item = client.resource.user_list_date_rule_item_info do |dr|
    dr.operator = :AFTER
    dr.value = "20191031"
  end
end
      
my $start_date_rule =
  Google::Ads::GoogleAds::V19::Common::UserListRuleItemInfo->new({
    # The rule variable name must match a corresponding key name fired from a
    # pixel.
    name         => "checkoutdate",
    dateRuleItem =>
      Google::Ads::GoogleAds::V19::Common::UserListDateRuleItemInfo->new({
        # Available UserListDateRuleItemOperators can be found at
        # https://developers.google.com/google-ads/api/reference/rpc/latest/UserListDateRuleItemOperatorEnum.UserListDateRuleItemOperator
        operator => AFTER,
        value    => "20191031"
      })});
      

Puis la date de fin:

UserListRuleItemInfo endDateRule =
    UserListRuleItemInfo.newBuilder()
        // The rule variable name must match a corresponding key name fired from a pixel.
        .setName("checkoutdate")
        .setDateRuleItem(
            UserListDateRuleItemInfo.newBuilder()
                .setOperator(UserListDateRuleItemOperator.BEFORE)
                .setValue("20200101")
                .build())
        .build();
      
UserListRuleItemInfo endDateRule = new UserListRuleItemInfo
{
    // The rule variable name must match a corresponding key name fired from a pixel.
    Name = "checkoutdate",
    DateRuleItem = new UserListDateRuleItemInfo
    {
        Operator = UserListDateRuleItemOperator.Before,
        Value = "20200101"
    }
};
      
$endDateRule = new UserListRuleItemInfo([
    // The rule variable name must match a corresponding key name fired from a pixel.
    'name' => 'checkoutdate',
    'date_rule_item' => new UserListDateRuleItemInfo([
        'operator' => UserListDateRuleItemOperator::BEFORE,
        'value' => '20200101'
    ])
]);
      
end_date_rule = client.get_type("UserListRuleItemInfo")
end_date_rule.name = "checkoutdate"
end_date_rule_item = end_date_rule.date_rule_item
end_date_rule_item.operator = user_list_data_rule_item_operator_enum.BEFORE
end_date_rule_item.value = "20200101"
      
end_date_rule = client.resource.user_list_rule_item_info do |rule|
  # The rule variable name must match a corresponding key name fired
  # from a pixel.
  rule.name = "checkoutdate"
  rule.date_rule_item = client.resource.user_list_date_rule_item_info do |dr|
    dr.operator = :BEFORE
    dr.value = "20200101"
  end
end
      
my $end_date_rule =
  Google::Ads::GoogleAds::V19::Common::UserListRuleItemInfo->new({
    # The rule variable name must match a corresponding key name fired from a
    # pixel.
    name         => "checkoutdate",
    dateRuleItem =>
      Google::Ads::GoogleAds::V19::Common::UserListDateRuleItemInfo->new({
        operator => BEFORE,
        value    => "20200101"
      })});
      

Comme pour le premier groupe d'éléments de règle, combinez ces deux champs rule_item dans un objet UserListRuleItemGroupInfo pour les AND ensemble.

UserListRuleItemGroupInfo checkoutDateRuleGroup =
    UserListRuleItemGroupInfo.newBuilder()
        .addAllRuleItems(ImmutableList.of(startDateRule, endDateRule))
        .build();
      
UserListRuleItemGroupInfo checkoutDateRuleGroup = new UserListRuleItemGroupInfo();
checkoutDateRuleGroup.RuleItems.Add(startDateRule);
checkoutDateRuleGroup.RuleItems.Add(endDateRule);
      
$checkoutDateRuleGroup = new UserListRuleItemGroupInfo([
    'rule_items' => [$startDateRule, $endDateRule]
]);
      
checkout_date_rule_group.rule_items.extend(
    [
        start_date_rule,
        end_date_rule,
    ]
)
      
checkout_date_rule_group = client.resource.user_list_rule_item_group_info do |g|
  g.rule_items += [start_date_rule, end_date_rule]
end
      
my $checkout_date_rule_group =
  Google::Ads::GoogleAds::V19::Common::UserListRuleItemGroupInfo->new(
  {ruleItems => [$start_date_rule, $end_date_rule]});