Hi Josh, 

Glad to see the service is working as expected. I didn't realize 
CustomerSyncService was that precise! I agree this probably isn't your 
typical use case though. Thank you for such a detailed response!

Stacie

On Friday, July 25, 2014 3:50:19 PM UTC-4, Josh Radcliff (AdWords API Team) 
wrote:
>
> Hi Stacie,
>
> I ran some tests for that account and found that the date/time range for 
> the *CustomerSyncService* request modified the returned values as follows:
>
> (NOTE: The feed item in question was removed @ 2014-07-25 
> 06:57:44 America/Los_Angeles)
>
> 1. 20140725 065743 America/Los_Angeles - 20140725 065746 
> America/Los_Angeles
> Returned feed item ID 783546139 in the removedFeedItems 
> <https://developers.google.com/adwords/api/docs/reference/v201406/CustomerSyncService.FeedChangeData#removedFeedItems>
>  collection
>
> 2. 20140725 0657*00* America/Los_Angeles - 20140725 065746 
> America/Los_Angeles
> Same as #1
>
> 3. 20140725 065*000* America/Los_Angeles - 20140725 065746 
> America/Los_Angeles
> Same as #1
>
> 4. 20140725 06*0000* America/Los_Angeles - 20140725 065746 
> America/Los_Angeles
> Returned
>         <ns2:changedFeeds>
>           <ns2:feedId>18907067</ns2:feedId>
>           <ns2:feedChangeStatus>NEW</ns2:feedChangeStatus>
>         </ns2:changedFeeds>
>         <ns2:lastChangeTimestamp>20140725 065746 
> America/Los_Angeles</ns2:lastChangeTimestamp>
>
> The reason the response changed when I went back to *06:00:00 
> America/Los_Angeles* is that now the date/time range of my request 
> encompassed the *creation* of the *Feed* and the *FeedItem*, which 
> occurred at *2014-07-25 06:40:02 America/Los_Angeles*, as well as the 
> deletion of *FeedItem*s at *2014-07-25 06:40:39 America/Los_Angeles *and 
> *2014-07-25 
> 06:57:44 America/Los_Angeles*. Per the docs on 
> FeedChangeData.feedChangeStatus 
> <https://developers.google.com/adwords/api/docs/reference/v201406/CustomerSyncService.FeedChangeData#feedChangeStatus>,
>  
> the value of *NEW* indicates:
>
> This entity was created during the time frame we're looking at. We will 
>> not enumerate all of the individual changes to this entity and its 
>> children. Instead it should be loaded from the appropriate service.
>
>
> In the usual course of operations, you probably won't be creating a feed, 
> creating its feed items, and then deleting its feed items all in the space 
> of a few minutes. I think the more likely use case is that you'll create a 
> feed and its feed items, and then several days/weeks/months later, you'll 
> delete or update some feed items. In the latter use case, the sync service 
> should give you back FeedChangeData.removedFeedItems 
> <https://developers.google.com/adwords/api/docs/reference/v201406/CustomerSyncService.FeedChangeData#removedFeedItems>
>  or FeedChangeData.changedFeedItems 
> <https://developers.google.com/adwords/api/docs/reference/v201406/CustomerSyncService.FeedChangeData#changedFeedItems>
>  if 
> your date range just covers the window where the feed items were deleted or 
> updated.
>
> If you see results that contradict my explanation, please let me know. 
> Thanks for helping out with these questions -- it's great to have others 
> from the community contributing answers!
>
> Best regards,
> Josh, AdWords API Team
>
>
> On Friday, July 25, 2014 1:25:45 PM UTC-4, Stacie Waleyko wrote:
>>
>> Hi Josh,
>>
>> I was trying this out on a non-test account. Here is the request and 
>> response. I created and deleted the feed today so maybe that explains it? I 
>> did play around with the dateTimeRange and tried using a window that would 
>> only have the feed item deletion but had no luck. The feed item was removed 
>> at 13:57:44 GMT and the requestId from the SOAP response is 
>> 0004ff04f52197300a4c12456c007ded. Let me know if you need additional 
>> information.
>>
>> *CustomerSyncService Request:*
>>
>> <soapenv:Envelope xmlns:soapenv="
>> http://schemas.xmlsoap.org/soap/envelope/"; xmlns:v20="
>> https://adwords.google.com/api/adwords/ch/v201406"; xmlns:v201="
>> https://adwords.google.com/api/adwords/cm/v201406";>
>>    <soapenv:Header>
>>       <v20:RequestHeader>
>>          <v201:clientCustomerId>848-879-3985</v201:clientCustomerId>
>>          <v201:developerToken>*****</v201:developerToken>
>>          <v201:userAgent>*****</v201:userAgent>
>>          <v201:validateOnly>false</v201:validateOnly>
>>          <v201:partialFailure>false</v201:partialFailure>
>>       </v20:RequestHeader>
>>    </soapenv:Header>
>>    <soapenv:Body>
>>       <v20:get>
>>          <v20:selector>
>>             <v20:dateTimeRange>
>>                <v201:min>20140725 000000 UTC</v201:min>
>>                <v201:max>20140725 235959 UTC</v201:max>
>>             </v20:dateTimeRange>
>>             <v20:campaignIds>209752968</v20:campaignIds>
>>             <v20:feedIds>18907067</v20:feedIds>
>>          </v20:selector>
>>       </v20:get>
>>    </soapenv:Body>
>> </soapenv:Envelope>
>>
>> *CustomerSyncService Response:*
>>
>> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";>
>>    <soap:Header>
>>       <ns2:ResponseHeader xmlns:ns2="
>> https://adwords.google.com/api/adwords/ch/v201406"; xmlns="
>> https://adwords.google.com/api/adwords/cm/v201406";>
>>          <requestId>0004ff07bb17c9f80a42bfa2a60010b4</requestId>
>>          <serviceName>CustomerSyncService</serviceName>
>>          <methodName>get</methodName>
>>          <operations>0</operations>
>>          <responseTime>223</responseTime>
>>       </ns2:ResponseHeader>
>>    </soap:Header>
>>    <soap:Body>
>>       <ns2:getResponse xmlns="
>> https://adwords.google.com/api/adwords/cm/v201406"; xmlns:ns2="
>> https://adwords.google.com/api/adwords/ch/v201406";>
>>          <ns2:rval>
>>             <ns2:changedCampaigns>
>>                <ns2:campaignId>209752968</ns2:campaignId>
>>                
>> <ns2:campaignChangeStatus>FIELDS_UNCHANGED</ns2:campaignChangeStatus>
>>                <ns2:removedFeeds>18907067</ns2:removedFeeds>
>>                
>> <ns2:campaignTargetingChanged>false</ns2:campaignTargetingChanged>
>>             </ns2:changedCampaigns>
>>             <ns2:changedFeeds>
>>                <ns2:feedId>18907067</ns2:feedId>
>>                
>> <ns2:feedChangeStatus>FIELDS_UNCHANGED</ns2:feedChangeStatus>
>>             </ns2:changedFeeds>
>>             <ns2:lastChangeTimestamp>20140725 143508 
>> UTC</ns2:lastChangeTimestamp>
>>          </ns2:rval>
>>       </ns2:getResponse>
>>    </soap:Body>
>> </soap:Envelope>
>>
>> When I make a call to FeedItemService to get the feed items I see that 
>> one is removed:
>>
>> *FeedItemService Request:*
>>
>> <soapenv:Envelope xmlns:soapenv="
>> http://schemas.xmlsoap.org/soap/envelope/"; xmlns:v20="
>> https://adwords.google.com/api/adwords/cm/v201406";>
>>    <soapenv:Header>
>>       <v20:RequestHeader>
>>          <v20:clientCustomerId>848-879-3985</v20:clientCustomerId>
>>          <v20:developerToken>*****</v20:developerToken>
>>          <v20:userAgent>*****</v20:userAgent>
>>          <v20:validateOnly>false</v20:validateOnly>
>>          <v20:partialFailure>true</v20:partialFailure>
>>       </v20:RequestHeader>
>>    </soapenv:Header>
>>    <soapenv:Body>
>>       <v20:get>
>>           <v20:selector>
>>             <v20:fields>FeedItemId</v20:fields>
>>             <v20:fields>Status</v20:fields>
>>             <v20:predicates>
>>                <v20:field>FeedId</v20:field>
>>                <v20:operator>EQUALS</v20:operator>
>>                <v20:values>18907067</v20:values>
>>             </v20:predicates>
>>             <v20:dateRange>            
>>                <v20:min>20140725</v20:min>
>>                <v20:max>20140726</v20:max>
>>             </v20:dateRange>
>>          </v20:selector>
>>       </v20:get>
>>    </soapenv:Body>
>> </soapenv:Envelope>
>>
>> *FeedItemService Response:*
>>
>> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";>
>>    <soap:Header>
>>       <ResponseHeader xmlns="
>> https://adwords.google.com/api/adwords/cm/v201406";>
>>          <requestId>0004ff051bc4b4300a4c12456c007ded</requestId>
>>          <serviceName>FeedItemService</serviceName>
>>          <methodName>get</methodName>
>>          <operations>0</operations>
>>          <responseTime>237</responseTime>
>>       </ResponseHeader>
>>    </soap:Header>
>>    <soap:Body>
>>       <getResponse xmlns="
>> https://adwords.google.com/api/adwords/cm/v201406";>
>>          <rval>
>>             <totalNumEntries>2</totalNumEntries>
>>             <Page.Type>FeedItemPage</Page.Type>
>>             <entries>
>>                <feedId>18907067</feedId>
>>                <feedItemId>783546139</feedItemId>
>>                <status>REMOVED</status>
>>             </entries>
>>             <entries>
>>                <feedId>18907067</feedId>
>>                <feedItemId>783546142</feedItemId>
>>                <status>ENABLED</status>
>>             </entries>
>>          </rval>
>>       </getResponse>
>>    </soap:Body>
>> </soap:Envelope>
>>
>>
>> Thanks,
>>
>> Stacie
>>
>> On Friday, July 25, 2014 8:10:31 AM UTC-7, Josh Radcliff (AdWords API 
>> Team) wrote:
>>>
>>> Hi Giles,
>>>
>>> Stacie is absolutely correct -- the proper way to delete a FeedItem is 
>>> to pass it in a REMOVE operation to FeedItemService.mutate 
>>> <https://developers.google.com/adwords/api/docs/reference/v201406/FeedItemService#mutate>.
>>>  
>>> You can also update the FeedItem's attribute values if you prefer that 
>>> approach, as Stacie mentioned.
>>>
>>> Regarding *CustomerSyncService*, I just tried removing a FeedItem on a 
>>> test account and a non-test account. On the test account, 
>>> *CustomerSyncService* was not returning any 
>>> FeedChangeData.removedFeedItems 
>>> <https://developers.google.com/adwords/api/docs/reference/v201406/CustomerSyncService.FeedChangeData#removedFeedItems>,
>>>  
>>> but on the non-test account, *CustomerSyncService* returned the 
>>> expected feed item IDs in its FeedChangeData.removedFeedItems 
>>> <https://developers.google.com/adwords/api/docs/reference/v201406/CustomerSyncService.FeedChangeData#removedFeedItems>
>>> .
>>>
>>> *Stacie* - were you trying this out on a test account, by any chance?
>>>
>>> One tip: don't forget to specify the feed IDs in your 
>>> CustomerSyncSelector 
>>> <https://developers.google.com/adwords/api/docs/reference/v201406/CustomerSyncService.CustomerSyncSelector#feedIds>
>>>  (I 
>>> missed that myself the first time!).
>>>
>>> Cheers,
>>> Josh, AdWords API Team
>>>
>>> On Friday, July 25, 2014 10:49:58 AM UTC-4, Giles Bodger wrote:
>>>>
>>>> Thanks again for that Stacie - 
>>>>
>>>> I wonder if any of the AdWords Engineers can help on this ?
>>>>
>>>> If there is a limit set on the number of FeedItems on an account then 
>>>> surely there MUST be a way to delete a FeedItem.
>>>>
>>>> Can one of the engineers assist and then explain how in a follow up 
>>>> sync i would see the deletion / removal ?
>>>>
>>>> cheers
>>>>
>>>> On Friday, July 25, 2014 3:41:39 PM UTC+1, Stacie Waleyko wrote:
>>>>>
>>>>> No problem. I just tried removing a feed item and making a call to 
>>>>> CustomerSyncService. I was surprised to see the feed item id was not in 
>>>>> the 
>>>>> list of deleted/removed feed items (the response actually didn't even 
>>>>> have 
>>>>> a list of removedFeedItems). I even tried deleting the campaign feed and 
>>>>> it 
>>>>> still wasn't returned in the list. If you can't get it to work I 
>>>>> recommend 
>>>>> making a GET call to FeedItemService to get the status of the feed items. 
>>>>> The selector takes a dateRange (but not dateTimeRange like 
>>>>> CustomerSyncService). Good luck!
>>>>>
>>>>> On Friday, July 25, 2014 3:04:57 AM UTC-7, Giles Bodger wrote:
>>>>>>
>>>>>> Thanks for that Stacie - 
>>>>>>
>>>>>> can I presume that any FeedItem that I set to "REMOVE" will then pre 
>>>>>> present in the next CustomerSyncService's  FeedChangedData object's 
>>>>>> deletedFeedItems collection ?
>>>>>>
>>>>>> many thanks in advance :)
>>>>>>
>>>>>> On Thursday, July 24, 2014 2:46:05 PM UTC+1, Stacie Waleyko wrote:
>>>>>>>
>>>>>>>
>>>>>>> Hi Giles,
>>>>>>>
>>>>>>> Have you tried sending a mutate request to FeedItemService with the 
>>>>>>> REMOVE operation? I don't think the API counts REMOVED items towards 
>>>>>>> the 
>>>>>>> limit.
>>>>>>>
>>>>>>> Stacie
>>>>>>>
>>>>>>> On Thursday, July 24, 2014 2:13:04 AM UTC-7, Giles Bodger wrote:
>>>>>>>>
>>>>>>>> Hi all,
>>>>>>>>
>>>>>>>> is there any way to delete a Sitelink or indeed ANY FeedItem from a 
>>>>>>>> Feed ??
>>>>>>>>
>>>>>>>> Our integration will potentially want to be removing and adding new 
>>>>>>>> Sitelinks VERY frequently as market forces on our business model 
>>>>>>>> dictate. I 
>>>>>>>> know there is a 250,000 limit on the number of FeedItems associated 
>>>>>>>> with an 
>>>>>>>> account and believe it or not, this could be within reach if we are 
>>>>>>>> not 
>>>>>>>> able to actually delete a FeedItem.
>>>>>>>>
>>>>>>>> I read here 
>>>>>>>> <https://www.en.adwords-community.com/t5/Advanced-Features/Sitelink-extensions-how-to-delete/td-p/138164>
>>>>>>>>  
>>>>>>>> - see the post by AdWordsEng-Igor from 12-09-2013 06:21AM - that there 
>>>>>>>> is 
>>>>>>>> NO way to delete a FeedItem
>>>>>>>>
>>>>>>>> So if we wanted to change a Sitelink, would we simply change the 
>>>>>>>> URL or Text on a specific FeedItem ID as opposed to deleting the old 
>>>>>>>> one 
>>>>>>>> and adding a new one ?
>>>>>>>>
>>>>>>>> That would seem logical - BUT is there a way, if we wanted, to 
>>>>>>>> delete a sitelink from a feed??
>>>>>>>>
>>>>>>>> many thanks in advance
>>>>>>>>
>>>>>>>> Giles
>>>>>>>>
>>>>>>>

-- 
-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
Also find us on our blog and Google+:
https://googleadsdeveloper.blogspot.com/
https://plus.google.com/+GoogleAdsDevelopers/posts
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~

You received this message because you are subscribed to the Google
Groups "AdWords API Forum" group.
To post to this group, send email to adwords-api@googlegroups.com
To unsubscribe from this group, send email to
adwords-api+unsubscr...@googlegroups.com
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 
"AdWords API Forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to adwords-api+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to