Hi!
Lately, I noticed my code to update ad extensions stopped working... I'm not sure if it happened after a change of release or at another time.
Language: PHP (5.6.1 and also tried with 7.1.10 on another server)
Library version: 19 (we're in the process of migrating to version 30 by the end of the year)
Revision: 201705
Problem:
The code I built to update a sitelink (and other existing ad extensions in fact) is not working anymore. I mean I create the operation, send it to the FeedItemService and I get a reply without any error... but it doesn't have all the information I sent. For Sitelinks, it doesn't retain the destinationURLs information... thus making the SiteLink invalid and unusuable. Same thing happens when I try to create a new Sitelink... it provides me back with a FeedItemReturnValue object... with a FeedItemID but without DestinationURLs (which in my opinion is weird because how could it successfully generate an ID for an object that in its opinion is missing a required field?).
Here's an example of the FeedItemOperation object I send to the service (altered the string contents, but not anything else - all strngs really used are valid, free of any illegal characters and encoded in UTF8 of course):
Array
(
[0] => FeedItemOperation Object
(
[operand] => FeedItem Object
(
[feedId] => 99999999
[feedItemId] => 888888888888
[status] =>
[startTime] =>
[endTime] =>
[attributeValues] => Array
(
[0] => FeedItemAttributeValue Object
(
[feedAttributeId] => 1
[integerValue] =>
[doubleValue] =>
[booleanValue] =>
[stringValue] => Hello
[integerValues] =>
[doubleValues] =>
[booleanValues] =>
[stringValues] =>
[moneyWithCurrencyValue] =>
)
[1] => FeedItemAttributeValue Object
(
[feedAttributeId] => 5
[integerValue] =>
[doubleValue] =>
[booleanValue] =>
[stringValue] =>
[integerValues] =>
[doubleValues] =>
[booleanValues] =>
[stringValues] => Array
(
[0] => https://www.abc.ca/FinancePreQualForm
)
[moneyWithCurrencyValue] =>
)
[2] => FeedItemAttributeValue Object
(
[feedAttributeId] => 3
[integerValue] =>
[doubleValue] =>
[booleanValue] =>
[stringValue] => 1,2,3 Go
[integerValues] =>
[doubleValues] =>
[booleanValues] =>
[stringValues] =>
[moneyWithCurrencyValue] =>
)
[3] => FeedItemAttributeValue Object
(
[feedAttributeId] => 4
[integerValue] =>
[doubleValue] =>
[booleanValue] =>
[stringValue] => bla bla bla!
[integerValues] =>
[doubleValues] =>
[booleanValues] =>
[stringValues] =>
[moneyWithCurrencyValue] =>
)
)
[policyData] =>
[devicePreference] =>
[scheduling] =>
[campaignTargeting] =>
[adGroupTargeting] =>
[keywordTargeting] =>
[geoTargeting] =>
[geoTargetingRestriction] =>
[urlCustomParameters] =>
)
[operator] => SET
[OperationType] =>
[_parameterMap:Operation:private] => Array
(
[Operation.Type] => OperationType
)
)
)
Notice the presence of the AttributeValue[1] regarding the Destination_URLs info.
In response, I do get the following object back:
FeedItemReturnValue Object
(
[value] => Array
(
[0] => FeedItem Object
(
[feedId] => 9999999
[feedItemId] => 88888888
[status] => ENABLED
[startTime] =>
[endTime] =>
[attributeValues] => Array
(
[0] => FeedItemAttributeValue Object
(
[feedAttributeId] => 1
[integerValue] =>
[doubleValue] =>
[booleanValue] =>
[stringValue] => Hello
[integerValues] =>
[doubleValues] =>
[booleanValues] =>
[stringValues] =>
[moneyWithCurrencyValue] =>
)
[1] => FeedItemAttributeValue Object
(
[feedAttributeId] => 3
[integerValue] =>
[doubleValue] =>
[booleanValue] =>
[stringValue] => 1,2,3 Go
[integerValues] =>
[doubleValues] =>
[booleanValues] =>
[stringValues] =>
[moneyWithCurrencyValue] =>
)
[2] => FeedItemAttributeValue Object
(
[feedAttributeId] => 4
[integerValue] =>
[doubleValue] =>
[booleanValue] =>
[stringValue] => bla bla bla!
[integerValues] =>
[doubleValues] =>
[booleanValues] =>
[stringValues] =>
[moneyWithCurrencyValue] =>
)
)
[policyData] =>
[devicePreference] =>
[scheduling] =>
[campaignTargeting] =>
[adGroupTargeting] =>
[keywordTargeting] =>
[geoTargeting] =>
[geoTargetingRestriction] =>
[urlCustomParameters] =>
)
)
[partialFailureErrors] =>
[ListReturnValueType] => FeedItemReturnValue
[_parameterMap:ListReturnValue:private] => Array
(
[ListReturnValue.Type] => ListReturnValueType
)
)
Notice the absence of the Destination_URLs info... and the absence of error too.
What am I missing?
Thanks,
Sylvain