import com.google.api.ads.adwords.axis.factory.AdWordsServices;
import com.google.api.ads.adwords.axis.utils.v201406.SelectorBuilder;
import com.google.api.ads.adwords.axis.v201406.cm.AttributeFieldMapping;
import com.google.api.ads.adwords.axis.v201406.cm.CampaignFeed;
import com.google.api.ads.adwords.axis.v201406.cm.CampaignFeedServiceInterface;
import com.google.api.ads.adwords.axis.v201406.cm.FeedItem;
import com.google.api.ads.adwords.axis.v201406.cm.FeedItemAttributeValue;
import com.google.api.ads.adwords.axis.v201406.cm.FeedItemServiceInterface;
import com.google.api.ads.adwords.axis.v201406.cm.FeedMapping;
import com.google.api.ads.adwords.axis.v201406.cm.FeedMappingServiceInterface;
import com.google.api.ads.adwords.axis.v201406.cm.Selector;
import com.google.api.ads.adwords.lib.client.AdWordsSession;
import com.google.api.ads.common.lib.auth.OfflineCredentials;
import com.google.api.ads.common.lib.auth.OfflineCredentials.Api;
import com.google.api.client.auth.oauth2.Credential;
public class GetCampaignSiteLinks {
public static void main(String[] args) throws Exception {
Credential oAuth2Credential = new OfflineCredentials.Builder().forApi(Api.ADWORDS).fromFile()
.build().generateCredential();
// Construct an AdWordsSession.
AdWordsSession session =
new AdWordsSession.Builder().fromFile().withOAuth2Credential(oAuth2Credential).build();
AdWordsServices adWordsServices = new AdWordsServices();
Long campaignId = Long.valueOf("INSERT_CAMPAIGN_ID_HERE");
getCampaignSitelinkUrls(campaignId, session, adWordsServices);
}
private static void getCampaignSitelinkUrls(Long campaignId, AdWordsSession session,
AdWordsServices adWordsServices) throws Exception {
// Find the ENABLED CampaignFeed that's mapped to the Campaign for sitelinks (placeholder type
// of 1).
CampaignFeedServiceInterface campaignFeedService = adWordsServices.get(session,
CampaignFeedServiceInterface.class);
Selector selector = new SelectorBuilder()
.fields("CampaignId", "FeedId")
.equals("PlaceholderTypes", "1")
.equals("CampaignId", campaignId.toString())
.equals("Status", "ENABLED")
.build();
CampaignFeed campaignFeed = campaignFeedService.get(selector).getEntries(0);
// Find the ENABLED FeedMapping for the feed above.
FeedMappingServiceInterface feedMappingService = adWordsServices.get(session,
FeedMappingServiceInterface.class);
selector = new SelectorBuilder()
.fields("FeedId", "AttributeFieldMappings")
.equals("PlaceholderType", "1")
.equals("Status", "ENABLED")
.equals("FeedId", campaignFeed.getFeedId().toString())
.build();
FeedMapping feedMapping = feedMappingService.get(selector).getEntries(0);
// Find the attribute that's mapped to the URL placeholder field (2).
AttributeFieldMapping urlAttributeFieldMapping = null;
for(AttributeFieldMapping attributeFieldMapping : feedMapping.getAttributeFieldMappings()) {
if(attributeFieldMapping.getFieldId().intValue() == 2) {
urlAttributeFieldMapping = attributeFieldMapping;
break;
}
}
// Find the FeedItems on the feed and print each one's ID and URL
FeedItemServiceInterface feedItemService =
adWordsServices.get(session, FeedItemServiceInterface.class);
selector = new SelectorBuilder()
.fields("FeedId", "FeedItemId", "AttributeValues")
.equals("FeedId", campaignFeed.getFeedId().toString())
.build();
for(FeedItem feedItem : feedItemService.get(selector).getEntries()) {
// Get the FeedItemAttributeValue for the feed attribute ID identified above from
// the FeedMapping.
FeedItemAttributeValue urlAttributeValue = null;
for(FeedItemAttributeValue attributeValue : feedItem.getAttributeValues()) {
if (attributeValue.getFeedAttributeId().equals(
urlAttributeFieldMapping.getFeedAttributeId())) {
urlAttributeValue = attributeValue;
break;
}
}
System.out.printf("Feed item ID %d has URL %s.%n", feedItem.getFeedItemId(),
urlAttributeValue.getStringValue());
}
}
}