Step 1: Setup Bing BulkServiceManager Configuration
package com.integration.adwords.config; import com.microsoft.bingads.*; import com.microsoft.bingads.bulk.BulkServiceManager; import com.microsoft.bingads.campaignmanagement.ICampaignManagementService; import com.microsoft.bingads.internal.OAuthService; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import java.net.MalformedURLException; import java.net.URL; /** * Created by tmichels on 7/31/15. */ @Configuration public class BingAdwordsConfig { @Value("${BING_ADS_CLIENTID}") private String bingAdsClientId; @Value("${BING_ADS_CLIENT_SECRET}") private String bingAdsClientSecret; @Value("${BING_ADS_ACCOUNTID}") private String bingAdsAccountId; @Value("${BING_ADS_CUSTOMERID}") private String bingAdsCustomerId; @Value("${BING_ADS_DEVELOPER_TOKEN}") private String bingAdsDeveloperToken; @Value("${BING_ADS_USERNAME}") private String bingAdsUsername; @Value("${BING_ADS_PASSWORD}") private String bingAdsPassword; @Value("${BING_ADS_REFRESH_TOKEN}") private String bingAdsRefreshToken; @Bean public OAuthDesktopMobileAuthCodeGrant oAuthWebAuthCodeGrant() throws MalformedURLException { OAuthDesktopMobileAuthCodeGrant oAuthWebAuthCodeGrant = new OAuthDesktopMobileAuthCodeGrant(bingAdsClientId, bingAdsRefreshToken); return oAuthWebAuthCodeGrant; } @Bean public AuthorizationData authorizationData(OAuthDesktopMobileAuthCodeGrant authentication){ AuthorizationData authorizationData = new AuthorizationData(); authorizationData.setAuthentication(authentication); authorizationData.setCustomerId(new Long(bingAdsCustomerId)); authorizationData.setAccountId(new Long(bingAdsAccountId)); authorizationData.setDeveloperToken(bingAdsDeveloperToken); return authorizationData; } @Bean public BulkServiceManager bulkServiceManager(AuthorizationData authorizationData){ BulkServiceManager bulkServiceManager = new BulkServiceManager(authorizationData); bulkServiceManager.setStatusPollIntervalInMilliseconds(5000); return bulkServiceManager; } }
Step 2: Setup Bing Adwords Service
package com.integration.adwords.service; import com.microsoft.bingads.AuthorizationData; import com.microsoft.bingads.bulk.*; import org.slf4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.io.File; import java.io.IOException; import java.net.URISyntaxException; import java.util.ArrayList; import java.util.concurrent.ExecutionException; /** * Created by tmichels on 7/31/15. */ @Service public class BingAdwordService { private static final Logger logger = org.slf4j.LoggerFactory.getLogger(BingAdwordService.class); private static final String OUTPUTFILENAME="bingAdwords.csv"; private static final String FILEDIRECTORY="adwords/bing/"; @Autowired BulkServiceManager bulkService; public void submitAndDownloadWithBulkServiceManager() throws IOException, URISyntaxException { try { logger.info("Start BingAdwordService submitAndDownloadWithBulkServiceManager"); SubmitDownloadParameters submitDownloadParameters = new SubmitDownloadParameters(); submitDownloadParameters.setCampaignIds(null); ArrayList<DataScope> dataScope = new ArrayList<DataScope>(); dataScope.add(DataScope.ENTITY_DATA); submitDownloadParameters.setDataScope(dataScope); submitDownloadParameters.setFileType(DownloadFileType.CSV); submitDownloadParameters.setLastSyncTimeInUTC(null); ArrayList<BulkDownloadEntity> bulkDownloadEntities = new ArrayList<BulkDownloadEntity>(); bulkDownloadEntities.add(BulkDownloadEntity.CAMPAIGNS); bulkDownloadEntities.add(BulkDownloadEntity.AD_GROUPS); bulkDownloadEntities.add(BulkDownloadEntity.KEYWORDS); bulkDownloadEntities.add(BulkDownloadEntity.ADS); submitDownloadParameters.setEntities(bulkDownloadEntities); BulkDownloadOperation bulkDownloadOperation = bulkService.submitDownloadAsync(submitDownloadParameters, null).get(); BulkOperationStatus<DownloadStatus> downloadStatus; int waitTime = 5000; for (int i = 0; i < 24; i++) { Thread.sleep(waitTime); downloadStatus = bulkDownloadOperation.getStatusAsync(null).get(); if (downloadStatus.getStatus() == DownloadStatus.COMPLETED) { break; } } File resultFile = bulkDownloadOperation.downloadResultFileAsync( new File(FILEDIRECTORY), OUTPUTFILENAME, true, true, // Set this value true if you want to overwrite the same file. null).get(); logger.info("Download BingAdwords file success %s\n", resultFile.getName()); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } } }