Hello,
I'm receiving the following error when I try to create a sitelink extension.
Google Error: Status(StatusCode=InvalidArgument, Detail="Request contains an invalid argument.")
Please see attached for ExtensionFeedItemOperations request information.
Below is the code I'm using:
string extensionResourceName = string.Empty;
List<ExtensionFeedItem> extensionFeedItem = new List<ExtensionFeedItem>();
List<ExtensionFeedItemOperation> extensionFeedItemOperations = new List<ExtensionFeedItemOperation>();
if (SLDataList.Count == 0) { return "Missing SiteLinks"; }
GoogleAdsServiceClient googleAdsService = Client.GetService(Services.V1.GoogleAdsService);
ExtensionFeedItemServiceClient serviceClient = Client.GetService(Services.V1.ExtensionFeedItemService);
foreach (SiteLinkData SiteLink in SLDataList )
{
extensionFeedItem.Add(CreateSiteLinkExtensionFeedItem(CreateSiteLinkFeedItem(SiteLink.SiteLinkText, SiteLink.SiteLinkURL)));
}
extensionFeedItemOperations = BuildExtensionOperation(extensionFeedItem);
try
{
MutateExtensionFeedItemsResponse response = serviceClient.MutateExtensionFeedItems(CustomerId.ToString(), extensionFeedItemOperations.ToArray());
if (response.Results.Count > 0) { extensionResourceName = response.Results[0].ResourceName; }
}
catch (Exception e)
{
return "Google Error: " + e.Message + " StackTrace: " + e.StackTrace.ToString();
}
if (extensionResourceName.Length > 0) { return "success"; } else { return ""; }
}
private SitelinkFeedItem CreateSiteLinkFeedItem(string SiteLinkText, string SiteLinkURL)
{
return new SitelinkFeedItem()
{
LinkText = SiteLinkText,
//FinalUrls = SiteLinkURL,
Line1 = "Teating stuff",
Line2 = "more testing"
};
}
private ExtensionFeedItem CreateSiteLinkExtensionFeedItem(SitelinkFeedItem sitelinkFeedItem)
{
return new ExtensionFeedItem()
{
SitelinkFeedItem = sitelinkFeedItem,
Status = FeedItemStatus.Enabled
};
}
private List<ExtensionFeedItemOperation> BuildExtensionOperation(List<ExtensionFeedItem> extensionFeedItems)
{
List<ExtensionFeedItemOperation> extensionOperations = new List<ExtensionFeedItemOperation>();
for (int i = 0; i < extensionFeedItems.Count; i++)
{
ExtensionFeedItemOperation extensionOperation = new ExtensionFeedItemOperation()
{
Create = extensionFeedItems[i]
};
extensionOperations.Add(extensionOperation);
}
return extensionOperations;
}
I'm also unable to set FinalUrls because its read only (see attached).
[DebuggerNonUserCode]
public RepeatedField<string> FinalUrls { get; }
Not sure what I'm missing. I would really appreciate it if someone could explain how to create a Sitelink extension using Google Ads API V1.
KDJ