Search in sources :

Example 1 with Feed

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

the class AddShoppingDynamicRemarketingCampaign method attachUserList.

/**
 * Attach a user list to an ad group. The user list provides positive targeting and feed
 * information to drive the dynamic content of the ad.
 *
 * <p>Note: User lists must be attached at the ad group level for positive targeting in Shopping
 * dynamic remarketing campaigns.
 *
 * @param adGroup the ad group which will have the user list attached.
 * @param userListId the user list to use for targeting and dynamic content.
 */
private static void attachUserList(AdWordsServicesInterface services, AdWordsSession session, AdGroup adGroup, long userListId) throws RemoteException {
    AdGroupCriterionServiceInterface adGroupCriterionService = services.get(session, AdGroupCriterionServiceInterface.class);
    CriterionUserList userList = new CriterionUserList();
    userList.setUserListId(userListId);
    BiddableAdGroupCriterion adGroupCriterion = new BiddableAdGroupCriterion();
    adGroupCriterion.setCriterion(userList);
    adGroupCriterion.setAdGroupId(adGroup.getId());
    AdGroupCriterionOperation op = new AdGroupCriterionOperation();
    op.setOperand(adGroupCriterion);
    op.setOperator(Operator.ADD);
    adGroupCriterionService.mutate(new AdGroupCriterionOperation[] { op });
}
Also used : AdGroupCriterionOperation(com.google.api.ads.adwords.axis.v201809.cm.AdGroupCriterionOperation) AdGroupCriterionServiceInterface(com.google.api.ads.adwords.axis.v201809.cm.AdGroupCriterionServiceInterface) BiddableAdGroupCriterion(com.google.api.ads.adwords.axis.v201809.cm.BiddableAdGroupCriterion) CriterionUserList(com.google.api.ads.adwords.axis.v201809.cm.CriterionUserList)

Example 2 with Feed

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

the class MigrateToExtensionSettings 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 all of the feeds for the session's account.
    List<Feed> feeds = getFeeds(adWordsServices, session);
    for (Feed feed : feeds) {
        // Retrieve all the sitelinks from the current feed.
        Map<Long, SiteLinkFromFeed> feedItems = getSiteLinksFromFeed(adWordsServices, session, feed);
        // Get all the instances where a sitelink from this feed has been added to a campaign.
        List<CampaignFeed> campaignFeeds = getCampaignFeeds(adWordsServices, session, feed, PLACEHOLDER_SITELINKS);
        Set<Long> allFeedItemsToDelete = Sets.newHashSet();
        for (CampaignFeed campaignFeed : campaignFeeds) {
            // Retrieve the sitelinks that have been associated with this campaign.
            Set<Long> feedItemIds = getFeedItemIdsForCampaign(campaignFeed);
            ExtensionSettingPlatform platformRestrictions = getPlatformRestictionsForCampaign(campaignFeed);
            if (feedItemIds.isEmpty()) {
                System.out.printf("Migration skipped for campaign feed with campaign ID %d " + "and feed ID %d because no mapped feed item IDs were found in the " + "campaign feed's matching function.%n", campaignFeed.getCampaignId(), campaignFeed.getFeedId());
            } else {
                // Delete the campaign feed that associates the sitelinks from the feed to the campaign.
                deleteCampaignFeed(adWordsServices, session, campaignFeed);
                // Create extension settings instead of sitelinks.
                createExtensionSetting(adWordsServices, session, feedItems, campaignFeed, feedItemIds, platformRestrictions);
                // Mark the sitelinks from the feed for deletion.
                allFeedItemsToDelete.addAll(feedItemIds);
            }
        }
        // Delete all the sitelinks from the feed.
        deleteOldFeedItems(adWordsServices, session, allFeedItemsToDelete, feed);
    }
}
Also used : CampaignFeed(com.google.api.ads.adwords.axis.v201809.cm.CampaignFeed) ExtensionSettingPlatform(com.google.api.ads.adwords.axis.v201809.cm.ExtensionSettingPlatform) CampaignFeed(com.google.api.ads.adwords.axis.v201809.cm.CampaignFeed) Feed(com.google.api.ads.adwords.axis.v201809.cm.Feed)

Example 3 with Feed

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

the class MigrateToExtensionSettings method createExtensionSetting.

/**
 * Creates the extension setting for a list of feed items.
 *
 * @param adWordsServices the AdWordsServices
 * @param session the AdWordsSession
 * @param feedItems the list of all feed items
 * @param campaignFeed the original campaign feed
 * @param feedItemIds IDs of the feed items for which extension settings should be created
 * @param platformRestrictions the platform restrictions for the new campaign extension setting
 */
