Search in sources :

Example 1 with RuleItemGroup

use of com.google.api.ads.adwords.axis.v201809.rm.RuleItemGroup in project googleads-java-lib by googleads.

the class AddRuleBasedUserLists method runExample.

/**
 * Runs the example.
 *
 * @param adWordsServices the services factory.
 * @param session the session.
 * @throws ApiException if the API request failed with one or more service errors.
 * @throws RemoteException if the API request failed due to other errors.
 */
public static void runExample(AdWordsServicesInterface adWordsServices, AdWordsSession session) throws RemoteException {
    // Get the AdwordsUserListService.
    AdwordsUserListServiceInterface userListService = adWordsServices.get(session, AdwordsUserListServiceInterface.class);
    // First rule item group - users who visited the checkout page and had more than one item
    // in their shopping cart.
    StringKey pageTypeKey = new StringKey("ecomm_pagetype");
    StringRuleItem checkoutStringRuleItem = new StringRuleItem();
    checkoutStringRuleItem.setKey(pageTypeKey);
    checkoutStringRuleItem.setOp(StringRuleItemStringOperator.EQUALS);
    checkoutStringRuleItem.setValue("checkout");
    RuleItem checkoutRuleItem = new RuleItem();
    checkoutRuleItem.setStringRuleItem(checkoutStringRuleItem);
    NumberKey cartSizeKey = new NumberKey("cartsize");
    NumberRuleItem cartSizeNumberRuleItem = new NumberRuleItem();
    cartSizeNumberRuleItem.setKey(cartSizeKey);
    cartSizeNumberRuleItem.setOp(NumberRuleItemNumberOperator.GREATER_THAN);
    cartSizeNumberRuleItem.setValue(1.0);
    RuleItem cartSizeRuleItem = new RuleItem();
    cartSizeRuleItem.setNumberRuleItem(cartSizeNumberRuleItem);
    // Combine the two rule items into a RuleItemGroup so AdWords will AND their rules
    // together.
    RuleItemGroup checkoutMultipleItemGroup = new RuleItemGroup();
    checkoutMultipleItemGroup.setItems(new RuleItem[] { checkoutRuleItem, cartSizeRuleItem });
    // Second rule item group - users who checked out within the next 3 months.
    DateKey checkoutDateKey = new DateKey("checkoutdate");
    DateRuleItem startDateDateRuleItem = new DateRuleItem();
    startDateDateRuleItem.setKey(checkoutDateKey);
    startDateDateRuleItem.setOp(DateRuleItemDateOperator.AFTER);
    startDateDateRuleItem.setValue(DateTime.now().toString(DATE_FORMAT_STRING));
    RuleItem startDateRuleItem = new RuleItem();
    startDateRuleItem.setDateRuleItem(startDateDateRuleItem);
    DateRuleItem endDateDateRuleItem = new DateRuleItem();
    endDateDateRuleItem.setKey(checkoutDateKey);
    endDateDateRuleItem.setOp(DateRuleItemDateOperator.BEFORE);
    endDateDateRuleItem.setValue(DateTime.now().plusMonths(3).toString(DATE_FORMAT_STRING));
    RuleItem endDateRuleItem = new RuleItem();
    endDateRuleItem.setDateRuleItem(endDateDateRuleItem);
    // Combine the date rule items into a RuleItemGroup.
    RuleItemGroup checkedOutNextThreeMonthsItemGroup = new RuleItemGroup();
    checkedOutNextThreeMonthsItemGroup.setItems(new RuleItem[] { startDateRuleItem, endDateRuleItem });
    // Combine the rule item groups into a Rule so AdWords knows how to apply the rules.
    Rule rule = new Rule();
    rule.setGroups(new RuleItemGroup[] { checkoutMultipleItemGroup, checkedOutNextThreeMonthsItemGroup });
    // ExpressionRuleUserLists can use either CNF or DNF for matching. CNF means 'at least one item
    // in each rule item group must match', and DNF means 'at least one entire rule item group must
    // match'. DateSpecificRuleUserList only supports DNF. You can also omit the rule type
    // altogether to default to DNF.
    rule.setRuleType(UserListRuleTypeEnumsEnum.DNF);
    // Third and fourth rule item groups.
    // Visitors of a page who visited another page.
    StringKey urlStringKey = new StringKey("url__");
    StringRuleItem site1StringRuleItem = new StringRuleItem();
    site1StringRuleItem.setKey(urlStringKey);
    site1StringRuleItem.setOp(StringRuleItemStringOperator.EQUALS);
    site1StringRuleItem.setValue("example.com/example1");
    RuleItem site1RuleItem = new RuleItem();
    site1RuleItem.setStringRuleItem(site1StringRuleItem);
    StringRuleItem site2StringRuleItem = new StringRuleItem();
    site2StringRuleItem.setKey(urlStringKey);
    site2StringRuleItem.setOp(StringRuleItemStringOperator.EQUALS);
    site2StringRuleItem.setValue("example.com/example2");
    RuleItem site2RuleItem = new RuleItem();
    site2RuleItem.setStringRuleItem(site2StringRuleItem);
    // Create two RuleItemGroups to show that a visitor browsed two sites.
    RuleItemGroup site1RuleItemGroup = new RuleItemGroup();
    site1RuleItemGroup.setItems(new RuleItem[] { site1RuleItem });
    RuleItemGroup site2RuleItemGroup = new RuleItemGroup();
    site2RuleItemGroup.setItems(new RuleItem[] { site2RuleItem });
    // Create two rules to show that a visitor browsed two sites.
    Rule userVisitedSite1Rule = new Rule();
    userVisitedSite1Rule.setGroups(new RuleItemGroup[] { site1RuleItemGroup });
    Rule userVisitedSite2Rule = new Rule();
    userVisitedSite2Rule.setGroups(new RuleItemGroup[] { site2RuleItemGroup });
    // Create the user list with no restrictions on site visit date.
    ExpressionRuleUserList expressionUserList = new ExpressionRuleUserList();
    String creationTimeString = DateTime.now().toString("yyyyMMdd_HHmmss");
    expressionUserList.setName("Expression based user list created at " + creationTimeString);
    expressionUserList.setDescription("Users who checked out in three month window OR visited the checkout page " + "with more than one item in their cart");
    expressionUserList.setRule(rule);
    // Optional: Set the prepopulationStatus to REQUESTED to include past users in the user list.
    expressionUserList.setPrepopulationStatus(RuleBasedUserListPrepopulationStatus.REQUESTED);
    // Create the user list restricted to users who visit your site within the next six months.
    DateTime startDate = DateTime.now();
    DateTime endDate = startDate.plusMonths(6);
    DateSpecificRuleUserList dateUserList = new DateSpecificRuleUserList();
    dateUserList.setName("Date rule user list created at " + creationTimeString);
    dateUserList.setDescription(String.format("Users who visited the site between %s and %s and " + "checked out in three month window OR visited the checkout page " + "with more than one item in their cart", startDate.toString(DATE_FORMAT_STRING), endDate.toString(DATE_FORMAT_STRING)));
    dateUserList.setRule(rule);
    // Set the start and end dates of the user list.
    dateUserList.setStartDate(startDate.toString(DATE_FORMAT_STRING));
    dateUserList.setEndDate(endDate.toString(DATE_FORMAT_STRING));
    // Create the user list where "Visitors of a page who did visit another page".
    // To create a user list where "Visitors of a page who did not visit another
    // page", change the ruleOperator from AND to AND_NOT.
    CombinedRuleUserList combinedRuleUserList = new CombinedRuleUserList();
    combinedRuleUserList.setName("Combined rule user list created at " + creationTimeString);
    combinedRuleUserList.setDescription("Users who visited two sites.");
    combinedRuleUserList.setLeftOperand(userVisitedSite1Rule);
    combinedRuleUserList.setRightOperand(userVisitedSite2Rule);
    combinedRuleUserList.setRuleOperator(CombinedRuleUserListRuleOperator.AND);
    // Create operations to add the user lists.
    List<UserListOperation> operations = Stream.of(expressionUserList, dateUserList, combinedRuleUserList).map(userList -> {
        UserListOperation operation = new UserListOperation();
        operation.setOperand(userList);
        operation.setOperator(Operator.ADD);
        return operation;
    }).collect(Collectors.toList());
    // Submit the operations.
    UserListReturnValue result = userListService.mutate(operations.toArray(new UserListOperation[operations.size()]));
    // Display the results.
    for (UserList userListResult : result.getValue()) {
        System.out.printf("User list added with ID %d, name '%s', status '%s', list type '%s'," + " accountUserListStatus '%s', description '%s'.%n", userListResult.getId(), userListResult.getName(), userListResult.getStatus().getValue(), userListResult.getListType() == null ? null : userListResult.getListType().getValue(), userListResult.getAccountUserListStatus().getValue(), userListResult.getDescription());
    }
}
Also used : DateKey(com.google.api.ads.adwords.axis.v201809.rm.DateKey) ExpressionRuleUserList(com.google.api.ads.adwords.axis.v201809.rm.ExpressionRuleUserList) DateSpecificRuleUserList(com.google.api.ads.adwords.axis.v201809.rm.DateSpecificRuleUserList) UserList(com.google.api.ads.adwords.axis.v201809.rm.UserList) UserListRuleTypeEnumsEnum(com.google.api.ads.adwords.axis.v201809.rm.UserListRuleTypeEnumsEnum) DateRuleItemDateOperator(com.google.api.ads.adwords.axis.v201809.rm.DateRuleItemDateOperator) NumberRuleItemNumberOperator(com.google.api.ads.adwords.axis.v201809.rm.NumberRuleItemNumberOperator) RuleItemGroup(com.google.api.ads.adwords.axis.v201809.rm.RuleItemGroup) UserListReturnValue(com.google.api.ads.adwords.axis.v201809.rm.UserListReturnValue) CombinedRuleUserList(com.google.api.ads.adwords.axis.v201809.rm.CombinedRuleUserList) NumberKey(com.google.api.ads.adwords.axis.v201809.rm.NumberKey) CombinedRuleUserListRuleOperator(com.google.api.ads.adwords.axis.v201809.rm.CombinedRuleUserListRuleOperator) Rule(com.google.api.ads.adwords.axis.v201809.rm.Rule) OfflineCredentials(com.google.api.ads.common.lib.auth.OfflineCredentials) ApiException(com.google.api.ads.adwords.axis.v201809.cm.ApiException) DateRuleItem(com.google.api.ads.adwords.axis.v201809.rm.DateRuleItem) Credential(com.google.api.client.auth.oauth2.Credential) RuleItem(com.google.api.ads.adwords.axis.v201809.rm.RuleItem) RuleBasedUserListPrepopulationStatus(com.google.api.ads.adwords.axis.v201809.rm.RuleBasedUserListPrepopulationStatus) OAuthException(com.google.api.ads.common.lib.exception.OAuthException) AdWordsServices(com.google.api.ads.adwords.axis.factory.AdWordsServices) AdwordsUserListServiceInterface(com.google.api.ads.adwords.axis.v201809.rm.AdwordsUserListServiceInterface) ConfigurationLoadException(com.google.api.ads.common.lib.conf.ConfigurationLoadException) DateTime(org.joda.time.DateTime) Operator(com.google.api.ads.adwords.axis.v201809.cm.Operator) UserListOperation(com.google.api.ads.adwords.axis.v201809.rm.UserListOperation) NumberRuleItem(com.google.api.ads.adwords.axis.v201809.rm.NumberRuleItem) StringRuleItemStringOperator(com.google.api.ads.adwords.axis.v201809.rm.StringRuleItemStringOperator) Collectors(java.util.stream.Collectors) RemoteException(java.rmi.RemoteException) DEFAULT_CONFIGURATION_FILENAME(com.google.api.ads.common.lib.utils.Builder.DEFAULT_CONFIGURATION_FILENAME) List(java.util.List) AdWordsSession(com.google.api.ads.adwords.lib.client.AdWordsSession) AdWordsServicesInterface(com.google.api.ads.adwords.lib.factory.AdWordsServicesInterface) Stream(java.util.stream.Stream) ApiError(com.google.api.ads.adwords.axis.v201809.cm.ApiError) ValidationException(com.google.api.ads.common.lib.exception.ValidationException) StringRuleItem(com.google.api.ads.adwords.axis.v201809.rm.StringRuleItem) StringKey(com.google.api.ads.adwords.axis.v201809.rm.StringKey) Api(com.google.api.ads.common.lib.auth.OfflineCredentials.Api) AdwordsUserListServiceInterface(com.google.api.ads.adwords.axis.v201809.rm.AdwordsUserListServiceInterface) StringKey(com.google.api.ads.adwords.axis.v201809.rm.StringKey) DateRuleItem(com.google.api.ads.adwords.axis.v201809.rm.DateRuleItem) UserListOperation(com.google.api.ads.adwords.axis.v201809.rm.UserListOperation) DateSpecificRuleUserList(com.google.api.ads.adwords.axis.v201809.rm.DateSpecificRuleUserList) RuleItemGroup(com.google.api.ads.adwords.axis.v201809.rm.RuleItemGroup) CombinedRuleUserList(com.google.api.ads.adwords.axis.v201809.rm.CombinedRuleUserList) DateKey(com.google.api.ads.adwords.axis.v201809.rm.DateKey) DateTime(org.joda.time.DateTime) UserListReturnValue(com.google.api.ads.adwords.axis.v201809.rm.UserListReturnValue) NumberRuleItem(com.google.api.ads.adwords.axis.v201809.rm.NumberRuleItem) DateRuleItem(com.google.api.ads.adwords.axis.v201809.rm.DateRuleItem) RuleItem(com.google.api.ads.adwords.axis.v201809.rm.RuleItem) NumberRuleItem(com.google.api.ads.adwords.axis.v201809.rm.NumberRuleItem) StringRuleItem(com.google.api.ads.adwords.axis.v201809.rm.StringRuleItem) Rule(com.google.api.ads.adwords.axis.v201809.rm.Rule) ExpressionRuleUserList(com.google.api.ads.adwords.axis.v201809.rm.ExpressionRuleUserList) ExpressionRuleUserList(com.google.api.ads.adwords.axis.v201809.rm.ExpressionRuleUserList) DateSpecificRuleUserList(com.google.api.ads.adwords.axis.v201809.rm.DateSpecificRuleUserList) UserList(com.google.api.ads.adwords.axis.v201809.rm.UserList) CombinedRuleUserList(com.google.api.ads.adwords.axis.v201809.rm.CombinedRuleUserList) StringRuleItem(com.google.api.ads.adwords.axis.v201809.rm.StringRuleItem) NumberKey(com.google.api.ads.adwords.axis.v201809.rm.NumberKey)

