My problem here is I don't know where I can get the ADGROUP_ID from because the test account does not have real ads. So I don't have a adGroup
Here is the code I am testing
GetKeywordIdeas GetKeywordIdeas = new GetKeywordIdeas();
Console.WriteLine(GetKeywordIdeas.Description);
try
{
long adGroupId = long.Parse("INSERT_ADGROUP_ID_HERE");
GetKeywordIdeas.Run(new AdWordsUser(), adGroupId);
}
catch (Exception e)
{
Console.WriteLine("An exception occurred while running this code example. {0}",
ExampleUtilities.FormatException(e));
}
/// <summary>
/// Runs the code example.
/// </summary>
/// <param name="user">The AdWords user.</param>
/// <param name="adGroupId">ID of the ad group to use for generating ideas.</param>
public void Run(AdWordsUser user, long? adGroupId) {
using (TargetingIdeaService targetingIdeaService =
(TargetingIdeaService) user.GetService(AdWordsService.v201809.TargetingIdeaService)) {
// Create selector.
TargetingIdeaSelector selector = new TargetingIdeaSelector {
requestType = RequestType.STATS,
ideaType = IdeaType.KEYWORD,
requestedAttributeTypes = new AttributeType[] {
AttributeType.KEYWORD_TEXT,
AttributeType.SEARCH_VOLUME,
AttributeType.AVERAGE_CPC,
AttributeType.COMPETITION,
AttributeType.CATEGORY_PRODUCTS_AND_SERVICES,
AttributeType.TARGETED_MONTHLY_SEARCHES
}
};
List<SearchParameter> searchParameters = new List<SearchParameter>();
// Create related to query search parameter.
RelatedToQuerySearchParameter relatedToQuerySearchParameter =
new RelatedToQuerySearchParameter {
queries = new string[] {
"bakery", "pastries", "birthday cake"
}
};
searchParameters.Add(relatedToQuerySearchParameter);
// Add a language search parameter (optional).
// The ID can be found in the documentation:
LanguageSearchParameter languageParameter = new LanguageSearchParameter();
Language english = new Language {
id = 1000
};
languageParameter.languages = new Language[] { english };
searchParameters.Add(languageParameter);
// Add network search parameter (optional).
NetworkSetting networkSetting = new NetworkSetting {
targetGoogleSearch = true,
targetSearchNetwork = false,
targetContentNetwork = false,
targetPartnerSearchNetwork = false
};
NetworkSearchParameter networkSearchParameter = new NetworkSearchParameter {
networkSetting = networkSetting
};
searchParameters.Add(networkSearchParameter);
// Optional: Use an existing ad group to generate ideas.
if (adGroupId != null) {
SeedAdGroupIdSearchParameter seedAdGroupIdSearchParameter =
new SeedAdGroupIdSearchParameter {
adGroupId = adGroupId.Value
};
searchParameters.Add(seedAdGroupIdSearchParameter);
}
// Set the search parameters.
selector.searchParameters = searchParameters.ToArray();
// Set selector paging (required for targeting idea service).
selector.paging = Paging.Default;
TargetingIdeaPage page = new TargetingIdeaPage();
try {
int i = 0;
do {
// Get related keywords.
page = targetingIdeaService.get(selector);
// Display related keywords.
if (page.entries != null && page.entries.Length > 0) {
foreach (TargetingIdea targetingIdea in page.entries) {
Dictionary<AttributeType, Google.Api.Ads.AdWords.v201809.Attribute> ideas =
targetingIdea.data.ToDict();
string keyword = (ideas[AttributeType.KEYWORD_TEXT] as StringAttribute).value;
IntegerSetAttribute categorySet =
ideas[AttributeType.CATEGORY_PRODUCTS_AND_SERVICES] as IntegerSetAttribute;
string categories = "";
if (categorySet != null && categorySet.value != null) {
categories = string.Join(", ", categorySet.value);
}
long averageMonthlySearches =
(ideas[AttributeType.SEARCH_VOLUME] as LongAttribute).value;
Money averageCpc = (ideas[AttributeType.AVERAGE_CPC] as MoneyAttribute).value;
double competition = (ideas[AttributeType.COMPETITION] as DoubleAttribute).value;
Console.WriteLine("Keyword with text '{0}', average monthly search " +
"volume {1}, average CPC {2}, and competition {3:F2} was found with " +
"categories: {4}", keyword, averageMonthlySearches, averageCpc?.microAmount,
competition, categories);
Console.WriteLine("Keyword with text '{0}', and average monthly search volume " +
"'{1}' was found with categories: {2}", keyword, averageMonthlySearches,
categories);
i++;
}
}
selector.paging.IncreaseOffset();
} while (selector.paging.startIndex < page.totalNumEntries);
Console.WriteLine("Number of related keywords found: {0}", page.totalNumEntries);
} catch (Exception e) {
throw new System.ApplicationException("Failed to retrieve related keywords.", e);
}
}
}
Thanks!