private static void createExtensionSetting(AdWordsServicesInterface adWordsServices, AdWordsSession session, Map<Long, SiteLinkFromFeed> feedItems, CampaignFeed campaignFeed, Set<Long> feedItemIds, ExtensionSettingPlatform platformRestrictions) throws RemoteException {
    // Get the CampaignExtensionSettingService.
    CampaignExtensionSettingServiceInterface campaignExtensionSettingService = adWordsServices.get(session, CampaignExtensionSettingServiceInterface.class);
    CampaignExtensionSetting campaignExtensionSetting = new CampaignExtensionSetting();
    campaignExtensionSetting.setCampaignId(campaignFeed.getCampaignId());
    campaignExtensionSetting.setExtensionType(FeedType.SITELINK);
    ExtensionSetting extensionSetting = new ExtensionSetting();
    List<ExtensionFeedItem> extensionFeedItems = new ArrayList<>();
    for (Long feedItemId : feedItemIds) {
        SiteLinkFromFeed siteLinkFromFeed = feedItems.get(feedItemId);
        SitelinkFeedItem siteLinkFeedItem = new SitelinkFeedItem();
        siteLinkFeedItem.setSitelinkText(siteLinkFromFeed.text);
        if (siteLinkFromFeed.finalUrls != null && siteLinkFromFeed.finalUrls.length > 0) {
            siteLinkFeedItem.setSitelinkFinalUrls(new UrlList(siteLinkFromFeed.finalUrls));
            if (siteLinkFromFeed.finalMobileUrls != null && siteLinkFromFeed.finalMobileUrls.length > 0) {
                siteLinkFeedItem.setSitelinkFinalMobileUrls(new UrlList(siteLinkFromFeed.finalMobileUrls));
            }
            siteLinkFeedItem.setSitelinkTrackingUrlTemplate(siteLinkFromFeed.trackingUrlTemplate);
        } else {
            siteLinkFeedItem.setSitelinkUrl(siteLinkFromFeed.url);
        }
        siteLinkFeedItem.setSitelinkLine2(siteLinkFromFeed.line2);
        siteLinkFeedItem.setSitelinkLine3(siteLinkFromFeed.line3);
        extensionFeedItems.add(siteLinkFeedItem);
    }
    extensionSetting.setExtensions(extensionFeedItems.toArray(new ExtensionFeedItem[extensionFeedItems.size()]));
    extensionSetting.setPlatformRestrictions(platformRestrictions);
    campaignExtensionSetting.setExtensionSetting(extensionSetting);
    CampaignExtensionSettingOperation operation = new CampaignExtensionSettingOperation();
    operation.setOperand(campaignExtensionSetting);
    operation.setOperator(Operator.ADD);
    campaignExtensionSettingService.mutate(new CampaignExtensionSettingOperation[] { operation });
}
Also used : ExtensionSetting(com.google.api.ads.adwords.axis.v201809.cm.ExtensionSetting) CampaignExtensionSetting(com.google.api.ads.adwords.axis.v201809.cm.CampaignExtensionSetting) CampaignExtensionSettingOperation(com.google.api.ads.adwords.axis.v201809.cm.CampaignExtensionSettingOperation) ExtensionFeedItem(com.google.api.ads.adwords.axis.v201809.cm.ExtensionFeedItem) CampaignExtensionSetting(com.google.api.ads.adwords.axis.v201809.cm.CampaignExtensionSetting) SitelinkFeedItem(com.google.api.ads.adwords.axis.v201809.cm.SitelinkFeedItem) ArrayList(java.util.ArrayList) CampaignExtensionSettingServiceInterface(com.google.api.ads.adwords.axis.v201809.cm.CampaignExtensionSettingServiceInterface) UrlList(com.google.api.ads.adwords.axis.v201809.cm.UrlList)

Example 4 with Feed

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

the class MigrateToExtensionSettings method getFeeds.

/**
 * Returns a list of all enabled feeds.
 */
private static List<Feed> getFeeds(AdWordsServicesInterface adWordsServices, AdWordsSession session) throws RemoteException {
    FeedServiceInterface feedService = adWordsServices.get(session, FeedServiceInterface.class);
    String query = "SELECT Id, Name, Attributes WHERE Origin = 'USER' AND FeedStatus = 'ENABLED'";
    List<Feed> feeds = new ArrayList<>();
    int offset = 0;
    FeedPage feedPage;
    do {
        String pageQuery = String.format(query + " LIMIT %d, %d", offset, PAGE_SIZE);
        feedPage = feedService.query(pageQuery);
        if (feedPage.getEntries() != null) {
            feeds.addAll(Arrays.asList(feedPage.getEntries()));
        }
        offset += PAGE_SIZE;
    } while (offset < feedPage.getTotalNumEntries());
    return feeds;
}
Also used : FeedPage(com.google.api.ads.adwords.axis.v201809.cm.FeedPage) CampaignFeedPage(com.google.api.ads.adwords.axis.v201809.cm.CampaignFeedPage) CampaignFeedServiceInterface(com.google.api.ads.adwords.axis.v201809.cm.CampaignFeedServiceInterface) FeedServiceInterface(com.google.api.ads.adwords.axis.v201809.cm.FeedServiceInterface) ArrayList(java.util.ArrayList) CampaignFeed(com.google.api.ads.adwords.axis.v201809.cm.CampaignFeed) Feed(com.google.api.ads.adwords.axis.v201809.cm.Feed)

