public Ad uploadAd(CompanyAd ad, Long customerId, Long adGroupId) {
AdGroupAdOperation adGroupAdOperation = googleAcAdGroupAdOperationFactory.buildAdGroupAdOperation(ad);
final MutateAdGroupAdResult uploadResult = googleAcClient.executeUploadAdOperation(ad, adGroupAdOperation);
return CompanyAd;
}
public AdGroupAdOperation buildAdGroupAdOperation(Ad ad, Long customerId, Long adGroupId) {
AdGroupAd.Builder adGroupAdBuilder = AdGroupAd.newBuilder().setAdGroup(StringValue.of(ResourceNames.adGroup(customerId, adGroupId)));
AdGroupAdOperation.Builder opBuilder = AdGroupAdOperation.newBuilder();
if (StringUtils.isNotEmpty(ad.getPartnerRemoteId())) {
adGroupAdBuilder.setResourceName(ResourceNames.adGroupAd(customerId, adGroupId, Long.valueOf(ad.getPartnerRemoteId())));
}
adGroupAdBuilder.setAd(buildHeadlineTextAd(ad));
// adGroupAdBuilder.setStatus(AdGroupAdStatusEnum.AdGroupAdStatus.PAUSED);
adGroupAdBuilder.setAdGroup(StringValue.of(ResourceNames.adGroup(customerId, adGroupId)));
opBuilder.setCreate(adGroupAd);
}
private Ad buildHeadlineTextAd(Ad ad) {
final AdContent adContent = ad.getHeadLine();
AppAdInfo.Builder appAdInfo = AppAdInfo.newBuilder();
appAdInfo.addHeadlinesBuilder().setText(StringValue.of(adContent.getTitle()))
.setPinnedField(ServedAssetFieldTypeEnum.ServedAssetFieldType.HEADLINE_1);
Ad.Builder adBuilder = Ad.newBuilder();
adBuilder.setName(StringValue.of("Headline Ad # " + System.currentTimeMillis()));
adBuilder.setAppAd(appAdInfo);
return adBuilder.build();
}
public MutateAdGroupAdResult executeUploadAdOperation(Ad originAd, AdGroupAdOperation adGroupAdOperation) {
GoogleAdsClient googleAdsClient = GoogleAdsClient.newBuilder().fromProperties(getGoogleAdsClientProperties()).build();
try (AdGroupAdServiceClient adGroupAdServiceClient = googleAdsClient.getLatestVersion().createAdGroupAdServiceClient()) {
final String consumerId = originAd.getAdset().getCampaign().getAccount().getPartnerRemoteId();
final MutateAdGroupAdsResponse mutateAdGroupsResponse = adGroupAdServiceClient.mutateAdGroupAds(consumerId, Collections.singletonList(adGroupAdOperation));
return mutateAdGroupsResponse.getResults(0);
}
}