Aggregations

AdWordsServices (com.google.api.ads.adwords.axis.factory.AdWordsServices)1 ApiError (com.google.api.ads.adwords.axis.v201809.cm.ApiError)1 ApiException (com.google.api.ads.adwords.axis.v201809.cm.ApiException)1 Operator (com.google.api.ads.adwords.axis.v201809.cm.Operator)1 AdwordsUserListServiceInterface (com.google.api.ads.adwords.axis.v201809.rm.AdwordsUserListServiceInterface)1 CombinedRuleUserList (com.google.api.ads.adwords.axis.v201809.rm.CombinedRuleUserList)1 CombinedRuleUserListRuleOperator (com.google.api.ads.adwords.axis.v201809.rm.CombinedRuleUserListRuleOperator)1 DateKey (com.google.api.ads.adwords.axis.v201809.rm.DateKey)1 DateRuleItem (com.google.api.ads.adwords.axis.v201809.rm.DateRuleItem)1 DateRuleItemDateOperator (com.google.api.ads.adwords.axis.v201809.rm.DateRuleItemDateOperator)1 DateSpecificRuleUserList (com.google.api.ads.adwords.axis.v201809.rm.DateSpecificRuleUserList)1 ExpressionRuleUserList (com.google.api.ads.adwords.axis.v201809.rm.ExpressionRuleUserList)1 NumberKey (com.google.api.ads.adwords.axis.v201809.rm.NumberKey)1 NumberRuleItem (com.google.api.ads.adwords.axis.v201809.rm.NumberRuleItem)1 NumberRuleItemNumberOperator (com.google.api.ads.adwords.axis.v201809.rm.NumberRuleItemNumberOperator)1 Rule (com.google.api.ads.adwords.axis.v201809.rm.Rule)1 RuleBasedUserListPrepopulationStatus (com.google.api.ads.adwords.axis.v201809.rm.RuleBasedUserListPrepopulationStatus)1 RuleItem (com.google.api.ads.adwords.axis.v201809.rm.RuleItem)1 RuleItemGroup (com.google.api.ads.adwords.axis.v201809.rm.RuleItemGroup)1 StringKey (com.google.api.ads.adwords.axis.v201809.rm.StringKey)1