Example 5 with Feed

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

the class MigrateToExtensionSettings method getFeedItemIdsForCampaign.

/**
 * Returns the list of feed item IDs that are used by a campaign through a given campaign feed.
 */
private static Set<Long> getFeedItemIdsForCampaign(CampaignFeed campaignFeed) throws RemoteException {
    Set<Long> feedItemIds = Sets.newHashSet();
    FunctionOperator functionOperator = campaignFeed.getMatchingFunction().getOperator();
    if (FunctionOperator.IN.equals(functionOperator)) {
        // Check if matchingFunction is of the form IN(FEED_ITEM_ID,{xxx,xxx}).
        // Extract feed items if applicable.
        feedItemIds.addAll(getFeedItemIdsFromArgument(campaignFeed.getMatchingFunction()));
    } else if (FunctionOperator.AND.equals(functionOperator)) {
        // Check if matchingFunction is of the form IN(FEED_ITEM_ID,{xxx,xxx}).
        // Extract feed items if applicable.
        Arrays.stream(campaignFeed.getMatchingFunction().getLhsOperand()).filter(FunctionOperand.class::isInstance).map(argument -> (FunctionOperand) argument).filter(operand -> FunctionOperator.IN.equals(operand.getValue().getOperator())).forEach(operand -> feedItemIds.addAll(getFeedItemIdsFromArgument(operand.getValue())));
    } else {
    // There are no other matching functions involving feed item IDs.
    }
    return feedItemIds;
}
Also used : Arrays(java.util.Arrays) UrlList(com.google.api.ads.adwords.axis.v201809.cm.UrlList) CampaignFeedOperation(com.google.api.ads.adwords.axis.v201809.cm.CampaignFeedOperation) CampaignExtensionSettingOperation(com.google.api.ads.adwords.axis.v201809.cm.CampaignExtensionSettingOperation) CampaignFeedServiceInterface(com.google.api.ads.adwords.axis.v201809.cm.CampaignFeedServiceInterface) HashMultimap(com.google.common.collect.HashMultimap) OfflineCredentials(com.google.api.ads.common.lib.auth.OfflineCredentials) Map(java.util.Map) ApiException(com.google.api.ads.adwords.axis.v201809.cm.ApiException) FeedItem(com.google.api.ads.adwords.axis.v201809.cm.FeedItem) FeedPage(com.google.api.ads.adwords.axis.v201809.cm.FeedPage) OAuthException(com.google.api.ads.common.lib.exception.OAuthException) AdWordsServices(com.google.api.ads.adwords.axis.factory.AdWordsServices) Set(java.util.Set) Operator(com.google.api.ads.adwords.axis.v201809.cm.Operator) Collectors(java.util.stream.Collectors) Sets(com.google.common.collect.Sets) RemoteException(java.rmi.RemoteException) CampaignExtensionSettingServiceInterface(com.google.api.ads.adwords.axis.v201809.cm.CampaignExtensionSettingServiceInterface) List(java.util.List) AdWordsSession(com.google.api.ads.adwords.lib.client.AdWordsSession) AdWordsServicesInterface(com.google.api.ads.adwords.lib.factory.AdWordsServicesInterface) ApiError(com.google.api.ads.adwords.axis.v201809.cm.ApiError) ValidationException(com.google.api.ads.common.lib.exception.ValidationException) FunctionOperand(com.google.api.ads.adwords.axis.v201809.cm.FunctionOperand) FunctionArgumentOperand(com.google.api.ads.adwords.axis.v201809.cm.FunctionArgumentOperand) ExtensionFeedItem(com.google.api.ads.adwords.axis.v201809.cm.ExtensionFeedItem) FunctionOperator(com.google.api.ads.adwords.axis.v201809.cm.FunctionOperator) FeedMapping(com.google.api.ads.adwords.axis.v201809.cm.FeedMapping) FeedItemAttributeValue(com.google.api.ads.adwords.axis.v201809.cm.FeedItemAttributeValue) AttributeFieldMapping(com.google.api.ads.adwords.axis.v201809.cm.AttributeFieldMapping) Multimap(com.google.common.collect.Multimap) FeedServiceInterface(com.google.api.ads.adwords.axis.v201809.cm.FeedServiceInterface) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) FeedItemOperation(com.google.api.ads.adwords.axis.v201809.cm.FeedItemOperation) ExtensionSetting(com.google.api.ads.adwords.axis.v201809.cm.ExtensionSetting) CampaignExtensionSetting(com.google.api.ads.adwords.axis.v201809.cm.CampaignExtensionSetting) Function(com.google.api.ads.adwords.axis.v201809.cm.Function) Credential(com.google.api.client.auth.oauth2.Credential) CampaignFeed(com.google.api.ads.adwords.axis.v201809.cm.CampaignFeed) RequestContextOperandContextType(com.google.api.ads.adwords.axis.v201809.cm.RequestContextOperandContextType) FeedMappingServiceInterface(com.google.api.ads.adwords.axis.v201809.cm.FeedMappingServiceInterface) CampaignFeedPage(com.google.api.ads.adwords.axis.v201809.cm.CampaignFeedPage) Feed(com.google.api.ads.adwords.axis.v201809.cm.Feed) ConfigurationLoadException(com.google.api.ads.common.lib.conf.ConfigurationLoadException) ExtensionSettingPlatform(com.google.api.ads.adwords.axis.v201809.cm.ExtensionSettingPlatform) FeedMappingPage(com.google.api.ads.adwords.axis.v201809.cm.FeedMappingPage) SitelinkFeedItem(com.google.api.ads.adwords.axis.v201809.cm.SitelinkFeedItem) Maps(com.google.common.collect.Maps) DEFAULT_CONFIGURATION_FILENAME(com.google.api.ads.common.lib.utils.Builder.DEFAULT_CONFIGURATION_FILENAME) RequestContextOperand(com.google.api.ads.adwords.axis.v201809.cm.RequestContextOperand) FeedItemPage(com.google.api.ads.adwords.axis.v201809.cm.FeedItemPage) ConstantOperand(com.google.api.ads.adwords.axis.v201809.cm.ConstantOperand) FeedItemServiceInterface(com.google.api.ads.adwords.axis.v201809.cm.FeedItemServiceInterface) FeedType(com.google.api.ads.adwords.axis.v201809.cm.FeedType) Api(com.google.api.ads.common.lib.auth.OfflineCredentials.Api) FunctionOperand(com.google.api.ads.adwords.axis.v201809.cm.FunctionOperand) FunctionOperator(com.google.api.ads.adwords.axis.v201809.cm.FunctionOperator)

Aggregations

ArrayList (java.util.ArrayList)11 FeedItem (com.google.api.ads.adwords.axis.v201809.cm.FeedItem)9 FeedItemOperation (com.google.api.ads.adwords.axis.v201809.cm.FeedItemOperation)7 CampaignFeed (com.google.api.ads.adwords.axis.v201809.cm.CampaignFeed)6 CampaignFeedServiceInterface (com.google.api.ads.adwords.axis.v201809.cm.CampaignFeedServiceInterface)6 Feed (com.google.api.ads.adwords.axis.v201809.cm.Feed)6 ExtensionFeedItem (com.google.api.ads.adwords.axis.v201809.cm.ExtensionFeedItem)5 FeedItemAttributeValue (com.google.api.ads.adwords.axis.v201809.cm.FeedItemAttributeValue)5 FeedItemServiceInterface (com.google.api.ads.adwords.axis.v201809.cm.FeedItemServiceInterface)5 SitelinkFeedItem (com.google.api.ads.adwords.axis.v201809.cm.SitelinkFeedItem)5 AttributeFieldMapping (com.google.api.ads.adwords.axis.v201809.cm.AttributeFieldMapping)4 CampaignFeedOperation (com.google.api.ads.adwords.axis.v201809.cm.CampaignFeedOperation)4 FeedMapping (com.google.api.ads.adwords.axis.v201809.cm.FeedMapping)4 FeedMappingServiceInterface (com.google.api.ads.adwords.axis.v201809.cm.FeedMappingServiceInterface)4 FeedServiceInterface (com.google.api.ads.adwords.axis.v201809.cm.FeedServiceInterface)4 AdGroupAd (com.google.api.ads.adwords.axis.v201809.cm.AdGroupAd)3 CampaignFeedPage (com.google.api.ads.adwords.axis.v201809.cm.CampaignFeedPage)3 ConstantOperand (com.google.api.ads.adwords.axis.v201809.cm.ConstantOperand)3 ExtensionSetting (com.google.api.ads.adwords.axis.v201809.cm.ExtensionSetting)3 Function (com.google.api.ads.adwords.axis.v201809.cm.Function)3