Here's my code
```
internal string
GenerateKeywordHistoricalMetricsByKeyword_2(GoogleAdsClient client,
string
ccid,
string
product_url,
string
language,
string
location,
string
network,
string
attribute,
string
adgroup,
string
v,
bool
debug)
{
TraceUtilities.Configure(TraceUtilities.DETAILED_REQUEST_LOGS_SOURCE,
$"C:\\logs\\GenerateKeywordHistoricalMetricsByKeyword_2_{Me}_{System.Guid.NewGuid()}_trace.log",
System.Diagnostics.SourceLevels.All);
if (debug) Debugger.Launch();
if (network == "Gcsp") network = "GoogleSearch";
KeywordPlanIdeaServiceClient keywordPlanIdeaService =
client.GetService(Services.V18.KeywordPlanIdeaService);
GenerateKeywordHistoricalMetricsRequest request =
new GenerateKeywordHistoricalMetricsRequest();
request.CustomerId = ccid;
request.Keywords.AddRange(from word in product_url.Split(',')
select word.Trim());
request.GeoTargetConstants.AddRange(NamedToId(location));
request.Language = language;
request.KeywordPlanNetwork = GetNetwork(network);
request.IncludeAdultKeywords = false;
request.HistoricalMetricsOptions = new
Google.Ads.GoogleAds.V18.Common.HistoricalMetricsOptions()
{
IncludeAverageCpc = true
};
//request.AggregateMetrics.AggregateMetricTypes.Add(KeywordPlanAggregateMetricTypeEnum.Types.KeywordPlanAggregateMetricType.Device);
try
{
GenerateKeywordHistoricalMetricsResponse response =
keywordPlanIdeaService.GenerateKeywordHistoricalMetrics(request);
return JsonConvert.SerializeObject(response);
}
catch (Exception e)
{
return JsonConvert.SerializeObject(e.Message);
}
}
```
It fails in the try block. The TraceUtilities call generates an empty file.
The Exception's e.Message contains
```
"Status(StatusCode=\"PermissionDenied\", Detail=\"The caller does not have
permission\", DebugException=\"Grpc.Core.Internal.CoreErrorDetailException:
{\"created\":\"@1729751872.851000000\",\"description\":\"Error received
from peer
ipv4:142.250.70.170:443\",\"file\":\"..\\..\\..\\src\\core\\lib\\surface\\call.cc\",\"file_line\":1070,\"grpc_message\":\"The
caller does not have permission\",\"grpc_status\":7}\")"
```
I am utterly mystified. What does "The caller does not have permission"
mean? If it's to do with the login-customer-id, that can be seen in the
`client` object at `LoginCustomerId` and hold a meaningful value.
-Bruce
--
--
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
Also find us on our blog:
https://googleadsdeveloper.blogspot.com/
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
You received this message because you are subscribed to the Google
Groups "AdWords API and Google Ads API Forum" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/adwords-api?hl=en
---
You received this message because you are subscribed to the Google Groups
"Google Ads API and AdWords API Forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion visit
https://groups.google.com/d/msgid/adwords-api/c0662dcf-d12f-4982-9caa-a32e8032a09en%40googlegroups.com.