The code samples below provide examples of common advanced operations using the AdWords API. Client Library.
Add an ad customizer feed
' Copyright 2018 Google LLC ' ' Licensed under the Apache License, Version 2.0 (the "License") ' you may not use this file except in compliance with the License. ' You may obtain a copy of the License at ' ' http:'www.apache.org/licenses/LICENSE-2.0 ' ' Unless required by applicable law or agreed to in writing, software ' distributed under the License is distributed on an "AS IS" BASIS, ' WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ' See the License for the specific language governing permissions and ' limitations under the License. Imports Google.Api.Ads.AdWords.Lib Imports Google.Api.Ads.AdWords.v201809 Namespace Google.Api.Ads.AdWords.Examples.VB.v201809 ''' <summary> ''' This code example adds an ad customizer feed. Then it adds an ad in two ''' different ad groups that uses the feed to populate dynamic data. ''' </summary> Public Class AddAdCustomizers Inherits ExampleBase ''' <summary> ''' Main method, to run this code example as a standalone application. ''' </summary> ''' <param name="args">The command line arguments.</param> Public Shared Sub Main(ByVal args As String()) Dim codeExample As New AddAdCustomizers Console.WriteLine(codeExample.Description) Try Dim adGroupId1 As Long = Long.Parse("INSERT_ADGROUP_ID_HERE") Dim adGroupId2 As Long = Long.Parse("INSERT_ADGROUP_ID_HERE") Dim feedName As String = "INSERT_FEED_NAME_HERE" codeExample.Run(New AdWordsUser(), adGroupId1, adGroupId2, feedName) Catch e As Exception Console.WriteLine("An exception occurred while running this code example. {0}", ExampleUtilities.FormatException(e)) End Try End Sub ''' <summary> ''' Returns a description about the code example. ''' </summary> Public Overrides ReadOnly Property Description() As String Get Return "This code example adds an ad customizer feed. Then it adds an ad in two " & "different ad groups that uses the feed to populate dynamic data." End Get End Property ''' <summary> ''' Runs the code example. ''' </summary> ''' <param name="user">The AdWords user.</param> ''' <param name="adGroupId1">Id of the first adgroup to which ads with ad ''' customizers are added.</param> ''' <param name="adGroupId2">Id of the second adgroup to which ads with ad ''' customizers are added.</param> ''' <param name="feedName">Name of the feed to be created.</param> Public Sub Run(ByVal user As AdWordsUser, ByVal adGroupId1 As Long, ByVal adGroupId2 As Long, ByVal feedName As String) Try ' Create a customizer feed. One feed per account can be used for all ads. Dim adCustomizerFeed As AdCustomizerFeed = CreateCustomizerFeed(user, feedName) ' Add feed items containing the values we'd like to place in ads. CreateCustomizerFeedItems(user, New Long() {adGroupId1, adGroupId2}, adCustomizerFeed) ' All set! We can now create ads with customizations. CreateAdsWithCustomizations(user, New Long() {adGroupId1, adGroupId2}, feedName) Catch e As Exception Throw New System.ApplicationException("Failed to add ad customizers modifiers to " + "ad group.", e) End Try End Sub ''' <summary> ''' Creates a new Feed for ad customizers. ''' </summary> ''' <param name="user">The AdWords user.</param> ''' <param name="feedName">Name of the feed to be created.</param> ''' <returns>An ad customizer feed.</returns> Private Shared Function CreateCustomizerFeed(ByVal user As AdWordsUser, ByVal feedName As String) As AdCustomizerFeed Using adCustomizerFeedService As AdCustomizerFeedService = DirectCast( user.GetService( AdWordsService.v201809.AdCustomizerFeedService), AdCustomizerFeedService) Dim feed As New AdCustomizerFeed() feed.feedName = feedName Dim attribute1 As New AdCustomizerFeedAttribute attribute1.name = "Name" attribute1.type = AdCustomizerFeedAttributeType.STRING Dim attribute2 As New AdCustomizerFeedAttribute attribute2.name = "Price" attribute2.type = AdCustomizerFeedAttributeType.PRICE Dim attribute3 As New AdCustomizerFeedAttribute attribute3.name = "Date" attribute3.type = AdCustomizerFeedAttributeType.DATE_TIME feed.feedAttributes = New AdCustomizerFeedAttribute() { _ attribute1, attribute2, attribute3 } Dim feedOperation As New AdCustomizerFeedOperation() feedOperation.operand = feed feedOperation.operator = [Operator].ADD Dim addedFeed As AdCustomizerFeed = adCustomizerFeedService.mutate( New AdCustomizerFeedOperation() {feedOperation}).value(0) Console.WriteLine("Created ad customizer feed with ID = {0} and name = '{1}'.", addedFeed.feedId, addedFeed.feedName) Return addedFeed End Using End Function ''' <summary> ''' Creates FeedItems with the values to use in ad customizations for each ''' ad group in <code>adGroupIds</code>. ''' </summary> ''' <param name="user">The AdWords user.</param> ''' <param name="adGroupIds">IDs of adgroups to which ad customizations are ''' made.</param> ''' <param name="adCustomizerFeed">The ad customizer feed.</param> Private Shared Sub CreateCustomizerFeedItems(ByVal user As AdWordsUser, ByVal adGroupIds As Long(), ByVal adCustomizerFeed As AdCustomizerFeed) Using feedItemService As FeedItemService = CType( user.GetService( AdWordsService.v201809.FeedItemService), FeedItemService) Dim feedItemOperations As New List(Of FeedItemOperation) Dim marsDate As New DateTime(DateTime.Now.Year, DateTime.Now.Month, 1) feedItemOperations.Add(CreateFeedItemAddOperation(adCustomizerFeed, "Mars", "$1234.56", marsDate.ToString( "yyyyMMdd HHmmss"))) Dim venusDate As New DateTime(DateTime.Now.Year, DateTime.Now.Month, 15) feedItemOperations.Add(CreateFeedItemAddOperation(adCustomizerFeed, "Venus", "$1450.00", venusDate.ToString( "yyyyMMdd HHmmss"))) Dim feedItemReturnValue As FeedItemReturnValue = feedItemService.mutate( feedItemOperations.ToArray) For Each addedFeedItem As FeedItem In feedItemReturnValue.value Console.WriteLine("Added feed item with ID {0}", addedFeedItem.feedItemId) Next ' Add feed item targeting to restrict the feed item to specific ad groups. RestrictFeedItemToAdGroup(user, feedItemReturnValue.value(0), adGroupIds(0)) RestrictFeedItemToAdGroup(user, feedItemReturnValue.value(1), adGroupIds(1)) End Using End Sub ''' <summary> ''' Restricts the feed item to an ad group. ''' </summary> ''' <param name="user">The user.</param> ''' <param name="feedItem">The feed item.</param> ''' <param name="adGroupId">The ad group ID.</param> Private Shared Sub RestrictFeedItemToAdGroup(user As AdWordsUser, feedItem As FeedItem, adGroupId As Long?) Dim adGroupTarget As New FeedItemAdGroupTarget() adGroupTarget.feedId = feedItem.feedId adGroupTarget.feedItemId = feedItem.feedItemId adGroupTarget.adGroupId = adGroupId.Value Using feedItemTargetService As FeedItemTargetService = CType( user.GetService( AdWordsService.v201809.FeedItemTargetService), FeedItemTargetService) Dim operation As New FeedItemTargetOperation() operation.operator = [Operator].ADD operation.operand = adGroupTarget Dim retval As FeedItemTargetReturnValue = feedItemTargetService.mutate( New FeedItemTargetOperation() {operation}) Dim newAdGroupTarget As FeedItemAdGroupTarget = CType(retval.value(0), FeedItemAdGroupTarget) Console.WriteLine("Feed item target for feed ID {0} and feed item ID {1}" + " was created to restrict serving to ad group ID {2}", newAdGroupTarget.feedId, newAdGroupTarget.feedItemId, newAdGroupTarget.adGroupId) End Using End Sub ''' <summary> ''' Creates a FeedItemOperation that will create a FeedItem with the ''' specified values when sent to FeedItemService.mutate. ''' </summary> ''' <param name="adCustomizerFeed">The ad customizer feed.</param> ''' <param name="nameValue">The value for the name attribute of the ''' FeedItem.</param> ''' <param name="priceValue">The value for the price attribute of the ''' FeedItem.</param> ''' <param name="dateValue">The value for the date attribute of the ''' FeedItem.</param> ''' <returns>A new FeedItemOperation for adding a FeedItem.</returns> Private Shared Function CreateFeedItemAddOperation(ByVal adCustomizerFeed As _ AdCustomizerFeed, ByVal nameValue As String, ByVal priceValue As String, ByVal dateValue As String) _ As FeedItemOperation Dim feedItem As New FeedItem feedItem.feedId = adCustomizerFeed.feedId Dim attributeValues As New List(Of FeedItemAttributeValue) ' FeedAttributes appear in the same order as they were created ' - Name, Price, Date. See CreateCustomizerFeed method for details. Dim nameAttributeValue As New FeedItemAttributeValue nameAttributeValue.feedAttributeId = adCustomizerFeed.feedAttributes(0).id nameAttributeValue.stringValue = nameValue attributeValues.Add(nameAttributeValue) Dim priceAttributeValue As New FeedItemAttributeValue priceAttributeValue.feedAttributeId = adCustomizerFeed.feedAttributes(1).id priceAttributeValue.stringValue = priceValue attributeValues.Add(priceAttributeValue) Dim dateAttributeValue As New FeedItemAttributeValue dateAttributeValue.feedAttributeId = adCustomizerFeed.feedAttributes(2).id dateAttributeValue.stringValue = dateValue attributeValues.Add(dateAttributeValue) feedItem.attributeValues = attributeValues.ToArray Dim feedItemOperation As New FeedItemOperation feedItemOperation.operand = feedItem feedItemOperation.operator = [Operator].ADD Return feedItemOperation End Function ''' <summary> ''' Creates text ads that use ad customizations for the specified ad group ''' IDs. ''' </summary> ''' <param name="user">The AdWords user.</param> ''' <param name="adGroupIds">IDs of the ad groups to which customized ads ''' are added.</param> ''' <param name="feedName">Name of the feed to use.</param> Private Shared Sub CreateAdsWithCustomizations(ByVal user As AdWordsUser, ByVal adGroupIds As Long(), ByVal feedName As String) Using adGroupAdService As AdGroupAdService = CType( user.GetService( AdWordsService.v201809.AdGroupAdService), AdGroupAdService) Dim expandedTextAd As New ExpandedTextAd expandedTextAd.headlinePart1 = String.Format("Luxury Cruise to {{={0}.Name}}", feedName) expandedTextAd.headlinePart2 = String.Format("Only {{={0}.Price}}", feedName) expandedTextAd.description = String.Format("Offer ends in {{=countdown({0}.Date)}}!", feedName) expandedTextAd.finalUrls = New String() {"http://www.example.com"} ' We add the same ad to both ad groups. When they serve, they will show ' different values, since they match different feed items. Dim adGroupAdOperations As New List(Of AdGroupAdOperation) For Each adGroupId As Long In adGroupIds Dim adGroupAd As New AdGroupAd adGroupAd.adGroupId = adGroupId adGroupAd.ad = expandedTextAd Dim adGroupAdOperation As New AdGroupAdOperation adGroupAdOperation.operand = adGroupAd adGroupAdOperation.operator = [Operator].ADD adGroupAdOperations.Add(adGroupAdOperation) Next Dim adGroupAdReturnValue As AdGroupAdReturnValue = adGroupAdService.mutate( adGroupAdOperations.ToArray) For Each addedAd As AdGroupAd In adGroupAdReturnValue.value Console.WriteLine("Created an ad with ID {0}, type '{1}' and status '{2}'.", addedAd.ad.id, addedAd.ad.AdType, addedAd.status) Next End Using End Sub End Class End Namespace
Add an ad group level bid modifier
' Copyright 2018 Google LLC ' ' Licensed under the Apache License, Version 2.0 (the "License") ' you may not use this file except in compliance with the License. ' You may obtain a copy of the License at ' ' http:'www.apache.org/licenses/LICENSE-2.0 ' ' Unless required by applicable law or agreed to in writing, software ' distributed under the License is distributed on an "AS IS" BASIS, ' WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ' See the License for the specific language governing permissions and ' limitations under the License. Imports Google.Api.Ads.AdWords.Lib Imports Google.Api.Ads.AdWords.v201809 Namespace Google.Api.Ads.AdWords.Examples.VB.v201809 ''' <summary> ''' This code example illustrates how to add ad group level mobile bid ''' modifier override. ''' </summary> Public Class AddAdGroupBidModifier Inherits ExampleBase ''' <summary> ''' Main method, to run this code example as a standalone application. ''' </summary> ''' <param name="args">The command line arguments.</param> Public Shared Sub Main(ByVal args As String()) Dim codeExample As New AddAdGroupBidModifier Console.WriteLine(codeExample.Description) Try Dim adGroupId As Long = Long.Parse("INSERT_ADGROUP_ID_HERE") Dim bidModifier As Double = Double.Parse("INSERT_ADGROUP_BID_MODIFIER_HERE") codeExample.Run(New AdWordsUser, adGroupId, bidModifier) Catch e As Exception Console.WriteLine("An exception occurred while running this code example. {0}", ExampleUtilities.FormatException(e)) End Try End Sub ''' <summary> ''' Returns a description about the code example. ''' </summary> Public Overrides ReadOnly Property Description() As String Get Return "This code example illustrates how to add ad group level mobile bid" & " modifier override." End Get End Property ''' <summary> ''' Runs the code example. ''' </summary> ''' <param name="user">The AdWords user.</param> ''' <param name="adGroupId">Id of the adgroup for which bid modifier is ''' set.</param> ''' <param name="bidModifier">The mobile bid modifier for adgroup</param> Public Sub Run(ByVal user As AdWordsUser, ByVal adGroupId As Long, ByVal bidModifier As Double) Using adGroupBidModifierService As AdGroupBidModifierService = CType( user.GetService( AdWordsService.v201809.AdGroupBidModifierService), AdGroupBidModifierService) ' Mobile criterion ID. Dim criterionId As Long = 30001 ' Create the adgroup bid modifier. Dim adGroupBidModifier As New AdGroupBidModifier() adGroupBidModifier.bidModifier = bidModifier adGroupBidModifier.adGroupId = adGroupId Dim platform As New Platform() platform.id = criterionId adGroupBidModifier.criterion = platform Dim operation As New AdGroupBidModifierOperation() operation.operator = [Operator].ADD operation.operand = adGroupBidModifier Try ' Add ad group level mobile bid modifier. Dim retval As AdGroupBidModifierReturnValue = adGroupBidModifierService.mutate( New AdGroupBidModifierOperation() {operation}) ' Display the results. If Not retval Is Nothing AndAlso Not retval.value Is Nothing AndAlso retval.value.Length > 0 Then Dim newBidModifier As AdGroupBidModifier = retval.value(0) Console.WriteLine( "AdGroup ID {0}, Criterion ID {1} was updated with ad group " & "level modifier: {2}", newBidModifier.adGroupId, newBidModifier.criterion.id, newBidModifier.bidModifier) Else Console.WriteLine("No bid modifiers were added to the adgroup.") End If Catch e As Exception Throw New _ System.ApplicationException("Failed to add bid modifiers to adgroup.", e) End Try End Using End Sub End Class End Namespace
Add a page feed specifying URLs for a DSA campaign
' Copyright 2018 Google LLC ' ' Licensed under the Apache License, Version 2.0 (the "License") ' you may not use this file except in compliance with the License. ' You may obtain a copy of the License at ' ' http:'www.apache.org/licenses/LICENSE-2.0 ' ' Unless required by applicable law or agreed to in writing, software ' distributed under the License is distributed on an "AS IS" BASIS, ' WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ' See the License for the specific language governing permissions and ' limitations under the License. Imports Google.Api.Ads.AdWords.Lib Imports Google.Api.Ads.AdWords.v201809 Namespace Google.Api.Ads.AdWords.Examples.VB.v201809 ''' <summary> ''' This code example adds a page feed to specify precisely which URLs to use with your ''' Dynamic Search Ads campaign. To create a Dynamic Search Ads campaign, run ''' AddDynamicSearchAdsCampaign.vb. To get campaigns, run GetCampaigns.vb. ''' </summary> Public Class AddDynamicPageFeed Inherits ExampleBase ''' <summary> ''' The criterion type to be used for DSA page feeds. ''' </summary> ''' <remarks>DSA page feeds use criterionType field instead of the placeholderType field ''' unlike most other feed types.</remarks> Private Const DSA_PAGE_FEED_CRITERION_TYPE As Integer = 61 ''' <summary> ''' ID that corresponds to the page URLs. ''' </summary> Private Const DSA_PAGE_URLS_FIELD_ID As Integer = 1 ''' <summary> ''' ID that corresponds to the labels. ''' </summary> Private Const DSA_LABEL_FIELD_ID As Integer = 2 ''' <summary> ''' Class to keep track of DSA page feed details. ''' </summary> Private Class DSAFeedDetails Dim feedIdField As Long Dim urlAttributeIdField As Long Dim labelAttributeIdField As Long Public Property FeedId As Long Get Return feedIdField End Get Set(ByVal value As Long) feedIdField = value End Set End Property Public Property UrlAttributeId As Long Get Return urlAttributeIdField End Get Set(ByVal value As Long) urlAttributeIdField = value End Set End Property Public Property LabelAttributeId As Long Get Return labelAttributeIdField End Get Set(ByVal value As Long) labelAttributeIdField = value End Set End Property End Class ''' <summary> ''' Main method, to run this code example as a standalone application. ''' </summary> ''' <param name="args">The command line arguments.</param> Public Shared Sub Main(ByVal args As String()) Dim codeExample As New AddDynamicSearchAdsCampaign Console.WriteLine(codeExample.Description) Try codeExample.Run(New AdWordsUser) Catch e As Exception Console.WriteLine("An exception occurred while running this code example. {0}", ExampleUtilities.FormatException(e)) End Try End Sub ''' <summary> ''' Returns a description about the code example. ''' </summary> Public Overrides ReadOnly Property Description() As String Get Return _ "This code example adds a page feed to specify precisely which URLs to use " & "with your Dynamic Search Ads campaign. To create a Dynamic Search Ads " & "campaign, run AddDynamicSearchAdsCampaign.vb. To get campaigns, run " & "GetCampaigns.vb." End Get End Property ''' <summary> ''' Runs the code example. ''' </summary> ''' <param name="user">The AdWords user.</param> Public Sub Run(ByVal user As AdWordsUser, ByVal campaignId As Long, ByVal adgroupId As Long) Dim dsaPageUrlLabel As String = "discounts" Try ' Get the page feed details. This code example creates a new feed, but you can ' fetch and re-use an existing feed. Dim feedDetails As DSAFeedDetails = CreateFeed(user) CreateFeedMapping(user, feedDetails) CreateFeedItems(user, feedDetails, dsaPageUrlLabel) ' Associate the page feed with the campaign. UpdateCampaignDsaSetting(user, campaignId, feedDetails.FeedId) ' Optional: Target Web pages matching the feed's label in the ad group. AddDsaTargeting(user, adgroupId, dsaPageUrlLabel) Console.WriteLine("Dynamic page feed setup is complete for campaign ID '{0}'.", campaignId) Catch e As Exception Throw _ New System.ApplicationException( "Failed to setup dynamic page feed for campaign.", e) End Try End Sub ''' <summary> ''' Creates the feed for DSA page URLs. ''' </summary> ''' <param name="user">The AdWords User.</param> ''' <returns>The feed details.</returns> Private Function CreateFeed(ByVal user As AdWordsUser) As DSAFeedDetails Using feedService As FeedService = CType( user.GetService( AdWordsService.v201809.FeedService), FeedService) ' Create attributes. Dim urlAttribute As New FeedAttribute() urlAttribute.type = FeedAttributeType.URL_LIST urlAttribute.name = "Page URL" Dim labelAttribute As New FeedAttribute() labelAttribute.type = FeedAttributeType.STRING_LIST labelAttribute.name = "Label" ' Create the feed. Dim sitelinksFeed As New Feed() sitelinksFeed.name = "DSA Feed " + ExampleUtilities.GetRandomString() sitelinksFeed.attributes = New FeedAttribute() {urlAttribute, labelAttribute} sitelinksFeed.origin = FeedOrigin.USER ' Create operation. Dim operation As New FeedOperation() operation.operand = sitelinksFeed operation.operator = [Operator].ADD ' Add the feed. Dim result As FeedReturnValue = feedService.mutate(New FeedOperation() {operation}) Dim savedFeed As Feed = result.value(0) Dim retval As New DSAFeedDetails retval.FeedId = savedFeed.id retval.UrlAttributeId = savedFeed.attributes(0).id retval.LabelAttributeId = savedFeed.attributes(1).id Return retval End Using End Function ''' <summary> ''' Creates the feed mapping for DSA page feeds. ''' </summary> ''' <param name="user">The AdWords user.</param> ''' <param name="feedDetails">The feed details.</param> Private Sub CreateFeedMapping(ByVal user As AdWordsUser, ByVal feedDetails As DSAFeedDetails) Using feedMappingService As FeedMappingService = CType( user.GetService( AdWordsService.v201809.FeedMappingService), FeedMappingService) ' Map the FeedAttributeIds to the fieldId constants. Dim urlFieldMapping As New AttributeFieldMapping() urlFieldMapping.feedAttributeId = feedDetails.UrlAttributeId urlFieldMapping.fieldId = DSA_PAGE_URLS_FIELD_ID Dim labelFieldMapping As New AttributeFieldMapping() labelFieldMapping.feedAttributeId = feedDetails.LabelAttributeId labelFieldMapping.fieldId = DSA_LABEL_FIELD_ID ' Create the fieldMapping and operation. Dim feedMapping As New FeedMapping() feedMapping.criterionType = DSA_PAGE_FEED_CRITERION_TYPE feedMapping.feedId = feedDetails.FeedId feedMapping.attributeFieldMappings = New AttributeFieldMapping() { _ urlFieldMapping, labelFieldMapping } Dim operation As New FeedMappingOperation() operation.operand = feedMapping operation.operator = [Operator].ADD ' Add the field mapping. feedMappingService.mutate(New FeedMappingOperation() {operation}) End Using End Sub ''' <summary> ''' Creates the page URLs in the DSA page feed. ''' </summary> ''' <param name="user">The AdWords user.</param> ''' <param name="feedDetails">The feed details.</param> ''' <param name="labelName">The pagefeed url label.</param> Private Sub CreateFeedItems(ByVal user As AdWordsUser, ByVal feedDetails As DSAFeedDetails, ByVal labelName As String) Using feedItemService As FeedItemService = CType( user.GetService( AdWordsService.v201809.FeedItemService), FeedItemService) Dim rentalCarsUrl As String = "http://www.example.com/discounts/rental-cars" Dim hotelDealsUrl As String = "http://www.example.com/discounts/hotel-deals" Dim flightDealsUrl As String = "http://www.example.com/discounts/flight-deals" Dim operations() As FeedItemOperation = { _ CreateDsaUrlAddOperation(feedDetails, rentalCarsUrl, labelName), CreateDsaUrlAddOperation(feedDetails, hotelDealsUrl, labelName), CreateDsaUrlAddOperation(feedDetails, flightDealsUrl, labelName) } feedItemService.mutate(operations) End Using End Sub ''' <summary> ''' Creates the DSA URL add operation. ''' </summary> ''' <param name="feedDetails">The page feed details.</param> ''' <param name="url">The DSA page feed URL.</param> ''' <param name="label">DSA page feed label.</param> ''' <returns>The DSA URL add operation.</returns> Private Function CreateDsaUrlAddOperation(ByVal feedDetails As DSAFeedDetails, ByVal url As String, ByVal label As String) _ As FeedItemOperation ' Create the FeedItemAttributeValues for our text values. Dim urlAttributeValue As New FeedItemAttributeValue() urlAttributeValue.feedAttributeId = feedDetails.UrlAttributeId ' See https://support.google.com/adwords/answer/7166527 for page feed URL ' recommendations and rules. urlAttributeValue.stringValues = New String() {url} Dim labelAttributeValue As New FeedItemAttributeValue() labelAttributeValue.feedAttributeId = feedDetails.LabelAttributeId labelAttributeValue.stringValues = New String() {label} ' Create the feed item and operation. Dim item As New FeedItem() item.feedId = feedDetails.FeedId item.attributeValues = New FeedItemAttributeValue() { _ urlAttributeValue, labelAttributeValue } Dim operation As New FeedItemOperation() operation.operand = item operation.operator = [Operator].ADD Return operation End Function ''' <summary> ''' Updates the campaign DSA setting to add DSA pagefeeds. ''' </summary> ''' <param name="user">The AdWords user.</param> ''' <param name="campaignId">The Campaign ID.</param> ''' <param name="feedId">The page feed ID.</param> Private Sub UpdateCampaignDsaSetting(ByVal user As AdWordsUser, ByVal campaignId As Long, ByVal feedId As Long) Using campaignService As CampaignService = CType( user.GetService( AdWordsService.v201809.CampaignService), CampaignService) Dim selector As New Selector() selector.fields = New String() {Campaign.Fields.Id, Campaign.Fields.Settings} selector.predicates = New Predicate() { _ Predicate.Equals(Campaign.Fields.Id, campaignId) } selector.paging = Paging.Default Dim page As CampaignPage = campaignService.get(selector) If page Is Nothing Or page.entries Is Nothing Or page.entries.Length = 0 Then Throw New System.ApplicationException( String.Format( "Failed to retrieve campaign with ID = {0}.", campaignId)) End If Dim selectedCampaign As Campaign = page.entries(0) If selectedCampaign.settings Is Nothing Then Throw New System.ApplicationException("This is not a DSA campaign.") End If Dim dsaSetting As DynamicSearchAdsSetting = Nothing Dim campaignSettings() As Setting = selectedCampaign.settings For i As Integer = 0 To selectedCampaign.settings.Length - 1 Dim setting As Setting = campaignSettings(i) If TypeOf setting Is DynamicSearchAdsSetting Then dsaSetting = CType(setting, DynamicSearchAdsSetting) Exit For End If Next If dsaSetting Is Nothing Then Throw New System.ApplicationException("This is not a DSA campaign.") End If ' Use a page feed to specify precisely which URLs to use with your ' Dynamic Search Ads. dsaSetting.pageFeed = New PageFeed() dsaSetting.pageFeed.feedIds = New Long() { _ feedId } ' Optional: Specify whether only the supplied URLs should be used with your ' Dynamic Search Ads. dsaSetting.useSuppliedUrlsOnly = True Dim campaignToUpdate As New Campaign() campaignToUpdate.id = campaignId campaignToUpdate.settings = campaignSettings Dim operation As New CampaignOperation() operation.operand = campaignToUpdate operation.operator = [Operator].SET Try Dim retval As CampaignReturnValue = campaignService.mutate( New CampaignOperation() {operation}) Console.WriteLine( "DSA page feed for campaign ID '{0}' was updated with feed ID '{1}'.", campaignToUpdate.id, feedId) Catch e As Exception Throw _ New System.ApplicationException("Failed to set page feed for campaign.", e) End Try End Using End Sub ''' <summary> ''' Set custom targeting for the page feed URLs based on a list of labels. ''' </summary> ''' <param name="user">The AdWords user.</param> ''' <param name="adGroupId">Ad group ID.</param> ''' <param name="labelName">The label name.</param> ''' <returns>The newly created webpage criterion.</returns> Private Function AddDsaTargeting(ByVal user As AdWordsUser, ByVal adgroupId As Long, ByVal labelName As String) As BiddableAdGroupCriterion Using adGroupCriterionService As AdGroupCriterionService = CType( user.GetService( AdWordsService.v201809.AdGroupCriterionService), AdGroupCriterionService) ' Create a webpage criterion. Dim webpage As New Webpage() Dim parameter As New WebpageParameter() parameter.criterionName = "Test criterion" webpage.parameter = parameter ' Add a condition for label=specified_label_name. Dim condition As New WebpageCondition() condition.operand = WebpageConditionOperand.CUSTOM_LABEL condition.argument = labelName parameter.conditions = New WebpageCondition() {condition} Dim criterion As New BiddableAdGroupCriterion() criterion.adGroupId = adgroupId criterion.criterion = webpage ' Set a custom bid for this criterion. Dim biddingStrategyConfiguration As New BiddingStrategyConfiguration() Dim cpcBid As New CpcBid cpcBid.bid = New Money() cpcBid.bid.microAmount = 1500000 biddingStrategyConfiguration.bids = New Bids() {cpcBid} criterion.biddingStrategyConfiguration = biddingStrategyConfiguration Dim operation As New AdGroupCriterionOperation() operation.operand = criterion operation.operator = [Operator].ADD Try Dim retval As AdGroupCriterionReturnValue = adGroupCriterionService.mutate( New AdGroupCriterionOperation() {operation}) Dim newCriterion As BiddableAdGroupCriterion = CType(retval.value(0), BiddableAdGroupCriterion) Console.WriteLine( "Web page criterion with ID = {0} and status = {1} was created.", newCriterion.criterion.id, newCriterion.userStatus) Return newCriterion Catch e As Exception Throw _ New System.ApplicationException("Failed to create webpage criterion for " + "custom page feed label.", e) End Try End Using End Function End Class End Namespace
Add a DSA campaign
' Copyright 2018 Google LLC ' ' Licensed under the Apache License, Version 2.0 (the "License") ' you may not use this file except in compliance with the License. ' You may obtain a copy of the License at ' ' http:'www.apache.org/licenses/LICENSE-2.0 ' ' Unless required by applicable law or agreed to in writing, software ' distributed under the License is distributed on an "AS IS" BASIS, ' WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ' See the License for the specific language governing permissions and ' limitations under the License. Imports Google.Api.Ads.AdWords.Lib Imports Google.Api.Ads.AdWords.v201809 Namespace Google.Api.Ads.AdWords.Examples.VB.v201809 ''' <summary> ''' This code example adds a Dynamic Search Ads campaign. To get campaigns, run GetCampaigns.vb. ''' </summary> Public Class AddDynamicSearchAdsCampaign Inherits ExampleBase ''' <summary> ''' Main method, to run this code example as a standalone application. ''' </summary> ''' <param name="args">The command line arguments.</param> Public Shared Sub Main(ByVal args As String()) Dim codeExample As New AddDynamicSearchAdsCampaign Console.WriteLine(codeExample.Description) Try codeExample.Run(New AdWordsUser) Catch e As Exception Console.WriteLine("An exception occurred while running this code example. {0}", ExampleUtilities.FormatException(e)) End Try End Sub ''' <summary> ''' Returns a description about the code example. ''' </summary> Public Overrides ReadOnly Property Description() As String Get Return "This code example adds a Dynamic Search Ads campaign. To get campaigns, " + "run GetCampaigns.vb." End Get End Property ''' <summary> ''' Runs the code example. ''' </summary> ''' <param name="user">The AdWords user.</param> Public Sub Run(ByVal user As AdWordsUser) Try Dim budget As Budget = CreateBudget(user) Dim campaign As Campaign = CreateCampaign(user, budget) Dim adGroup As AdGroup = CreateAdGroup(user, campaign.id) Dim expandedDSA As ExpandedDynamicSearchAd = CreateExpandedDSA(user, adGroup.id) Console.WriteLine("Dynamic Search Ads campaign setup is complete.") Catch e As Exception Throw _ New System.ApplicationException("Failed to setup Dynamic Search Ads campaign.", e) End Try End Sub ''' <summary> ''' Creates the budget. ''' </summary> ''' <param name="user">The AdWords user.</param> ''' <returns>The newly created budget.</returns> Private Function CreateBudget(ByVal user As AdWordsUser) As Budget ' Get the BudgetService. Using budgetService As BudgetService = CType( user.GetService( AdWordsService.v201809.BudgetService), BudgetService) ' Create the campaign budget. Dim budget As New Budget() budget.name = "Interplanetary Cruise Budget #" + ExampleUtilities.GetRandomString() budget.deliveryMethod = BudgetBudgetDeliveryMethod.STANDARD budget.amount = New Money() budget.amount.microAmount = 500000 Dim budgetOperation As New BudgetOperation() budgetOperation.operator = [Operator].ADD budgetOperation.operand = budget Try Dim budgetRetval As BudgetReturnValue = budgetService.mutate( New BudgetOperation() {budgetOperation}) Dim newBudget As Budget = budgetRetval.value(0) Console.WriteLine("Budget with ID = '{0}' and name = '{1}' was created.", newBudget.budgetId, newBudget.name) Return newBudget Catch e As Exception Throw New System.ApplicationException("Failed to add budget.", e) End Try End Using End Function ''' <summary> ''' Creates the campaign. ''' </summary> ''' <param name="user">The AdWords user.</param> ''' <param name="budget">The campaign budget.</param> ''' <returns>The newly created campaign.</returns> Private Function CreateCampaign(ByVal user As AdWordsUser, ByVal budget As Budget) _ As Campaign Using campaignService As CampaignService = CType( user.GetService( AdWordsService.v201809.CampaignService), CampaignService) ' Create a Dynamic Search Ads campaign. Dim campaign As New Campaign() campaign.name = "Interplanetary Cruise #" + ExampleUtilities.GetRandomString() campaign.advertisingChannelType = AdvertisingChannelType.SEARCH ' Recommendation: Set the campaign to PAUSED when creating it to prevent ' the ads from immediately serving. Set to ENABLED once you've added ' targeting and the ads are ready to serve. campaign.status = CampaignStatus.PAUSED Dim biddingConfig As New BiddingStrategyConfiguration() biddingConfig.biddingStrategyType = BiddingStrategyType.MANUAL_CPC campaign.biddingStrategyConfiguration = biddingConfig campaign.budget = New Budget() campaign.budget.budgetId = budget.budgetId ' Required: Set the campaign's Dynamic Search Ads settings. Dim dynamicSearchAdsSetting As New DynamicSearchAdsSetting() ' Required: Set the domain name And language. dynamicSearchAdsSetting.domainName = "example.com" dynamicSearchAdsSetting.languageCode = "en" ' Set the campaign settings. campaign.settings = New Setting() {dynamicSearchAdsSetting} ' Optional: Set the start date. campaign.startDate = DateTime.Now.AddDays(1).ToString("yyyyMMdd") ' Optional: Set the end date. campaign.endDate = DateTime.Now.AddYears(1).ToString("yyyyMMdd") ' Create the operation. Dim operation As New CampaignOperation() operation.operator = [Operator].ADD operation.operand = campaign Try ' Add the campaign. Dim retval As CampaignReturnValue = campaignService.mutate( New CampaignOperation() {operation}) ' Display the results. Dim newCampaign As Campaign = retval.value(0) Console.WriteLine("Campaign with id = '{0}' and name = '{1}' was added.", newCampaign.id, newCampaign.name) Return newCampaign Catch e As Exception Throw New System.ApplicationException("Failed to add campaigns.", e) End Try End Using End Function ''' <summary> ''' Creates an ad group. ''' </summary> ''' <param name="user">The AdWords user.</param> ''' <param name="campaignId">The campaign ID.</param> ''' <returns>the newly created ad group.</returns> Private Function CreateAdGroup(ByVal user As AdWordsUser, ByVal campaignId As Long) _ As AdGroup Using adGroupService As AdGroupService = CType( user.GetService( AdWordsService.v201809.AdGroupService), AdGroupService) ' Create the ad group. Dim adGroup As New AdGroup() ' Required: set the ad group's type to Dynamic Search Ads. adGroup.adGroupType = AdGroupType.SEARCH_DYNAMIC_ADS adGroup.name = String.Format("Earth to Mars Cruises #{0}", ExampleUtilities.GetRandomString()) adGroup.campaignId = campaignId adGroup.status = AdGroupStatus.PAUSED ' Set the ad group bids. Dim biddingConfig As New BiddingStrategyConfiguration() Dim cpcBid As New CpcBid() cpcBid.bid = New Money() cpcBid.bid.microAmount = 3000000 biddingConfig.bids = New Bids() {cpcBid} adGroup.biddingStrategyConfiguration = biddingConfig ' Create the operation. Dim Operation As New AdGroupOperation() Operation.operator = [Operator].ADD Operation.operand = adGroup Try ' Create the ad group. Dim retVal As AdGroupReturnValue = adGroupService.mutate( New AdGroupOperation() {Operation}) ' Display the results. Dim newAdGroup As AdGroup = retVal.value(0) Console.WriteLine("Ad group with id = '{0}' and name = '{1}' was created.", newAdGroup.id, newAdGroup.name) Return newAdGroup Catch e As Exception Throw New System.ApplicationException("Failed to create ad group.", e) End Try End Using End Function ''' <summary> ''' Creates the expanded Dynamic Search Ad. ''' </summary> ''' <param name="user">The AdWords user.</param> ''' <param name="adGroupId">ID of the ad group in which ad is created.</param> ''' <returns>The newly created ad.</returns> Private Function CreateExpandedDSA(ByVal user As AdWordsUser, ByVal adGroupId As Long) _ As ExpandedDynamicSearchAd Using adGroupAdService As AdGroupAdService = CType( user.GetService( AdWordsService.v201809.AdGroupAdService), AdGroupAdService) ' Create an Expanded Dynamic Search Ad. This ad will have its headline, display URL ' and final URL auto-generated at serving time according to domain name specific ' information provided by DynamicSearchAdsSetting at the campaign level. Dim expandedDSA As New ExpandedDynamicSearchAd() ' Set the ad description. expandedDSA.description = "Buy your tickets now!" expandedDSA.description2 = "Discount ends soon" ' Create the ad group ad. Dim adGroupAd As New AdGroupAd() adGroupAd.adGroupId = adGroupId adGroupAd.ad = expandedDSA ' Optional: Set the status. adGroupAd.status = AdGroupAdStatus.PAUSED ' Create the operation. Dim operation As New AdGroupAdOperation() operation.operator = [Operator].ADD operation.operand = adGroupAd Try ' Create the ads. Dim retval As AdGroupAdReturnValue = adGroupAdService.mutate( New AdGroupAdOperation() {operation}) ' Display the results. Dim newAdGroupAd As AdGroupAd = retval.value(0) Dim newAd As ExpandedDynamicSearchAd = CType(newAdGroupAd.ad, ExpandedDynamicSearchAd) Console.WriteLine( "Expanded Dynamic Search Ad with ID '{0}' and description '{1}' " + "was added.", newAd.id, newAd.description) Return newAd Catch e As Exception Throw _ New System.ApplicationException( "Failed to create Expanded Dynamic Search Ad.", e) End Try End Using End Function ''' <summary> ''' Adds a web page criteria to target Dynamic Search Ads. ''' </summary> ''' <param name="user">The AdWords user.</param> ''' <param name="adGroupId">The ad group ID.</param> ''' <returns>The newly created web page criterion.</returns> Private Function AddWebPageCriteria(ByVal user As AdWordsUser, ByVal adGroupId As Long) _ As BiddableAdGroupCriterion Using adGroupCriterionService As AdGroupCriterionService = CType( user.GetService( AdWordsService.v201809.AdGroupCriterionService), AdGroupCriterionService) ' Create a webpage criterion for special offers for mars cruise. Dim param As New WebpageParameter() param.criterionName = "Special offers for mars" Dim urlCondition As New WebpageCondition() urlCondition.operand = WebpageConditionOperand.URL urlCondition.argument = "/marscruise/special" Dim titleCondition As New WebpageCondition() titleCondition.operand = WebpageConditionOperand.PAGE_TITLE titleCondition.argument = "Special Offer" param.conditions = New WebpageCondition() {urlCondition, titleCondition} Dim Webpage As New Webpage() Webpage.parameter = param ' Create biddable ad group criterion. Dim biddableAdGroupCriterion As New BiddableAdGroupCriterion() biddableAdGroupCriterion.adGroupId = adGroupId biddableAdGroupCriterion.criterion = Webpage biddableAdGroupCriterion.userStatus = UserStatus.PAUSED ' Optional: Set a custom bid. Dim biddingStrategyConfiguration As New BiddingStrategyConfiguration() Dim bid As New CpcBid() bid.bid = New Money() bid.bid.microAmount = 10000000L biddingStrategyConfiguration.bids = New Bids() {bid} biddableAdGroupCriterion.biddingStrategyConfiguration = biddingStrategyConfiguration ' Create operations. Dim operation As New AdGroupCriterionOperation() operation.operator = [Operator].ADD operation.operand = biddableAdGroupCriterion Try Dim result As AdGroupCriterionReturnValue = adGroupCriterionService.mutate( New AdGroupCriterionOperation() {operation}) Dim newCriterion As BiddableAdGroupCriterion = CType(result.value(0), BiddableAdGroupCriterion) Console.WriteLine("Webpage criterion with '{0}' was added to ad group ID " & "'{1}'.", newCriterion.adGroupId, newCriterion.criterion.id) Return newCriterion Catch e As Exception Throw New System.ApplicationException("Failed to create webpage criterion.", e) End Try End Using End Function End Class End Namespace
Add an expanded text ad with Upgraded URLs
' Copyright 2018 Google LLC ' ' Licensed under the Apache License, Version 2.0 (the "License") ' you may not use this file except in compliance with the License. ' You may obtain a copy of the License at ' ' http:'www.apache.org/licenses/LICENSE-2.0 ' ' Unless required by applicable law or agreed to in writing, software ' distributed under the License is distributed on an "AS IS" BASIS, ' WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ' See the License for the specific language governing permissions and ' limitations under the License. Imports Google.Api.Ads.AdWords.Lib Imports Google.Api.Ads.AdWords.v201809 Namespace Google.Api.Ads.AdWords.Examples.VB.v201809 ''' <summary> ''' This code example adds an expanded text ad that uses advanced features of upgraded ''' URLs. ''' </summary> Public Class AddExpandedTextAdWithUpgradedUrls Inherits ExampleBase ''' <summary> ''' Main method, to run this code example as a standalone application. ''' </summary> ''' <param name="args">The command line arguments.</param> Public Shared Sub Main(ByVal args As String()) Dim codeExample As New AddExpandedTextAdWithUpgradedUrls Console.WriteLine(codeExample.Description) Try Dim adGroupId As Long = Long.Parse("INSERT_ADGROUP_ID_HERE") codeExample.Run(New AdWordsUser, adGroupId) Catch e As Exception Console.WriteLine("An exception occurred while running this code example. {0}", ExampleUtilities.FormatException(e)) End Try End Sub ''' <summary> ''' Returns a description about the code example. ''' </summary> Public Overrides ReadOnly Property Description() As String Get Return _ "This code example adds an expanded text ad that uses advanced features of " & "upgraded URLs." End Get End Property ''' <summary> ''' Runs the code example. ''' </summary> ''' <param name="user">The AdWords user.</param> ''' <param name="adGroupId">ID of the adgroup to which ad is added.</param> Public Sub Run(ByVal user As AdWordsUser, ByVal adGroupId As Long) Using adGroupAdService As AdGroupAdService = CType( user.GetService( AdWordsService.v201809.AdGroupAdService), AdGroupAdService) ' Create the expanded text ad. Dim expandedTextAd As New ExpandedTextAd expandedTextAd.headlinePart1 = "Luxury Cruise to Mars" expandedTextAd.headlinePart2 = "Visit the Red Planet in style." expandedTextAd.description = "Low-gravity fun for everyone!" ' Specify a tracking URL for 3rd party tracking provider. You may ' specify one at customer, campaign, ad group, ad, criterion or ' feed item levels. expandedTextAd.trackingUrlTemplate = "http://tracker.example.com/?cid={_season}&promocode={_promocode}&u={lpurl}" ' Since your tracking URL has two custom parameters, provide their ' values too. This can be provided at campaign, ad group, ad, criterion ' or feed item levels. Dim seasonParameter As New CustomParameter seasonParameter.key = "season" seasonParameter.value = "christmas" Dim promoCodeParameter As New CustomParameter promoCodeParameter.key = "promocode" promoCodeParameter.value = "NYC123" expandedTextAd.urlCustomParameters = New CustomParameters expandedTextAd.urlCustomParameters.parameters = New CustomParameter() {seasonParameter, promoCodeParameter} ' Specify a list of final URLs. This field cannot be set if URL field is ' set. This may be specified at ad, criterion and feed item levels. expandedTextAd.finalUrls = New String() { _ "http://www.example.com/cruise/space/", "http://www.example.com/locations/mars/" } ' Specify a list of final mobile URLs. This field cannot be set if URL ' field is set, or finalUrls is unset. This may be specified at ad, ' criterion and feed item levels. expandedTextAd.finalMobileUrls = New String() { _ "http://mobile.example.com/cruise/space/", "http://mobile.example.com/locations/mars/" } Dim adGroupAd As New AdGroupAd adGroupAd.adGroupId = adGroupId adGroupAd.ad = expandedTextAd ' Optional: Set the status. adGroupAd.status = AdGroupAdStatus.PAUSED ' Create the operation. Dim operation As New AdGroupAdOperation operation.operator = [Operator].ADD operation.operand = adGroupAd Dim retVal As AdGroupAdReturnValue = Nothing Try ' Create the ads. retVal = adGroupAdService.mutate(New AdGroupAdOperation() {operation}) ' Display the results. If Not (retVal Is Nothing) AndAlso Not (retVal.value Is Nothing) Then Dim newExpandedTextAd As ExpandedTextAd = CType(retVal.value(0).ad, ExpandedTextAd) Console.WriteLine( "Expanded text ad with ID '{0}' and headline '{1} - {2}' was added.", newExpandedTextAd.id, newExpandedTextAd.headlinePart1, newExpandedTextAd.headlinePart2) Console.WriteLine("Upgraded URL properties:") Console.WriteLine(" Final URLs: {0}", String.Join(", ", newExpandedTextAd.finalUrls)) Console.WriteLine(" Final Mobile URLS: {0}", String.Join(", ", newExpandedTextAd.finalMobileUrls)) Console.WriteLine(" Tracking URL template: {0}", newExpandedTextAd.trackingUrlTemplate) Dim parameters As New List(Of String) For Each customParam As CustomParameter In _ newExpandedTextAd.urlCustomParameters.parameters parameters.Add(String.Format("{0}={1}", customParam.key, customParam.value)) Next Console.WriteLine(" Custom parameters: {0}", String.Join(", ", parameters.ToArray())) Else Console.WriteLine("No expanded text ads were created.") End If Catch e As Exception Throw _ New System.ApplicationException( "Failed to add expanded text ad to adgroup.", e) End Try End Using End Sub End Class End Namespace
Add a Gmail ad to an ad group
' Copyright 2018 Google LLC ' ' Licensed under the Apache License, Version 2.0 (the "License") ' you may not use this file except in compliance with the License. ' You may obtain a copy of the License at ' ' http:'www.apache.org/licenses/LICENSE-2.0 ' ' Unless required by applicable law or agreed to in writing, software ' distributed under the License is distributed on an "AS IS" BASIS, ' WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ' See the License for the specific language governing permissions and ' limitations under the License. Imports Google.Api.Ads.AdWords.Lib Imports Google.Api.Ads.AdWords.v201809 Imports Google.Api.Ads.Common.Util Namespace Google.Api.Ads.AdWords.Examples.VB.v201809 ''' <summary> ''' This code example adds a Gmail ad to a given ad group. The ad group's ''' campaign needs to have an AdvertisingChannelType of DISPLAY and ''' AdvertisingChannelSubType of DISPLAY_GMAIL_AD. ''' To get ad groups, run GetAdGroups.cs. ''' </summary> Public Class AddGmailAd Inherits ExampleBase ''' <summary> ''' Main method, to run this code example as a standalone application. ''' </summary> ''' <param name="args">The command line arguments.</param> Public Shared Sub Main(ByVal args As String()) Dim codeExample As New AddGmailAd Console.WriteLine(codeExample.Description) Try Dim adGroupId As Long = Long.Parse("INSERT_ADGROUP_ID_HERE") codeExample.Run(New AdWordsUser(), adGroupId) Catch e As Exception Console.WriteLine("An exception occurred while running this code example. {0}", ExampleUtilities.FormatException(e)) End Try End Sub ''' <summary> ''' Returns a description about the code example. ''' </summary> Public Overrides ReadOnly Property Description() As String Get Return _ "This code example adds a Gmail ad to a given ad group. The ad group's " & "campaign needs to have an AdvertisingChannelType of DISPLAY and " & "AdvertisingChannelSubType of DISPLAY_GMAIL_AD. To get ad groups, run " & "GetAdGroups.vb." End Get End Property ''' <summary> ''' Runs the code example. ''' </summary> ''' <param name="user">The AdWords user.</param> ''' <param name="adGroupId">Id of the adgroup to which ads are added.</param> Public Sub Run(ByVal user As AdWordsUser, ByVal adGroupId As Long) Using adGroupAdService As AdGroupAdService = DirectCast( user.GetService( AdWordsService.v201809.AdGroupAdService), AdGroupAdService) ' This ad format does not allow the creation of an image using the ' Image.data field. An image must first be created using the ' MediaService, and Image.mediaId must be populated when creating the ' ad. Dim logoImage As New Image() logoImage.mediaId = UploadImage(user, "https://goo.gl/mtt54n").mediaId Dim marketingImage As New Image() marketingImage.mediaId = UploadImage(user, "https://goo.gl/3b9Wfh").mediaId Dim teaser As New GmailTeaser() teaser.headline = "Dream" teaser.description = "Create your own adventure" teaser.businessName = "Interplanetary Ships" teaser.logoImage = logoImage ' Creates a Gmail ad. Dim gmailAd As New GmailAd() gmailAd.teaser = teaser gmailAd.marketingImage = marketingImage gmailAd.marketingImageHeadline = "Travel" gmailAd.marketingImageDescription = "Take to the skies!" gmailAd.finalUrls = New String() {"http://www.example.com/"} ' Creates ad group ad for the Gmail ad. Dim adGroupAd As New AdGroupAd() adGroupAd.adGroupId = adGroupId adGroupAd.ad = gmailAd ' Optional: Set additional settings. adGroupAd.status = AdGroupAdStatus.PAUSED ' Creates ad group ad operation and add it to the list. Dim operation As New AdGroupAdOperation() operation.operand = adGroupAd operation.operator = [Operator].ADD Try ' Adds a responsive display ad on the server. Dim result As AdGroupAdReturnValue = adGroupAdService.mutate( New AdGroupAdOperation() {operation}) If result Is Nothing Or result.value Is Nothing Or result.value.Length = 0 Then Console.WriteLine("No Gmail ads were added.") Return End If ' Prints out some information for each created Gmail ad. For Each newAdGroupAd As AdGroupAd In result.value Console.WriteLine("A Gmail ad with ID {0} and headline '{1}' was added.", newAdGroupAd.ad.id, DirectCast(newAdGroupAd.ad, GmailAd).teaser.headline) Next Catch e As Exception Throw New System.ApplicationException("Failed to add Gmail ads.", e) End Try End Using End Sub ''' <summary> ''' Uploads an image to the server. ''' </summary> ''' <param name="user">The AdWords user.</param> ''' <param name="url">The URL of image to upload.</param> ''' <returns>The created image.</returns> Private Shared Function UploadImage(ByVal user As AdWordsUser, ByVal url As String) As Media Using mediaService As MediaService = DirectCast( user.GetService( AdWordsService.v201809.MediaService), MediaService) Dim image As New Image() image.data = MediaUtilities.GetAssetDataFromUrl(url, user.Config) image.type = MediaMediaType.IMAGE Return mediaService.upload(New Media() {image})(0) End Using End Function End Class End Namespace
Add an HTML 5 ad to an ad group
' Copyright 2018 Google LLC ' ' Licensed under the Apache License, Version 2.0 (the "License") ' you may not use this file except in compliance with the License. ' You may obtain a copy of the License at ' ' http:'www.apache.org/licenses/LICENSE-2.0 ' ' Unless required by applicable law or agreed to in writing, software ' distributed under the License is distributed on an "AS IS" BASIS, ' WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ' See the License for the specific language governing permissions and ' limitations under the License. Imports Google.Api.Ads.AdWords.Lib Imports Google.Api.Ads.AdWords.v201809 Imports Google.Api.Ads.Common.Util Namespace Google.Api.Ads.AdWords.Examples.VB.v201809 ''' <summary> ''' This code example adds an HTML5 ad to a given ad group. To get ad ''' groups, run GetAdGroups.vb. ''' </summary> Public Class AddHtml5Ad Inherits ExampleBase ''' <summary> ''' Main method, to run this code example as a standalone application. ''' </summary> ''' <param name="args">The command line arguments.</param> Public Shared Sub Main(ByVal args As String()) Dim codeExample As New AddHtml5Ad Console.WriteLine(codeExample.Description) Try Dim adGroupId As Long = Long.Parse("INSERT_ADGROUP_ID_HERE") codeExample.Run(New AdWordsUser(), adGroupId) Catch e As Exception Console.WriteLine("An exception occurred while running this code example. {0}", ExampleUtilities.FormatException(e)) End Try End Sub ''' <summary> ''' Returns a description about the code example. ''' </summary> Public Overrides ReadOnly Property Description() As String Get Return "This code example adds an HTML5 ad to a given ad group. To get ad" & "groups, run GetAdGroups.vb." End Get End Property ''' <summary> ''' Runs the code example. ''' </summary> ''' <param name="user">The AdWords user.</param> ''' <param name="adGroupId">Id of the first adgroup to which ad is added.</param> Public Sub Run(ByVal user As AdWordsUser, ByVal adGroupId As Long) Using adGroupAdService As AdGroupAdService = CType( user.GetService( AdWordsService.v201809.AdGroupAdService), AdGroupAdService) ' Create the HTML5 template ad. See ' https://developers.google.com/adwords/api/docs/guides/template-ads#html5_ads ' for more details. Dim html5Ad As New TemplateAd() html5Ad.name = "Ad for HTML5" html5Ad.templateId = 419 html5Ad.finalUrls = New String() {"http://example.com/html5"} html5Ad.displayUrl = "www.example.com/html5" html5Ad.dimensions = New Dimensions() html5Ad.dimensions.width = 300 html5Ad.dimensions.height = 250 ' The HTML5 zip file contains all the HTML, CSS, and images needed for the ' HTML5 ad. For help on creating an HTML5 zip file, check out Google Web ' Designer (https://www.google.com/webdesigner/). Dim html5Zip As Byte() = MediaUtilities.GetAssetDataFromUrl("https://goo.gl/9Y7qI2", user.Config) ' Create a media bundle containing the zip file with all the HTML5 components. Dim mediaBundle As New MediaBundle() ' You may also upload an HTML5 zip using MediaService.upload() method ' set the mediaId field. See UploadMediaBundle.vb for an example on how to ' upload HTML5 zip files. mediaBundle.data = html5Zip mediaBundle.entryPoint = "carousel/index.html" mediaBundle.type = MediaMediaType.MEDIA_BUNDLE ' Create the template elements for the ad. You can refer to ' https://developers.google.com/adwords/api/docs/appendix/templateads ' for the list of available template fields. Dim adData As New TemplateElement adData.uniqueName = "adData" Dim customLayout As New TemplateElementField customLayout.name = "Custom_layout" customLayout.fieldMedia = mediaBundle customLayout.type = TemplateElementFieldType.MEDIA_BUNDLE Dim layout As New TemplateElementField layout.name = "layout" layout.fieldText = "Custom" layout.type = TemplateElementFieldType.ENUM adData.fields = New TemplateElementField() {customLayout, layout} html5Ad.templateElements = New TemplateElement() {adData} ' Create the AdGroupAd. Dim html5AdGroupAd As New AdGroupAd() html5AdGroupAd.adGroupId = adGroupId html5AdGroupAd.ad = html5Ad ' Additional properties (non-required). html5AdGroupAd.status = AdGroupAdStatus.PAUSED Dim adGroupAdOperation As New AdGroupAdOperation() adGroupAdOperation.operator = [Operator].ADD adGroupAdOperation.operand = html5AdGroupAd Try ' Add HTML5 ad. Dim result As AdGroupAdReturnValue = adGroupAdService.mutate(New AdGroupAdOperation() {adGroupAdOperation}) ' Display results. If (Not result Is Nothing) AndAlso (Not result.value Is Nothing) AndAlso (result.value.Length > 0) Then For Each adGroupAd As AdGroupAd In result.value Console.WriteLine( "New HTML5 ad with id '{0}' and display url '{1}' was added.", adGroupAd.ad.id, adGroupAd.ad.displayUrl) Next Else Console.WriteLine("No HTML5 ads were added.") End If Catch e As Exception Throw New System.ApplicationException("Failed to create HTML5 ad.", e) End Try End Using End Sub End Class End Namespace
Add a multi-asset responsive display ad to an ad group
' Copyright 2018 Google LLC ' ' Licensed under the Apache License, Version 2.0 (the "License") ' you may not use this file except in compliance with the License. ' You may obtain a copy of the License at ' ' http:'www.apache.org/licenses/LICENSE-2.0 ' ' Unless required by applicable law or agreed to in writing, software ' distributed under the License is distributed on an "AS IS" BASIS, ' WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ' See the License for the specific language governing permissions and ' limitations under the License. Imports Google.Api.Ads.AdWords.Lib Imports Google.Api.Ads.AdWords.v201809 Imports Google.Api.Ads.Common.Util Namespace Google.Api.Ads.AdWords.Examples.VB.v201809 ''' <summary> ''' This code example adds a responsive display ad (MultiAssetResponsiveDisplayAd) ''' to an ad group. Image assets are uploaded using AssetService. To get ad groups, ''' run GetAdGroups.vb. ''' </summary> Public Class AddMultiAssetResponsiveDisplayAd Inherits ExampleBase ''' <summary> ''' Main method, to run this code example as a standalone application. ''' </summary> ''' <param name="args">The command line arguments.</param> Public Shared Sub Main(ByVal args As String()) Dim codeExample As New AddMultiAssetResponsiveDisplayAd Console.WriteLine(codeExample.Description) Try Dim adGroupId As Long = Long.Parse("INSERT_ADGROUP_ID_HERE") codeExample.Run(New AdWordsUser, adGroupId) Catch e As Exception Console.WriteLine("An exception occurred while running this code example. {0}", ExampleUtilities.FormatException(e)) End Try End Sub ''' <summary> ''' Returns a description about the code example. ''' </summary> Public Overrides ReadOnly Property Description() As String Get Return "This code example adds a responsive display ad " + "(MultiAssetResponsiveDisplayAd) to an ad group. Image assets are uploaded" + " using AssetService. To get ad groups, run GetAdGroups.vb." End Get End Property ''' <summary> ''' Runs the code example. ''' </summary> ''' <param name="user">The AdWords user.</param> ''' <param name="adGroupId">ID of the adgroup to which ad is added.</param> Public Sub Run(ByVal user As AdWordsUser, ByVal adGroupId As Long) Using adGroupAdService As AdGroupAdService = CType( user.GetService( AdWordsService.v201809.AdGroupAdService), AdGroupAdService) Try ' Create the ad. Dim ad As New MultiAssetResponsiveDisplayAd() ' Text assets can be specified directly in the asset field when ' creating the ad. Dim textAsset1 As New TextAsset textAsset1.assetText = "Travel to Mars" Dim headline1 As New AssetLink headline1.asset = textAsset1 Dim textAsset2 As New TextAsset textAsset2.assetText = "Travel to Jupiter" Dim headline2 As New AssetLink headline2.asset = textAsset2 Dim textAsset3 As New TextAsset textAsset3.assetText = "Travel to Pluto" Dim headline3 As New AssetLink headline3.asset = textAsset3 ad.headlines = New AssetLink() {headline1, headline2, headline3} Dim textAsset4 As New TextAsset textAsset4.assetText = "Visit the planet in a luxury spaceship." Dim description1 As New AssetLink description1.asset = textAsset1 Dim textAsset5 As New TextAsset textAsset5.assetText = "Travel to Jupiter" Dim description2 As New AssetLink description2.asset = textAsset5 Dim textAsset6 As New TextAsset textAsset6.assetText = "Travel to Pluto" Dim description3 As New AssetLink description3.asset = textAsset6 ad.descriptions = New AssetLink() {description1, description2, description3} ad.businessName = "Galactic Luxury Cruises" Dim textAsset7 As New TextAsset textAsset7.assetText = "Travel to Pluto" Dim longHeadline As New AssetLink longHeadline.asset = textAsset7 ad.longHeadline = longHeadline ' This ad format does not allow the creation of an image asset by setting ' the asset.imageData field. An image asset must first be created using the ' AssetService, and asset.assetId must be populated when creating the ad. Dim imageAsset1 As New ImageAsset imageAsset1.assetId = UploadImageAsset(user, "https://goo.gl/3b9Wfh") Dim marketingImage As New AssetLink marketingImage.asset = imageAsset1 ad.marketingImages = New AssetLink() {marketingImage} Dim imageAsset2 As New ImageAsset imageAsset2.assetId = UploadImageAsset(user, "https://goo.gl/mtt54n") Dim squareMarketingImage As New AssetLink squareMarketingImage.asset = imageAsset2 ad.squareMarketingImages = New AssetLink() {squareMarketingImage} ad.finalUrls = New String() {"http://www.example.com"} ' Optional: set call to action text. ad.callToActionText = "Shop Now" ' Set color settings using hexadecimal values. Set allowFlexibleColor to false ' if you want your ads to render by always using your colors strictly. ad.mainColor = "#0000ff" ad.accentColor = "#ffff00" ad.allowFlexibleColor = False ' Set the format setting that the ad will be served in. ad.formatSetting = DisplayAdFormatSetting.NON_NATIVE ' Optional: set dynamic display ad settings, composed of landscape logo ' image, promotion text, And price prefix. ad.dynamicSettingsPricePrefix = "as low as" ad.dynamicSettingsPromoText = "Free shipping!" Dim imageAsset3 As New ImageAsset imageAsset3.assetId = UploadImageAsset(user, "https://goo.gl/mtt54n") Dim logoImages As New AssetLink logoImages.asset = imageAsset3 ad.logoImages = New AssetLink() {logoImages} ' Create the ad group ad. Dim adGroupAd As New AdGroupAd() adGroupAd.ad = ad adGroupAd.adGroupId = adGroupId ' Create the operation. Dim operation As New AdGroupAdOperation() operation.operand = adGroupAd operation.operator = [Operator].ADD ' Make the mutate request. Dim result As AdGroupAdReturnValue = adGroupAdService.mutate( New AdGroupAdOperation() {operation}) ' Display results. If Not (result Is Nothing) AndAlso Not (result.value Is Nothing) Then For Each newAdGroupAd As AdGroupAd In result.value Dim newAd As MultiAssetResponsiveDisplayAd = CType(newAdGroupAd.ad, MultiAssetResponsiveDisplayAd) Console.WriteLine( "Responsive display ad with ID '{0}' and long headline '{1}'" + " was added.", newAd.id, CType(newAd.longHeadline.asset, TextAsset).assetText) Next End If Catch e As Exception Throw New System.ApplicationException( "Failed to add expanded text ad to adgroup.", e) End Try End Using End Sub ''' <summary> ''' Uploads the image from the specified <paramref name="url"/>. ''' </summary> ''' <param name="user">The AdWords user.</param> ''' <param name="url">The image URL.</param> ''' <returns>ID of the uploaded image.</returns> Private Shared Function UploadImageAsset(ByVal user As AdWordsUser, ByVal url As String) _ As Long Using assetService As AssetService = CType( user.GetService( AdWordsService.v201809.AssetService), AssetService) ' Create the image asset. Dim imageAsset = New ImageAsset() ' Optional: Provide a unique friendly name to identify your asset. If you specify ' the assetName field, then both the asset name and the image being uploaded should ' be unique, and should not match another ACTIVE asset in this customer account. ' imageAsset.assetName = "Image asset " + ExampleUtilities.GetRandomString() imageAsset.imageData = MediaUtilities.GetAssetDataFromUrl(url, user.Config) ' Create the operation. Dim operation As New AssetOperation() operation.operator = [Operator].ADD operation.operand = imageAsset ' Create the asset And return the ID. Return assetService.mutate(New AssetOperation() {operation}).value(0).assetId End Using End Function End Class End Namespace
Add a responsive display ad
' Copyright 2018 Google LLC ' ' Licensed under the Apache License, Version 2.0 (the "License"); ' you may not use this file except in compliance with the License. ' You may obtain a copy of the License at ' ' http://www.apache.org/licenses/LICENSE-2.0 ' ' Unless required by applicable law or agreed to in writing, software ' distributed under the License is distributed on an "AS IS" BASIS, ' WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ' See the License for the specific language governing permissions and ' limitations under the License. Imports Google.Api.Ads.AdWords.Lib Imports Google.Api.Ads.AdWords.v201809 Imports Google.Api.Ads.Common.Util Namespace Google.Api.Ads.AdWords.Examples.VB.v201809 ''' <summary> ''' This code example adds an image representing the ad using the MediaService ''' and then adds a responsive display ad to an ad group. To get ad groups, ''' run GetAdGroups.vb. ''' </summary> Public Class AddResponsiveDisplayAd Inherits ExampleBase ''' <summary> ''' Number of items being added / updated in this code example. ''' </summary> Const NUM_ITEMS As Integer = 5 ''' <summary> ''' Main method, to run this code example as a standalone application. ''' </summary> ''' <param name="args">The command line arguments.</param> Public Shared Sub Main(ByVal args As String()) Dim codeExample As New AddResponsiveDisplayAd Console.WriteLine(codeExample.Description) Try Dim adGroupId As Long = Long.Parse("INSERT_ADGROUP_ID_HERE") codeExample.Run(New AdWordsUser, adGroupId) Catch e As Exception Console.WriteLine("An exception occurred while running this code example. {0}", ExampleUtilities.FormatException(e)) End Try End Sub ''' <summary> ''' Returns a description about the code example. ''' </summary> Public Overrides ReadOnly Property Description() As String Get Return _ "This code example adds an image representing the ad using the MediaService" & "and then adds a responsive display ad to an ad group. To get ad groups, " & "run GetAdGroups.vb." End Get End Property ''' <summary> ''' Runs the code example. ''' </summary> ''' <param name="user">The AdWords user.</param> ''' <param name="adGroupId">Id of the ad group to which ads are added. ''' </param> Public Sub Run(ByVal user As AdWordsUser, ByVal adGroupId As Long) Using adGroupAdService As AdGroupAdService = CType( user.GetService( AdWordsService.v201809.AdGroupAdService), AdGroupAdService) Try ' Create a responsive display ad. Dim responsiveDisplayAd As New ResponsiveDisplayAd() ' This ad format does not allow the creation of an image using the ' Image.data field. An image must first be created using the MediaService, ' and Image.mediaId must be populated when creating the ad. responsiveDisplayAd.marketingImage = New Image() responsiveDisplayAd.marketingImage.mediaId = UploadImage(user, "https://goo.gl/3b9Wfh") responsiveDisplayAd.shortHeadline = "Travel" responsiveDisplayAd.longHeadline = "Travel the World" responsiveDisplayAd.description = "Take to the air!" responsiveDisplayAd.businessName = "Google" responsiveDisplayAd.finalUrls = New String() {"http://www.example.com"} ' Optional: Create a square marketing image Using MediaService, And set it ' to the ad. responsiveDisplayAd.squareMarketingImage = New Image() responsiveDisplayAd.squareMarketingImage.mediaId = UploadImage(user, "https://goo.gl/mtt54n") ' Optional: Set call to action text. responsiveDisplayAd.callToActionText = "Shop Now" ' Optional: Set dynamic display ad settings, composed of landscape logo ' image, promotion text, And price prefix. responsiveDisplayAd.dynamicDisplayAdSettings = CreateDynamicDisplayAdSettings(user) ' Whitelisted accounts only Set color settings using hexadecimal values. ' Set allowFlexibleColor to false if you want your ads to render by always ' using your colors strictly. ' responsiveDisplayAd.mainColor = "#0000ff" ' responsiveDisplayAd.accentColor = "#ffff00" ' responsiveDisplayAd.allowFlexibleColor = false ' Whitelisted accounts only Set the format setting that the ad will be ' served in. ' responsiveDisplayAd.formatSetting = DisplayAdFormatSetting.NON_NATIVE; ' Create ad group ad. Dim adGroupAd As New AdGroupAd() adGroupAd.adGroupId = adGroupId adGroupAd.ad = responsiveDisplayAd adGroupAd.status = AdGroupAdStatus.PAUSED ' Create operation. Dim operation As New AdGroupAdOperation() operation.operand = adGroupAd operation.operator = [Operator].ADD ' Make the mutate request. Dim result As AdGroupAdReturnValue = adGroupAdService.mutate( New AdGroupAdOperation() {operation}) ' Display results. If (Not result Is Nothing) AndAlso (Not result.value Is Nothing) Then For Each newAdGroupAd As AdGroupAd In result.value Dim newAd As ResponsiveDisplayAd = CType(newAdGroupAd.ad, ResponsiveDisplayAd) Console.WriteLine( "Responsive display ad with ID '{0}' and short headline '{1}'" & " was added.", newAd.id, newAd.shortHeadline) Next Else Console.WriteLine("No responsive display ads were created.") End If Catch e As Exception Throw _ New System.ApplicationException("Failed to create responsive display ads.", e) End Try End Using End Sub ''' <summary> ''' Creates the dynamic display ad settings. ''' </summary> ''' <param name="user">The AdWords user.</param> ''' <returns></returns> Private Shared Function CreateDynamicDisplayAdSettings(ByVal user As AdWordsUser) _ As DynamicSettings Dim logoImageMediaId As Long = UploadImage(user, "https://goo.gl/dEvQeF") Dim logo As New Image() logo.mediaId = logoImageMediaId Dim dynamicSettings As New DynamicSettings() dynamicSettings.landscapeLogoImage = logo dynamicSettings.pricePrefix = "as low as" dynamicSettings.promoText = "Free shipping!" Return dynamicSettings End Function ''' <summary> ''' Uploads the image from the specified <paramref name="url"/>. ''' </summary> ''' <param name="user">The AdWords user.</param> ''' <param name="url">The image URL.</param> ''' <returns>ID of the uploaded image.</returns> Private Shared Function UploadImage(ByVal user As AdWordsUser, ByVal url As String) As Long Using mediaService As MediaService = CType( user.GetService( AdWordsService.v201809.MediaService), MediaService) ' Create the image. Dim image As New Image() image.data = MediaUtilities.GetAssetDataFromUrl(url, user.Config) image.type = MediaMediaType.IMAGE ' Upload the image. Return mediaService.upload(New Media() {image})(0).mediaId End Using End Function End Class End Namespace
Add a Shopping dynamic remarketing campaign
' Copyright 2018 Google LLC ' ' Licensed under the Apache License, Version 2.0 (the "License") ' you may not use this file except in compliance with the License. ' You may obtain a copy of the License at ' ' http:'www.apache.org/licenses/LICENSE-2.0 ' ' Unless required by applicable law or agreed to in writing, software ' distributed under the License is distributed on an "AS IS" BASIS, ' WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ' See the License for the specific language governing permissions and ' limitations under the License. Imports Google.Api.Ads.AdWords.Lib Imports Google.Api.Ads.AdWords.v201809 Imports Google.Api.Ads.Common.Util Namespace Google.Api.Ads.AdWords.Examples.VB.v201809 ''' <summary> ''' This code example adds a Shopping dynamic remarketing campaign for the Display Network ''' via the following steps: ''' <list type="bullet"> ''' <item> ''' <description>Creates a new Display Network campaign.</description> ''' </item> ''' <item> ''' <description>Links the campaign with Merchant Center.</description> ''' </item> ''' <item> ''' <description>Links the user list to the ad group.</description> ''' </item> ''' <item> ''' <description>Creates a responsive display ad to render the dynamic text.</description> ''' </item> ''' </list> ''' </summary> Public Class AddShoppingDynamicRemarketingCampaign Inherits ExampleBase ''' <summary> ''' Main method, to run this code example as a standalone application. ''' </summary> ''' <param name="args">The command line arguments.</param> Public Shared Sub Main(ByVal args As String()) Dim codeExample As New AddShoppingDynamicRemarketingCampaign Console.WriteLine(codeExample.Description) Try ' The ID of the merchant center account from which to source product feed data. Dim merchantId As Long = Long.Parse("INSERT_MERCHANT_CENTER_ID_HERE") ' The ID of a shared budget to associate with the campaign. Dim budgetId As Long = Long.Parse("INSERT_BUDGET_ID_HERE") ' The ID of a user list to target. Dim userListId As Long = Long.Parse("INSERT_USER_LIST_ID_HERE") codeExample.Run(New AdWordsUser(), merchantId, budgetId, userListId) Catch e As Exception Console.WriteLine("An exception occurred while running this code example. {0}", ExampleUtilities.FormatException(e)) End Try End Sub ''' <summary> ''' Returns a description about the code example. ''' </summary> Public Overrides ReadOnly Property Description() As String Get Return "This code example adds a Shopping dynamic remarketing campaign for the " & "Display Network via the following steps:\n" & "* Creates a new Display Network campaign.\n" & "* Links the campaign with Merchant Center.\n" & "* Links the user list to the ad group.\n" + "* Creates a responsive display ad to render the dynamic text." End Get End Property ''' <summary> ''' Runs the code example. ''' </summary> ''' <param name="user">The AdWords user.</param> ''' <param name="merchantId">The ID of the merchant center account from which to source ''' product feed data.</param> ''' <param name="budgetId">The ID of a shared budget to associate with the campaign.</param> ''' <param name="userListId">The ID of a user list to target.</param> Public Sub Run(ByVal user As AdWordsUser, ByVal merchantId As Long, ByVal budgetId As Long, ByVal userListId As Long) Try Dim campaign As Campaign = CreateCampaign(user, merchantId, budgetId) Console.WriteLine("Campaign with name '{0}' and ID {1} was added.", campaign.name, campaign.id) Dim adGroup As AdGroup = CreateAdGroup(user, campaign) Console.WriteLine("Ad group with name '{0}' and ID {1} was added.", adGroup.name, adGroup.id) Dim adGroupAd As AdGroupAd = CreateAd(user, adGroup) Console.WriteLine("Responsive display ad with ID {0} was added.", adGroupAd.ad.id) AttachUserList(user, adGroup, userListId) Console.WriteLine("User list with ID {0} was attached to ad group with ID {1}.", userListId, adGroup.id) Catch e As Exception Throw _ New System.ApplicationException( "Failed to create Shopping dynamic remarketing " + "campaign for the Display Network.", e) End Try End Sub ''' <summary> ''' Creates a Shopping dynamic remarketing campaign object (not including ad group level and ''' below). This creates a Display campaign with the merchant center feed attached. ''' Merchant Center is used for the product information in combination with a user list ''' which contains hits with <code>ecomm_prodid</code> specified. See ''' <a href="https://developers.google.com/adwords-remarketing-tag/parameters#retail"> ''' the guide</a> for more detail. ''' </summary> ''' <param name="user">The AdWords user.</param> ''' <param name="merchantId">The ID of the Merchant Center account.</param> ''' <param name="budgetId">The ID of the budget to use for the campaign.</param> ''' <returns>The campaign that was created.</returns> Private Shared Function CreateCampaign(ByVal user As AdWordsUser, ByVal merchantId As Long, ByVal budgetId As Long) As Campaign Using campaignService As CampaignService = DirectCast( user.GetService( AdWordsService.v201809.CampaignService), CampaignService) Dim campaign As New Campaign() campaign.name = "Shopping campaign #" + ExampleUtilities.GetRandomString() ' Dynamic remarketing campaigns are only available on the Google Display Network. campaign.advertisingChannelType = AdvertisingChannelType.DISPLAY campaign.status = CampaignStatus.PAUSED Dim budget As New Budget() budget.budgetId = budgetId campaign.budget = budget ' This example uses a Manual CPC bidding strategy, but you should select the ' strategy that best aligns with your sales goals. More details here: ' https://support.google.com/adwords/answer/2472725 Dim biddingStrategyConfiguration As New BiddingStrategyConfiguration() biddingStrategyConfiguration.biddingStrategyType = BiddingStrategyType.MANUAL_CPC campaign.biddingStrategyConfiguration = biddingStrategyConfiguration Dim setting As New ShoppingSetting() ' Campaigns with numerically higher priorities take precedence over those with lower ' priorities. setting.campaignPriority = 0 ' Set the Merchant Center account ID from which to source products. setting.merchantId = merchantId ' Display Network campaigns do not support partition by country. The only supported ' value is "ZZ". This signals that products from all countries are available in the ' campaign. The actual products which serve are based on the products tagged in the ' user list entry. setting.salesCountry = "ZZ" ' Optional: Enable local inventory ads (items for sale in physical stores.) setting.enableLocal = True campaign.settings = New Setting() {setting} Dim op As New CampaignOperation() op.operand = campaign op.operator = [Operator].ADD Dim result As CampaignReturnValue = campaignService.mutate( New CampaignOperation() _ {op}) Return result.value(0) End Using End Function ''' <summary> ''' Creates an ad group in the specified campaign. ''' </summary> ''' <param name="user">The AdWords user.</param> ''' <param name="campaign">The campaign to which the ad group should be attached.</param> ''' <returns>The ad group that was created.</returns> Private Shared Function CreateAdGroup(ByVal user As AdWordsUser, ByVal campaign As Campaign) _ As AdGroup Using adGroupService As AdGroupService = DirectCast( user.GetService( AdWordsService.v201809.AdGroupService), AdGroupService) Dim group As New AdGroup() group.name = "Dynamic remarketing ad group" group.campaignId = campaign.id group.status = AdGroupStatus.ENABLED Dim op As New AdGroupOperation() op.operand = group op.operator = [Operator].ADD Dim result As AdGroupReturnValue = adGroupService.mutate( New AdGroupOperation() {op}) Return result.value(0) End Using End Function ''' <summary> ''' 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. ''' </summary> ''' <param name="user">The user.</param> ''' <param name="adGroup">The ad group which will have the user list attached.</param> ''' <param name="userListId">The user list to use for targeting and dynamic content.</param> ''' <remarks>User lists must be attached at the ad group level for positive targeting in ''' Shopping dynamic remarketing campaigns.</remarks> Private Shared Sub AttachUserList(ByVal user As AdWordsUser, ByVal adGroup As AdGroup, ByVal userListId As Long) Using adGroupCriterionService As AdGroupCriterionService = DirectCast( user.GetService( AdWordsService.v201809.AdGroupCriterionService), AdGroupCriterionService) Dim userList As New CriterionUserList() userList.userListId = userListId Dim adGroupCriterion As New BiddableAdGroupCriterion() adGroupCriterion.criterion = userList adGroupCriterion.adGroupId = adGroup.id Dim op As New AdGroupCriterionOperation() op.operand = adGroupCriterion op.operator = [Operator].ADD adGroupCriterionService.mutate(New AdGroupCriterionOperation() {op}) End Using End Sub ''' <summary> ''' Creates an ad for serving dynamic content in a remarketing campaign. ''' </summary> ''' <param name="user">The AdWords user.</param> ''' <param name="adGroup">The ad group under which to create the ad.</param> ''' <returns>The ad that was created.</returns> Private Shared Function CreateAd(ByVal user As AdWordsUser, ByVal adGroup As AdGroup) _ As AdGroupAd Using adService As AdGroupAdService = DirectCast( user.GetService( AdWordsService.v201809.AdGroupAdService), AdGroupAdService) Dim ad As New ResponsiveDisplayAd() ' This ad format does not allow the creation of an image using the ' Image.data field. An image must first be created using the MediaService, ' and Image.mediaId must be populated when creating the ad. ad.marketingImage = UploadImage(user, "https://goo.gl/3b9Wfh") ad.shortHeadline = "Travel" ad.longHeadline = "Travel the World" ad.description = "Take to the air!" ad.businessName = "Interplanetary Cruises" ad.finalUrls = New String() {"http://www.example.com/"} ' Optional: Call to action text. ' Valid texts: https://support.google.com/adwords/answer/7005917 ad.callToActionText = "Apply Now" ' Optional: Set dynamic display ad settings, composed of landscape logo ' image, promotion text, and price prefix. ad.dynamicDisplayAdSettings = CreateDynamicDisplayAdSettings(user) ' Optional: Create a logo image and set it to the ad. ad.logoImage = UploadImage(user, "https://goo.gl/mtt54n") ' Optional: Create a square marketing image and set it to the ad. ad.squareMarketingImage = UploadImage(user, "https://goo.gl/mtt54n") ' Whitelisted accounts only: Set color settings using hexadecimal values. ' Set allowFlexibleColor to false if you want your ads to render by always ' using your colors strictly. ' ad.mainColor = "#0000ff" ' ad.accentColor = "#ffff00" ' ad.allowFlexibleColor = False ' Whitelisted accounts only: Set the format setting that the ad will be ' served in. ' ad.formatSetting = DisplayAdFormatSetting.NON_NATIVE Dim adGroupAd As New AdGroupAd() adGroupAd.ad = ad adGroupAd.adGroupId = adGroup.id Dim op As New AdGroupAdOperation() op.operand = adGroupAd op.operator = [Operator].ADD Dim result As AdGroupAdReturnValue = adService.mutate(New AdGroupAdOperation() {op}) Return result.value(0) End Using End Function ''' <summary> ''' Creates the additional content (images, promo text, etc.) supported by dynamic ads. ''' </summary> ''' <param name="user">The AdWords user.</param> ''' <returns>The DynamicSettings object to be used.</returns> Private Shared Function CreateDynamicDisplayAdSettings(ByVal user As AdWordsUser) _ As DynamicSettings Dim logo As Image = UploadImage(user, "https://goo.gl/dEvQeF") Dim dynamicSettings As New DynamicSettings() dynamicSettings.landscapeLogoImage = logo dynamicSettings.pricePrefix = "as low as" dynamicSettings.promoText = "Free shipping!" Return dynamicSettings End Function ''' <summary> ''' Uploads the image from the specified <paramref name="url"/>. ''' </summary> ''' <param name="user">The AdWords user.</param> ''' <param name="url">The image URL.</param> ''' <returns>ID of the uploaded image.</returns> Private Shared Function UploadImage(ByVal user As AdWordsUser, ByVal url As String) As Image Using mediaService As MediaService = DirectCast( user.GetService( AdWordsService.v201809.MediaService), MediaService) ' Create the image. Dim image As New Image() image.data = MediaUtilities.GetAssetDataFromUrl(url, user.Config) image.type = MediaMediaType.IMAGE ' Upload the image And return the ID. Return DirectCast(mediaService.upload(New Media() {image})(0), Image) End Using End Function End Class End Namespace
Add a universal app campaign
' Copyright 2018 Google LLC ' ' Licensed under the Apache License, Version 2.0 (the "License") ' you may not use this file except in compliance with the License. ' You may obtain a copy of the License at ' ' http:'www.apache.org/licenses/LICENSE-2.0 ' ' Unless required by applicable law or agreed to in writing, software ' distributed under the License is distributed on an "AS IS" BASIS, ' WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ' See the License for the specific language governing permissions and ' limitations under the License. Imports Google.Api.Ads.AdWords.Lib Imports Google.Api.Ads.AdWords.v201809 Namespace Google.Api.Ads.AdWords.Examples.VB.v201809 ''' <summary> ''' This code example adds a universal app campaign. To get campaigns, run ''' GetCampaigns.vb. To upload image assets for this campaign, use ''' UploadImage.vb. ''' </summary> Public Class AddUniversalAppCampaign Inherits ExampleBase ''' <summary> ''' Main method, to run this code example as a standalone application. ''' </summary> ''' <param name="args">The command line arguments.</param> Public Shared Sub Main(ByVal args As String()) Dim codeExample As New AddUniversalAppCampaign Console.WriteLine(codeExample.Description) Try codeExample.Run(New AdWordsUser()) Catch e As Exception Console.WriteLine("An exception occurred while running this code example. {0}", ExampleUtilities.FormatException(e)) End Try End Sub ''' <summary> ''' Returns a description about the code example. ''' </summary> Public Overrides ReadOnly Property Description() As String Get Return "This code example adds a universal app campaign. To get campaigns, run" & " GetCampaigns.vb. To upload image assets for this campaign, use " & "UploadImage.vb." End Get End Property ''' <summary> ''' Runs the code example. ''' </summary> ''' <param name="user">The AdWords user.</param> Public Sub Run(ByVal user As AdWordsUser) Using campaignService As CampaignService = CType( user.GetService( AdWordsService.v201809.CampaignService), CampaignService) ' Create the campaign. Dim campaign As New Campaign campaign.name = "Interplanetary Cruise App #" + ExampleUtilities.GetRandomString ' Recommendation: Set the campaign to PAUSED when creating it to prevent ' the ads from immediately serving. Set to ENABLED once you've added ' targeting and the ads are ready to serve. campaign.status = CampaignStatus.PAUSED ' Set the advertising channel and subchannel types for universal app campaigns. campaign.advertisingChannelType = AdvertisingChannelType.MULTI_CHANNEL campaign.advertisingChannelSubType = AdvertisingChannelSubType.UNIVERSAL_APP_CAMPAIGN ' Set the campaign's bidding strategy. Universal app campaigns ' only support TARGET_CPA bidding strategy. Dim biddingConfig As New BiddingStrategyConfiguration() biddingConfig.biddingStrategyType = BiddingStrategyType.TARGET_CPA ' Set the target CPA to $1 / app install. Dim biddingScheme As New TargetCpaBiddingScheme() biddingScheme.targetCpa = New Money() biddingScheme.targetCpa.microAmount = 1000000 biddingConfig.biddingScheme = biddingScheme campaign.biddingStrategyConfiguration = biddingConfig ' Set the campaign's budget. campaign.budget = New Budget() campaign.budget.budgetId = CreateBudget(user).budgetId ' Optional: Set the start date. campaign.startDate = DateTime.Now.AddDays(1).ToString("yyyyMMdd") ' Optional: Set the end date. campaign.endDate = DateTime.Now.AddYears(1).ToString("yyyyMMdd") ' Set the campaign's assets and ad text ideas. These values will be used to ' generate ads. Dim universalAppSetting As New UniversalAppCampaignSetting() universalAppSetting.appId = "com.labpixies.colordrips" universalAppSetting.appVendor = MobileApplicationVendor.VENDOR_GOOGLE_MARKET universalAppSetting.description1 = "A cool puzzle game" universalAppSetting.description2 = "Remove connected blocks" universalAppSetting.description3 = "3 difficulty levels" universalAppSetting.description4 = "4 colorful fun skins" ' Optional: You can set up to 20 image assets for your campaign. ' See UploadImage.cs for an example on how to upload images. ' ' universalAppSetting.imageMediaIds = new long[] { INSERT_IMAGE_MEDIA_ID_HERE }; ' Optimize this campaign for getting new users for your app. universalAppSetting.universalAppBiddingStrategyGoalType = UniversalAppBiddingStrategyGoalType.OPTIMIZE_FOR_INSTALL_CONVERSION_VOLUME ' Optional: If you select the OPTIMIZE_FOR_IN_APP_CONVERSION_VOLUME goal ' type, then also specify your in-app conversion types so AdWords can ' focus your campaign on people who are most likely to complete the ' corresponding in-app actions. ' Conversion type IDs can be retrieved using ConversionTrackerService.get. ' ' campaign.selectiveOptimization = new SelectiveOptimization(); ' campaign.selectiveOptimization.conversionTypeIds = ' new long[] { ' INSERT_CONVERSION_TYPE_ID_1_HERE, ' INSERT_CONVERSION_TYPE_ID_2_HERE }; ' Optional: Set the campaign settings for Advanced location options. Dim geoSetting As New GeoTargetTypeSetting() geoSetting.positiveGeoTargetType = GeoTargetTypeSettingPositiveGeoTargetType.LOCATION_OF_PRESENCE geoSetting.negativeGeoTargetType = GeoTargetTypeSettingNegativeGeoTargetType.DONT_CARE campaign.settings = New Setting() {universalAppSetting, geoSetting} ' Create the operation. Dim operation As New CampaignOperation() operation.operator = [Operator].ADD operation.operand = campaign Try ' Add the campaign. Dim retVal As CampaignReturnValue = campaignService.mutate( New CampaignOperation() {operation}) ' Display the results. If Not (retVal Is Nothing) AndAlso Not (retVal.value Is Nothing) Then For Each newCampaign As Campaign In retVal.value Console.WriteLine( "Universal app campaign with name = '{0}' and id = '{1}' " + "was added.", newCampaign.name, newCampaign.id) ' Optional: Set the campaign's location and language targeting. No other ' targeting criteria can be used for universal app campaigns. SetCampaignTargetingCriteria(user, newCampaign) Next Else Console.WriteLine("No universal app campaigns were added.") End If Catch e As Exception Throw _ New System.ApplicationException("Failed to add universal app campaigns.", e) End Try End Using End Sub ''' <summary> ''' Creates the budget for the campaign. ''' </summary> ''' <param name="user">The AdWords user.</param> ''' <returns>The budget.</returns> Private Shared Function CreateBudget(ByVal user As AdWordsUser) As Budget Using budgetService As BudgetService = CType( user.GetService( AdWordsService.v201809.BudgetService), BudgetService) ' Create the campaign budget. Dim budget As New Budget() budget.name = "Interplanetary Cruise App Budget #" & ExampleUtilities.GetRandomString() budget.deliveryMethod = BudgetBudgetDeliveryMethod.STANDARD budget.amount = New Money() budget.amount.microAmount = 5000000 ' Universal app campaigns don't support shared budgets. budget.isExplicitlyShared = False Dim budgetOperation As New BudgetOperation() budgetOperation.operator = [Operator].ADD budgetOperation.operand = budget Dim budgetRetval As BudgetReturnValue = budgetService.mutate( New BudgetOperation() {budgetOperation}) Dim newBudget As Budget = budgetRetval.value(0) Console.WriteLine("Budget with ID = '{0}' and name = '{1}' was created.", newBudget.budgetId, newBudget.name) Return newBudget End Using End Function ''' <summary> ''' Sets the campaign's targeting criteria. ''' </summary> ''' <param name="user">The AdWords user.</param> ''' <param name="campaign">The campaign for which targeting criteria is ''' created.</param> Private Shared Sub SetCampaignTargetingCriteria(ByVal user As AdWordsUser, ByVal campaign As Campaign) Using campaignCriterionService As CampaignCriterionService = CType( user.GetService( AdWordsService.v201809.CampaignCriterionService), CampaignCriterionService) ' Create locations. The IDs can be found in the documentation or ' retrieved with the LocationCriterionService. Dim california As New Location() california.id = 21137L Dim mexico As New Location() mexico.id = 2484L ' Create languages. The IDs can be found in the documentation or ' retrieved with the ConstantDataService. Dim english As New Language() english.id = 1000L Dim spanish As New Language() spanish.id = 1003L Dim criteria As Criterion() = {california, mexico, english, spanish} ' Create operations to add each of the criteria above. Dim operations As New List(Of CampaignCriterionOperation)() For Each criterion As Criterion In criteria Dim campaignCriterion As New CampaignCriterion campaignCriterion.campaignId = campaign.id campaignCriterion.criterion = criterion Dim operation As New CampaignCriterionOperation() operation.operand = campaignCriterion operation.operator = [Operator].ADD operations.Add(operation) Next ' Set the campaign targets. Dim retVal As CampaignCriterionReturnValue = campaignCriterionService.mutate( operations.ToArray()) If Not (retVal Is Nothing) AndAlso Not (retVal.value Is Nothing) Then ' Display the added campaign targets. For Each criterion As CampaignCriterion In retVal.value Console.WriteLine("Campaign criteria of type '{0}' and id '{1}' was added.", criterion.criterion.CriterionType, criterion.criterion.id) Next End If End Using End Sub End Class End Namespace
Create a negative broad match keywords list and attach it to a campaign
' Copyright 2018 Google LLC ' ' Licensed under the Apache License, Version 2.0 (the "License") ' you may not use this file except in compliance with the License. ' You may obtain a copy of the License at ' ' http:'www.apache.org/licenses/LICENSE-2.0 ' ' Unless required by applicable law or agreed to in writing, software ' distributed under the License is distributed on an "AS IS" BASIS, ' WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ' See the License for the specific language governing permissions and ' limitations under the License. Imports Google.Api.Ads.AdWords.Lib Imports Google.Api.Ads.AdWords.v201809 Namespace Google.Api.Ads.AdWords.Examples.VB.v201809 ''' <summary> ''' This code example creates a shared keyword list, adds keywords to the list ''' and attaches it to an existing campaign. To get the list of campaigns, ''' run GetCampaigns.vb. ''' </summary> Public Class CreateAndAttachSharedKeywordSet Inherits ExampleBase ''' <summary> ''' Main method, to run this code example as a standalone application. ''' </summary> ''' <param name="args">The command line arguments.</param> Public Shared Sub Main(ByVal args As String()) Dim codeExample As New CreateAndAttachSharedKeywordSet Console.WriteLine(codeExample.Description) Try Dim campaignId As Long = Long.Parse("INSERT_CAMPAIGN_ID_HERE") codeExample.Run(New AdWordsUser(), campaignId) Catch e As Exception Console.WriteLine("An exception occurred while running this code example. {0}", ExampleUtilities.FormatException(e)) End Try End Sub ''' <summary> ''' Returns a description about the code example. ''' </summary> Public Overrides ReadOnly Property Description() As String Get Return _ "This code example creates a shared keyword list, adds keywords to the list" & "and attaches it to an existing campaign. To get the list of campaigns, run " & "GetCampaigns.vb." End Get End Property ''' <summary> ''' Runs the code example. ''' </summary> ''' <param name="user">The AdWords user.</param> ''' <param name="campaignId">Id of the campaign to which keywords are added.</param> Public Sub Run(ByVal user As AdWordsUser, ByVal campaignId As Long) Try ' Create a shared set. Dim sharedSet As SharedSet = CreateSharedKeywordSet(user) Console.WriteLine( "Shared set with id = {0}, name = {1}, type = {2}, status = {3} " & "was created.", sharedSet.sharedSetId, sharedSet.name, sharedSet.type, sharedSet.status) ' Add new keywords to the shared set. Dim keywordTexts As String() = New String() {"mars cruise", "mars hotels"} Dim sharedCriteria As SharedCriterion() = AddKeywordsToSharedSet(user, sharedSet. sharedSetId, keywordTexts) For Each sharedCriterion As SharedCriterion In sharedCriteria Dim keyword As Keyword = DirectCast(sharedCriterion.criterion, Keyword) Console.WriteLine( "Added keyword with id = {0}, text = {1}, matchtype = {2} to " & "shared set with id = {3}.", keyword.id, keyword.text, keyword.matchType, sharedSet.sharedSetId) Next ' Attach the shared set to the campaign. Dim attachedSharedSet As CampaignSharedSet = AttachSharedSetToCampaign(user, campaignId, sharedSet.sharedSetId) Console.WriteLine("Attached shared set with id = {0} to campaign id {1}.", attachedSharedSet.sharedSetId, attachedSharedSet.campaignId) Catch e As Exception Throw _ New System.ApplicationException( "Failed to create shared keyword set and attach " & "it to a campaign.", e) End Try End Sub ''' <summary> ''' Create a shared keyword set. ''' </summary> ''' <param name="user">The AdWords user.</param> ''' <returns>The shared set.</returns> Public Function CreateSharedKeywordSet(ByVal user As AdWordsUser) As SharedSet Using sharedSetService As SharedSetService = DirectCast( user.GetService( AdWordsService.v201809.SharedSetService), SharedSetService) Dim operation As New SharedSetOperation() operation.operator = [Operator].ADD Dim sharedSet As New SharedSet() sharedSet.name = "API Negative keyword list - " & ExampleUtilities.GetRandomString() sharedSet.type = SharedSetType.NEGATIVE_KEYWORDS operation.operand = sharedSet Dim retval As SharedSetReturnValue = sharedSetService.mutate( New SharedSetOperation() {operation}) Return retval.value(0) End Using End Function ''' <summary> ''' Adds a set of keywords to a shared set. ''' </summary> ''' <param name="user">The AdWords user.</param> ''' <param name="sharedSetId">The shared set id.</param> ''' <param name="keywordTexts">The keywords to be added to the shared set.</param> ''' <returns>The newly added set of shared criteria.</returns> Public Function AddKeywordsToSharedSet(ByVal user As AdWordsUser, ByVal sharedSetId As Long, ByVal keywordTexts As String()) As SharedCriterion() Using sharedSetService As SharedCriterionService = DirectCast( user.GetService( AdWordsService.v201809.SharedCriterionService), SharedCriterionService) Dim operations As New List(Of SharedCriterionOperation) For Each keywordText As String In keywordTexts Dim keyword As New Keyword() keyword.text = keywordText keyword.matchType = KeywordMatchType.BROAD Dim sharedCriterion As New SharedCriterion() sharedCriterion.criterion = keyword sharedCriterion.negative = True sharedCriterion.sharedSetId = sharedSetId Dim operation As New SharedCriterionOperation() operation.operator = [Operator].ADD operation.operand = sharedCriterion operations.Add(operation) Next Dim retval As SharedCriterionReturnValue = sharedSetService.mutate(operations.ToArray()) Return retval.value End Using End Function ''' <summary> ''' Attaches a shared set to a campaign. ''' </summary> ''' <param name="user">The AdWords user.</param> ''' <param name="campaignId">The campaign id.</param> ''' <param name="sharedSetId">The shared set id.</param> ''' <returns>A CampaignSharedSet object that represents a binding between ''' the specified campaign and the shared set.</returns> Public Function AttachSharedSetToCampaign(ByVal user As AdWordsUser, ByVal campaignId As Long, ByVal sharedSetId As Long) As CampaignSharedSet Using campaignSharedSetService As CampaignSharedSetService = DirectCast( user.GetService( AdWordsService.v201809.CampaignSharedSetService), CampaignSharedSetService) Dim campaignSharedSet As New CampaignSharedSet() campaignSharedSet.campaignId = campaignId campaignSharedSet.sharedSetId = sharedSetId Dim operation As New CampaignSharedSetOperation() operation.operator = [Operator].ADD operation.operand = campaignSharedSet Dim retval As CampaignSharedSetReturnValue = campaignSharedSetService.mutate( New CampaignSharedSetOperation() {operation}) Return retval.value(0) End Using End Function End Class End Namespace
Find and remove shared sets and shared set criteria
' Copyright 2018 Google LLC ' ' Licensed under the Apache License, Version 2.0 (the "License") ' you may not use this file except in compliance with the License. ' You may obtain a copy of the License at ' ' http:'www.apache.org/licenses/LICENSE-2.0 ' ' Unless required by applicable law or agreed to in writing, software ' distributed under the License is distributed on an "AS IS" BASIS, ' WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ' See the License for the specific language governing permissions and ' limitations under the License. Imports Google.Api.Ads.AdWords.Lib Imports Google.Api.Ads.AdWords.v201809 Namespace Google.Api.Ads.AdWords.Examples.VB.v201809 ''' <summary> ''' This code example demonstrates how to find and remove shared sets and ''' shared set criteria. ''' ''' </summary> Public Class FindAndRemoveCriteriaFromSharedSet Inherits ExampleBase ''' <summary> ''' Main method, to run this code example as a standalone application. ''' </summary> ''' <param name="args">The command line arguments.</param> Public Shared Sub Main(ByVal args As String()) Dim codeExample As New FindAndRemoveCriteriaFromSharedSet Console.WriteLine(codeExample.Description) Try Dim campaignId As Long = Long.Parse("INSERT_CAMPAIGN_ID_HERE") codeExample.Run(New AdWordsUser(), campaignId) Catch e As Exception Console.WriteLine("An exception occurred while running this code example. {0}", ExampleUtilities.FormatException(e)) End Try End Sub ''' <summary> ''' Returns a description about the code example. ''' </summary> Public Overrides ReadOnly Property Description() As String Get Return _ "This code example demonstrates how to find and remove shared sets and " & "shared set criteria." End Get End Property ''' <summary> ''' Runs the code example. ''' </summary> ''' <param name="user">The AdWords user.</param> ''' <param name="campaignId">Id of the campaign to which keywords are removed.</param> Public Sub Run(ByVal user As AdWordsUser, ByVal campaignId As Long) ' Get the list of shared sets that are attached to the campaign. Dim sharedSetIds As List(Of String) = GetSharedSetIds(user, campaignId) ' Get the shared criteria in those shared sets. Dim sharedCriteria As List(Of SharedCriterion) = GetSharedCriteria(user, sharedSetIds) ' Remove the shared criteria from the shared sets. RemoveSharedCriteria(user, sharedCriteria) End Sub ''' <summary> ''' Gets the shared set IDs associated with a campaign. ''' </summary> ''' <param name="user">The user that owns the campaign.</param> ''' <param name="campaignId">The campaign identifier.</param> ''' <returns>The list of shared set IDs associated with the campaign.</returns> Private Function GetSharedSetIds(ByVal user As AdWordsUser, ByVal campaignId As Long) _ As List(Of String) Using campaignSharedSetService As CampaignSharedSetService = DirectCast( user.GetService( AdWordsService.v201809.CampaignSharedSetService), CampaignSharedSetService) Dim selector As New Selector() selector.fields = New String() { _ CampaignSharedSet.Fields.SharedSetId, CampaignSharedSet.Fields.CampaignId, CampaignSharedSet.Fields.SharedSetName, CampaignSharedSet.Fields.SharedSetType } selector.predicates = New Predicate() { _ Predicate.Equals( CampaignSharedSet.Fields.CampaignId, campaignId), Predicate.In( CampaignSharedSet.Fields.SharedSetType, New String() { _ SharedSetType.NEGATIVE_KEYWORDS. ToString()}) } selector.paging = Paging.Default Dim sharedSetIds As New List(Of String) Dim page As New CampaignSharedSetPage() Try Do ' Get the campaigns. page = campaignSharedSetService.get(selector) ' Display the results. If (Not page Is Nothing) AndAlso (Not page.entries Is Nothing) Then Dim i As Integer = selector.paging.startIndex For Each campaignSharedSet As CampaignSharedSet In page.entries sharedSetIds.Add(campaignSharedSet.sharedSetId.ToString()) Console.WriteLine( "{0}) Campaign shared set ID {1} and name '{2}' found for " & "campaign ID {3}.\n", i + 1, campaignSharedSet.sharedSetId, campaignSharedSet.sharedSetName, campaignSharedSet.campaignId) i = i + 1 Next End If selector.paging.IncreaseOffset() Loop While (selector.paging.startIndex < page.totalNumEntries) Return sharedSetIds Catch e As Exception Throw New Exception("Failed to get shared set ids for campaign.", e) End Try End Using End Function ''' <summary> ''' Gets the shared criteria in a shared set. ''' </summary> ''' <param name="user">The user that owns the shared set.</param> ''' <param name="sharedSetIds">The shared criteria IDs.</param> ''' <returns>The list of shared criteria.</returns> Private Function GetSharedCriteria(ByVal user As AdWordsUser, ByVal sharedSetIds As _ List(Of String)) As List(Of SharedCriterion) Using sharedCriterionService As SharedCriterionService = DirectCast( user.GetService( AdWordsService.v201809.SharedCriterionService), SharedCriterionService) Dim selector As New Selector() selector.fields = New String() { _ SharedSet.Fields.SharedSetId, Criterion.Fields.Id, Keyword.Fields.KeywordText, Keyword.Fields.KeywordMatchType, Placement.Fields.PlacementUrl } selector.predicates = New Predicate() { _ Predicate.In(SharedSet.Fields.SharedSetId, sharedSetIds) } selector.paging = Paging.Default Dim sharedCriteria As New List(Of SharedCriterion) Dim page As New SharedCriterionPage() Try Do ' Get the criteria. page = sharedCriterionService.get(selector) ' Display the results. If (Not page Is Nothing) AndAlso (Not page.entries Is Nothing) Then Dim i As Integer = selector.paging.startIndex For Each sharedCriterion As SharedCriterion In page.entries Select Case sharedCriterion.criterion.type Case CriterionType.KEYWORD Dim keyword As Keyword = DirectCast(sharedCriterion.criterion, Keyword) Console.WriteLine( "Shared negative keyword with ID {0} and text '{1}' " & "was found.", keyword.id, keyword.text) Exit Select Case CriterionType.PLACEMENT Dim placement As Placement = DirectCast(sharedCriterion.criterion, Placement) Console.WriteLine( "{0}) Shared negative placement with ID {1} and " & "URL '{2}' was found.", i + 1, placement.id, placement.url) Exit Select Case Else Console.WriteLine( "{0}) Shared criteria with ID {1} was found.", i + 1, sharedCriterion.criterion.id) End Select i = i + 1 sharedCriteria.Add(sharedCriterion) Next End If selector.paging.IncreaseOffset() Loop While (selector.paging.startIndex < page.totalNumEntries) Return sharedCriteria Catch e As Exception Throw New Exception("Failed to get shared criteria.", e) End Try End Using End Function ''' <summary> ''' Removes a list of shared criteria. ''' </summary> ''' <param name="user">The user that owns the shared criteria.</param> ''' <param name="sharedCriteria">The list shared criteria to be removed.</param> Private Sub RemoveSharedCriteria(ByVal user As AdWordsUser, ByVal sharedCriteria _ As List(Of SharedCriterion)) If sharedCriteria.Count = 0 Then Console.WriteLine("No shared criteria to remove.") Return End If Using sharedCriterionService As SharedCriterionService = DirectCast( user.GetService( AdWordsService.v201809.SharedCriterionService), SharedCriterionService) Dim operations As New List(Of SharedCriterionOperation) For Each sharedCriterion As SharedCriterion In sharedCriteria Dim operation As New SharedCriterionOperation() operation.operator = [Operator].REMOVE Dim tempSharedCriterion As New SharedCriterion() tempSharedCriterion.sharedSetId = sharedCriterion.sharedSetId tempSharedCriterion.criterion = New Criterion() tempSharedCriterion.criterion.id = sharedCriterion.criterion.id operation.operand = tempSharedCriterion operations.Add(operation) Next Try Dim sharedCriterionReturnValue As SharedCriterionReturnValue = sharedCriterionService.mutate(operations.ToArray()) For Each removedCriterion As SharedCriterion In sharedCriterionReturnValue.value Console.WriteLine( "Shared criterion ID {0} was successfully removed from shared " & "set ID {1}.", removedCriterion.criterion.id, removedCriterion.sharedSetId) Next Catch e As Exception Throw New Exception("Failed to remove shared criteria.", e) End Try End Using End Sub End Class End Namespace
Get ad group level bid modifiers
' Copyright 2018 Google LLC ' ' Licensed under the Apache License, Version 2.0 (the "License"); ' you may not use this file except in compliance with the License. ' You may obtain a copy of the License at ' ' http://www.apache.org/licenses/LICENSE-2.0 ' ' Unless required by applicable law or agreed to in writing, software ' distributed under the License is distributed on an "AS IS" BASIS, ' WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ' See the License for the specific language governing permissions and ' limitations under the License. Imports Google.Api.Ads.AdWords.Lib Imports Google.Api.Ads.AdWords.v201809 Namespace Google.Api.Ads.AdWords.Examples.VB.v201809 ''' <summary> ''' This code example illustrates how to retrieve ad group level mobile bid ''' modifiers for a campaign. ''' ''' AdGroupBidModifierService.get ''' </summary> Public Class GetAdGroupBidModifiers Inherits ExampleBase ''' <summary> ''' Main method, to run this code example as a standalone application. ''' </summary> ''' <param name="args">The command line arguments.</param> Public Shared Sub Main(ByVal args As String()) Dim codeExample As New GetAdGroupBidModifiers Console.WriteLine(codeExample.Description) Try Dim campaignId As Long = Long.Parse("INSERT_CAMPAIGN_ID_HERE") codeExample.Run(New AdWordsUser, campaignId) Catch e As Exception Console.WriteLine("An exception occurred while running this code example. {0}", ExampleUtilities.FormatException(e)) End Try End Sub ''' <summary> ''' Returns a description about the code example. ''' </summary> Public Overrides ReadOnly Property Description() As String Get Return "This code example illustrates how to retrieve ad group level mobile bid" & " modifiers for a campaign." End Get End Property ''' <summary> ''' Runs the code example. ''' </summary> ''' <param name="user">The AdWords user.</param> ''' <param name="campaignId">Id of the campaign for which adgroup bid ''' modifiers are retrieved.</param> Public Sub Run(ByVal user As AdWordsUser, ByVal campaignId As Long) ' Get the AdGroupBidModifierService. Using adGroupBidModifierService As AdGroupBidModifierService = CType( user.GetService( AdWordsService.v201809.AdGroupBidModifierService), AdGroupBidModifierService) ' Get all ad group bid modifiers for the campaign. Dim selector As New Selector() selector.fields = New String() { _ AdGroupBidModifier.Fields.CampaignId, AdGroupBidModifier.Fields.AdGroupId, AdGroupBidModifier.Fields.BidModifier, AdGroupBidModifier.Fields.BidModifierSource, Criterion.Fields.CriteriaType, Criterion.Fields.Id } Dim predicate As New Predicate() predicate.field = "CampaignId" predicate.[operator] = PredicateOperator.EQUALS predicate.values = New String() {campaignId.ToString()} selector.predicates = New Predicate() { _ Predicate.Equals( AdGroupBidModifier.Fields.CampaignId, campaignId) } selector.paging = Paging.Default Dim page As New AdGroupBidModifierPage() Try Do ' Get the ad group bids. page = adGroupBidModifierService.get(selector) ' Display the results. If (Not page Is Nothing) AndAlso (Not page.entries Is Nothing) Then Dim i As Integer = selector.paging.startIndex For Each adGroupBidModifier As AdGroupBidModifier In page.entries Dim bidModifier As String = "" If adGroupBidModifier.bidModifierSpecified Then bidModifier = adGroupBidModifier.bidModifier.ToString() Else bidModifier = "UNSET" End If Console.WriteLine( "{0}) Campaign ID {1}, AdGroup ID {2}, Criterion ID {3} has " & "ad group level modifier: {4}, source = {5}.", i + 1, adGroupBidModifier.campaignId, adGroupBidModifier.adGroupId, adGroupBidModifier.criterion.id, bidModifier, adGroupBidModifier.bidModifierSource) i = i + 1 Next End If selector.paging.IncreaseOffset() Loop While selector.paging.startIndex < page.totalNumEntries Console.WriteLine("Number of adgroup bid modifiers found: {0}", page.totalNumEntries) Catch e As Exception Throw _ New System.ApplicationException("Failed to retrieve adgroup bid modifiers.", e) End Try End Using End Sub End Class End Namespace
Add a portfolio bidding strategy to a campaign
' Copyright 2018 Google LLC ' ' Licensed under the Apache License, Version 2.0 (the "License") ' you may not use this file except in compliance with the License. ' You may obtain a copy of the License at ' ' http:'www.apache.org/licenses/LICENSE-2.0 ' ' Unless required by applicable law or agreed to in writing, software ' distributed under the License is distributed on an "AS IS" BASIS, ' WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ' See the License for the specific language governing permissions and ' limitations under the License. Imports Google.Api.Ads.AdWords.Lib Imports Google.Api.Ads.AdWords.v201809 Imports System Imports System.Collections.Generic Imports System.IO Namespace Google.Api.Ads.AdWords.Examples.VB.v201809 ''' <summary> ''' This code example adds a portfolio bidding strategy and uses it to ''' construct a campaign. ''' </summary> Public Class UsePortfolioBiddingStrategy Inherits ExampleBase ''' <summary> ''' Main method, to run this code example as a standalone application. ''' </summary> ''' <param name="args">The command line arguments.</param> Public Shared Sub Main(ByVal args As String()) Dim codeExample As New UsePortfolioBiddingStrategy Console.WriteLine(codeExample.Description) Try codeExample.Run(New AdWordsUser) Catch e As Exception Console.WriteLine("An exception occurred while running this code example. {0}", ExampleUtilities.FormatException(e)) End Try End Sub ''' <summary> ''' Returns a description about the code example. ''' </summary> Public Overrides ReadOnly Property Description() As String Get Return "This code example adds a portfolio bidding strategy and uses it to " & "construct a campaign." End Get End Property ''' <summary> ''' Runs the code example. ''' </summary> ''' <param name="user">The AdWords user.</param> Public Sub Run(ByVal user As AdWordsUser) Dim biddingStrategyName As String = "Maximize Clicks " & ExampleUtilities.GetRandomString() Dim bidCeiling As Long = 2000000 Dim spendTarget As Long = 20000000 Dim budgetName As String = "Shared Interplanetary Budget #" & ExampleUtilities.GetRandomString() Dim budgetAmount As Long = 30000000 Dim campaignName As String = "Interplanetary Cruise #" + ExampleUtilities.GetRandomString() Try Dim portfolioBiddingStrategy As SharedBiddingStrategy = CreateBiddingStrategy(user, biddingStrategyName, bidCeiling, spendTarget) Console.WriteLine( "Portfolio bidding strategy with name '{0}' and ID {1} of type {2} " & "was created.", portfolioBiddingStrategy.name, portfolioBiddingStrategy.id, portfolioBiddingStrategy.biddingScheme.BiddingSchemeType) Dim sharedBudget As Budget = CreateSharedBudget(user, budgetName, budgetAmount) Dim newCampaign As Campaign = CreateCampaignWithBiddingStrategy(user, campaignName, portfolioBiddingStrategy.id, sharedBudget.budgetId) Console.WriteLine( "Campaign with name '{0}', ID {1} and bidding scheme ID {2} was " & "created.", newCampaign.name, newCampaign.id, newCampaign.biddingStrategyConfiguration.biddingStrategyId) Catch e As Exception Throw _ New System.ApplicationException( "Failed to create campaign that uses portfolio " & "bidding strategy.", e) End Try End Sub ''' <summary> ''' Creates the portfolio bidding strategy. ''' </summary> ''' <param name="user">The AdWords user.</param> ''' <param name="name">The bidding strategy name.</param> ''' <param name="bidCeiling">The bid ceiling.</param> ''' <param name="spendTarget">The spend target.</param> ''' <returns>The bidding strategy object.</returns> Private Function CreateBiddingStrategy(ByVal user As AdWordsUser, ByVal name As String, ByVal bidCeiling As Long, ByVal spendTarget As Long) _ As SharedBiddingStrategy Using biddingStrategyService As BiddingStrategyService = CType( user.GetService( AdWordsService.v201809.BiddingStrategyService), BiddingStrategyService) ' Create a portfolio bidding strategy. Dim portfolioBiddingStrategy As New SharedBiddingStrategy() portfolioBiddingStrategy.name = name Dim biddingScheme As New TargetSpendBiddingScheme() ' Optionally set additional bidding scheme parameters. biddingScheme.bidCeiling = New Money() biddingScheme.bidCeiling.microAmount = bidCeiling biddingScheme.spendTarget = New Money() biddingScheme.spendTarget.microAmount = spendTarget portfolioBiddingStrategy.biddingScheme = biddingScheme ' Create operation. Dim operation As New BiddingStrategyOperation() operation.operator = [Operator].ADD operation.operand = portfolioBiddingStrategy Return _ biddingStrategyService.mutate(New BiddingStrategyOperation() {operation}).value( 0) End Using End Function ''' <summary> ''' Creates an explicit budget to be used only to create the Campaign. ''' </summary> ''' <param name="user">The AdWords user.</param> ''' <param name="name">The budget name.</param> ''' <param name="amount">The budget amount.</param> ''' <returns>The budget object.</returns> Private Function CreateSharedBudget(ByVal user As AdWordsUser, ByVal name As String, ByVal amount As Long) As Budget Using budgetService As BudgetService = CType( user.GetService( AdWordsService.v201809.BudgetService), BudgetService) ' Create a shared budget Dim budget As New Budget() budget.name = name budget.amount = New Money() budget.amount.microAmount = amount budget.deliveryMethod = BudgetBudgetDeliveryMethod.STANDARD budget.isExplicitlyShared = True ' Create operation. Dim operation As New BudgetOperation() operation.operand = budget operation.operator = [Operator].ADD ' Make the mutate request. Return budgetService.mutate(New BudgetOperation() {operation}).value(0) End Using End Function ''' <summary> ''' Creates the campaign with a portfolio bidding strategy. ''' </summary> ''' <param name="user">The AdWords user.</param> ''' <param name="name">The campaign name.</param> ''' <param name="biddingStrategyId">The bidding strategy id.</param> ''' <param name="sharedBudgetId">The shared budget id.</param> ''' <returns>The campaign object.</returns> Private Function CreateCampaignWithBiddingStrategy(ByVal user As AdWordsUser, ByVal name As String, ByVal biddingStrategyId As Long, ByVal sharedBudgetId As Long) _ As Campaign Using campaignService As CampaignService = CType( user.GetService( AdWordsService.v201809.CampaignService), CampaignService) ' Create campaign. Dim campaign As New Campaign() campaign.name = name campaign.advertisingChannelType = AdvertisingChannelType.SEARCH ' Recommendation: Set the campaign to PAUSED when creating it to prevent ' the ads from immediately serving. Set to ENABLED once you've added ' targeting and the ads are ready to serve. campaign.status = CampaignStatus.PAUSED ' Set the budget. campaign.budget = New Budget() campaign.budget.budgetId = sharedBudgetId ' Set bidding strategy (required). Dim biddingStrategyConfiguration As New BiddingStrategyConfiguration() biddingStrategyConfiguration.biddingStrategyId = biddingStrategyId campaign.biddingStrategyConfiguration = biddingStrategyConfiguration ' Set network targeting (recommended). Dim networkSetting As New NetworkSetting() networkSetting.targetGoogleSearch = True networkSetting.targetSearchNetwork = True networkSetting.targetContentNetwork = True campaign.networkSetting = networkSetting ' Create operation. Dim operation As New CampaignOperation() operation.operand = campaign operation.operator = [Operator].ADD Return campaignService.mutate(New CampaignOperation() {operation}).value(0) End Using End Function End Class End Namespace