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 [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 
"AdWords API Forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to