이 가이드에서는 샘플 시나리오에 설명된 두 가지 규칙 항목 그룹을 만드는 방법을 보여줍니다.
첫 번째 규칙 항목 그룹 만들기
먼저 두 개의 rule_item 필드 (UserListRuleItemInfo 객체)로 구성된 첫 번째 rule_item_group를 만듭니다.
- 결제 페이지를 방문한 사용자입니다.
- 장바구니에 상품이 2개 이상 있는 사용자입니다.
첫 번째 규칙 항목은 EQUALS 연산자와 함께 ecomm_pagetype 문자열 매개변수를 사용하므로 먼저 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();
C#
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" } };
PHP
$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' ] ) ] );
Python
checkout_rule: UserListRuleItemInfo = 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: UserListStringRuleItemInfo = ( checkout_rule.string_rule_item ) checkout_string_rule_item.operator = ( client.enums.UserListStringRuleItemOperatorEnum.EQUALS ) checkout_string_rule_item.value = "checkout"
Ruby
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
Perl
my $checkout_rule = Google::Ads::GoogleAds::V25::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::V25::Common::UserListStringRuleItemInfo->new({ operator => EQUALS, value => "checkout" })});
curl
두 번째 규칙 항목은 GREATER_THAN 연산자와 함께 cart_size 숫자 매개변수를 사용하므로 다음으로 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();
C#
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 } };
PHP
$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 ] ) ] );
Python
cart_size_rule: UserListRuleItemInfo = 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: UserListNumberRuleItemInfo = ( 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
Ruby
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
Perl
my $cart_size_rule = Google::Ads::GoogleAds::V25::Common::UserListRuleItemInfo->new({ # The rule variable name must match a corresponding key name fired from a # pixel. name => "cart_size", numberRuleItem => Google::Ads::GoogleAds::V25::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 })});
curl
그런 다음 두 규칙 항목을 UserListRuleItemGroupInfo 객체로 결합합니다. 기본적으로 항목이 규칙 항목 그룹으로 결합되면 Google Ads에서 AND 작업을 사용하여 규칙을 결합합니다. 자세한 내용은 사용자 목록 만들기를 참고하세요.
자바
UserListRuleItemGroupInfo checkoutAndCartSizeRuleGroup = UserListRuleItemGroupInfo.newBuilder() .addAllRuleItems(ImmutableList.of(checkoutRule, cartSizeRule)) .build();
C#
UserListRuleItemGroupInfo checkoutAndCartSizeRuleGroup = new UserListRuleItemGroupInfo(); checkoutAndCartSizeRuleGroup.RuleItems.Add(checkoutRule); checkoutAndCartSizeRuleGroup.RuleItems.Add(cartSizeRule);
PHP
$checkoutAndCartSizeRuleGroup = new UserListRuleItemGroupInfo( [ 'rule_items' => [$checkoutRule, $cartSizeRule] ] );
Python
checkout_and_cart_size_rule_group.rule_items.extend( [ checkout_rule, cart_size_rule, ] )
Ruby
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
Perl
my $checkout_and_cart_size_rule_group = Google::Ads::GoogleAds::V25::Common::UserListRuleItemGroupInfo->new( {ruleItems => [$checkout_rule, $cart_size_rule]});
curl
두 번째 규칙 상품 그룹 만들기
두 번째 rule_item_group도 두 개의 rule_item 필드(UserListRuleItemInfo 객체)로 구성됩니다.
- 10월 31일 이후에 체크아웃한 사용자 (
AFTER연산자) - 1월 1일 전에 체크아웃한 사용자 (
BEFORE연산자)
이 두 규칙 항목은 모두 날짜 값이 있는 checkoutdate 매개변수를 사용합니다. date_rule_item 필드를 YYYYMMDD로 형식이 지정된 UserListDateRuleItemInfo 객체로 채웁니다 (계정의 시간대로 평가됨).
먼저 시작일 ("20191031")을 정의합니다.
자바
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();
C#
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" } };
PHP
$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' ] ) ] );
Python
start_date_rule: UserListRuleItemInfo = client.get_type( "UserListRuleItemInfo" ) start_date_rule.name = "checkoutdate" start_date_rule_item: UserListDateRuleItemInfo = ( 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: UserListDateRuleItemOperatorEnum = ( client.enums.UserListDateRuleItemOperatorEnum ) start_date_rule_item.operator = user_list_data_rule_item_operator_enum.AFTER start_date_rule_item.value = "20191031"
Ruby
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
Perl
my $start_date_rule = Google::Ads::GoogleAds::V25::Common::UserListRuleItemInfo->new({ # The rule variable name must match a corresponding key name fired from a # pixel. name => "checkoutdate", dateRuleItem => Google::Ads::GoogleAds::V25::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" })});
curl
그런 다음 종료일 ("20200101")을 정의합니다.
자바
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();
C#
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" } };
PHP
$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' ] ) ] );
Python
end_date_rule: UserListRuleItemInfo = client.get_type( "UserListRuleItemInfo" ) end_date_rule.name = "checkoutdate" end_date_rule_item: UserListDateRuleItemInfo = 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"
Ruby
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
Perl
my $end_date_rule = Google::Ads::GoogleAds::V25::Common::UserListRuleItemInfo->new({ # The rule variable name must match a corresponding key name fired from a # pixel. name => "checkoutdate", dateRuleItem => Google::Ads::GoogleAds::V25::Common::UserListDateRuleItemInfo->new({ operator => BEFORE, value => "20200101" })});
curl
첫 번째 규칙 항목 그룹과 마찬가지로 이 두 rule_item 필드를 UserListRuleItemGroupInfo 객체로 결합하여 함께 AND합니다.
자바
UserListRuleItemGroupInfo checkoutDateRuleGroup = UserListRuleItemGroupInfo.newBuilder() .addAllRuleItems(ImmutableList.of(startDateRule, endDateRule)) .build();
C#
UserListRuleItemGroupInfo checkoutDateRuleGroup = new UserListRuleItemGroupInfo(); checkoutDateRuleGroup.RuleItems.Add(startDateRule); checkoutDateRuleGroup.RuleItems.Add(endDateRule);
PHP
$checkoutDateRuleGroup = new UserListRuleItemGroupInfo( [ 'rule_items' => [$startDateRule, $endDateRule] ] );
Python
checkout_date_rule_group.rule_items.extend( [ start_date_rule, end_date_rule, ] )
Ruby
checkout_date_rule_group = client.resource.user_list_rule_item_group_info do |g| g.rule_items += [start_date_rule, end_date_rule] end
Perl
my $checkout_date_rule_group = Google::Ads::GoogleAds::V25::Common::UserListRuleItemGroupInfo->new( {ruleItems => [$start_date_rule, $end_date_rule]});
curl
규칙 항목 그룹을 사용자 목록 규칙으로 결합
두 그룹을 모두 잠재고객 세그먼트에 적용하려면 그룹이 OR 작업을 사용하여 결합되는 유연한 규칙 피연산자의 UserListRuleInfo 인스턴스에 두 UserListRuleItemGroupInfo 객체를 모두 추가합니다.
자바
FlexibleRuleUserListInfo flexibleRuleUserListInfo = FlexibleRuleUserListInfo.newBuilder() .setInclusiveRuleOperator(UserListFlexibleRuleOperator.AND) .addInclusiveOperands( FlexibleRuleOperandInfo.newBuilder() .setRule( // The default rule_type for a UserListRuleInfo object is OR of ANDs // (disjunctive normal form). That is, rule items will be ANDed together // within rule item groups and the groups themselves will be ORed together. UserListRuleInfo.newBuilder() .addRuleItemGroups(checkoutDateRuleGroup) .addRuleItemGroups(checkoutAndCartSizeRuleGroup)) // Optional: includes a lookback window for this rule, in days. .setLookbackWindowDays(7L)) .build();
C#
FlexibleRuleUserListInfo flexibleRuleUserListInfo = new FlexibleRuleUserListInfo(); FlexibleRuleOperandInfo flexibleRuleOperandInfo = new FlexibleRuleOperandInfo() { Rule = new UserListRuleInfo() }; flexibleRuleOperandInfo.Rule.RuleItemGroups.Add(checkoutAndCartSizeRuleGroup); flexibleRuleOperandInfo.Rule.RuleItemGroups.Add(checkoutDateRuleGroup); flexibleRuleUserListInfo.InclusiveOperands.Add(flexibleRuleOperandInfo);
PHP
$flexibleRuleUserListInfo = new FlexibleRuleUserListInfo( [ 'inclusive_rule_operator' => UserListFlexibleRuleOperator::PBAND, 'inclusive_operands' => [ new FlexibleRuleOperandInfo( [ 'rule' => new UserListRuleInfo( [ // The default rule_type for a UserListRuleInfo object is OR of ANDs // (disjunctive normal form). That is, rule items will be ANDed together // within rule item groups and the groups themselves will be ORed together. 'rule_item_groups' => [ $checkoutAndCartSizeRuleGroup, $checkoutDateRuleGroup ] ] ), // Optionally add a lookback window for this rule, in days. 'lookback_window_days' => 7 ] ) ], 'exclusive_operands' => [] ] );
Python
# Create a FlexibleRuleUserListInfo 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. flexible_rule_user_list_info: FlexibleRuleUserListInfo = ( rule_based_user_list_info.flexible_rule_user_list ) flexible_rule_user_list_info.inclusive_rule_operator = ( client.enums.UserListFlexibleRuleOperatorEnum.AND ) # The default rule_type for a UserListRuleInfo object is OR of # ANDs (disjunctive normal form). That is, rule items will be # ANDed together within rule item groups and the groups # themselves will be ORed together. rule_operand: FlexibleRuleOperandInfo = client.get_type( "FlexibleRuleOperandInfo" ) rule_operand.rule.rule_item_groups.extend( [ checkout_and_cart_size_rule_group, checkout_date_rule_group, ] ) rule_operand.lookback_window_days = 7 flexible_rule_user_list_info.inclusive_operands.append(rule_operand)
Ruby
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
Perl
my $flexible_rule_user_list_info = Google::Ads::GoogleAds::V25::Common::FlexibleRuleUserListInfo->new({ inclusiveRuleOperator => AND, inclusiveOperands => [ Google::Ads::GoogleAds::V25::Common::FlexibleRuleOperandInfo->new({ rule => Google::Ads::GoogleAds::V25::Common::UserListRuleInfo->new({ # The default rule_type for a UserListRuleInfo object is OR of # ANDs (disjunctive normal form). That is, rule items will be # ANDed together within rule item groups and the groups # themselves will be ORed together. ruleItemGroups => [ $checkout_date_rule_group, $checkout_and_cart_size_rule_group ]} ), # Optionally include a lookback window for this rule, in days. lookback_window_days => 7 }) ], exclusiveOperands => []});
curl
rule_type (FlexibleRuleUserListInfo의 OR_OF_ANDS) 및 결과 목록을 미리 채우는 방법에 관한 자세한 내용은 사용자 목록 만들기를 참고하세요.