<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Google Data &#187; Eric Koleda</title>
	<atom:link href="/author/eric-koleda/feed/" rel="self" type="application/rss+xml" />
	<link>https://googledata.org</link>
	<description>Everything Google: News, Products, Services, Content, Culture</description>
	<lastBuildDate>Wed, 26 Oct 2011 02:57:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Tablet Targeting in v201101</title>
		<link>https://googledata.org/google-adwords-api/tablet-targeting-in-v201101/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=tablet-targeting-in-v201101</link>
		<comments>https://googledata.org/google-adwords-api/tablet-targeting-in-v201101/#comments</comments>
		<pubDate>Mon, 29 Aug 2011 20:56:00 +0000</pubDate>
		<dc:creator>Eric Koleda</dc:creator>
				<category><![CDATA[Google Adwords API]]></category>
		<category><![CDATA[adwords api]]></category>
		<category><![CDATA[adwords integration]]></category>
		<category><![CDATA[Google Adwords]]></category>
		<category><![CDATA[mobile]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=b0521b8f74e25ef785b180871f095cf0</guid>
		<description><![CDATA[Last month the device targeting options in AdWords were expanded to include new settings for tablets.  Previously tablets had counted as mobile devices, with the iPad listed as one such device.  The AdWords API worked the same way, using the Platfo...]]></description>
			<content:encoded><![CDATA[<p><a href="http://adwords.blogspot.com/2011/07/new-tablet-targeting-options-now.html">Last month</a> the device targeting options in AdWords were expanded to include new settings for tablets.  Previously tablets had counted as mobile devices, with the iPad listed as one such device.  The AdWords API worked the same way, using the <code><a href="http://code.google.com/apis/adwords/docs/reference/v201101/CampaignTargetService.PlatformTarget.html">PlatformTarget</a></code> <code>HIGH_END_MOBILE</code> for both mobile devices and tablets and the <code><a href="http://code.google.com/apis/adwords/docs/reference/v201101/CampaignTargetService.MobilePlatformTarget.html">MobilePlatformTarget</a></code> "iPad" for the iPad specifically.  Representing these new tablet settings in the current v201101 version of the API is tricky, and in this blog post we’ll cover the behavior you can expect.</p><p>The first thing to note is that there is no <code>PlatformTarget </code>that represents tablets, since enum values can’t be added to an existing version.  You can look at the <code>MobilePlatformTarget</code>s returned to get a better idea of what’s being targeted, but be aware that the meaning of some of the <a href="http://code.google.com/apis/adwords/docs/appendix/mobileplatforms.html">values</a> have changed.  Specifically, the value "iPad" now represents any tablet, and the value "iPhone" represents any iOS device.</p><p>The tables below show the <code>PlatformTarget</code>s and <code>MobilePlatformTarget</code>s returned for every combination of device and operating system that can be set in the UI.</p><table border="1" style="width:100%">  <tbody>    <tr>      <td>      </td>      <td>            <strong>Computers</strong>      </td>      <td>               <strong>Mobile</strong>            </td>      <td>                  <strong>Tablets</strong>              </td>    </tr>    <tr>      <td>                  <strong>Android</strong>              </td>      <td>        DESKTOP<br/>        (None)      </td>      <td>        HIGH_END_MOBILE<br/>        Android      </td>      <td>        HIGH_END_MOBILE<br/>        Android, iPad      </td>    </tr>    <tr>      <td>                  <strong>iOS</strong>              </td>      <td>        DESKTOP<br/>        (None)      </td>      <td>        HIGH_END_MOBILE<br/>        iPhone      </td>      <td>        HIGH_END_MOBILE<br/>        iPhone, iPad      </td>    </tr>    <tr>      <td>                  <strong>webOS</strong>              </td>      <td>        DESKTOP<br/>        (None)      </td>      <td>        HIGH_END_MOBILE<br/>        Palm      </td>      <td>        HIGH_END_MOBILE<br/>        Palm, iPad      </td>    </tr>    <tr>      <td>                  <strong>All</strong>              </td>      <td>        DESKTOP<br/>        (None)      </td>      <td>        HIGH_END_MOBILE<br/>        (None)      </td>      <td>        HIGH_END_MOBILE<br/>        iPad      </td>    </tr>  </tbody></table><br/><table border="1" style="width:100%">  <tbody>    <tr>      <td>                  <strong/>              </td>      <td>                  <strong>Computers &amp; Mobile</strong>              </td>      <td>                  <strong>Computers &amp; Tablets</strong>              </td>      <td>                  <strong>Mobile &amp; Tablets</strong>              </td>      <td>                  <strong>All</strong>              </td>    </tr>    <tr>      <td>                  <strong>Android</strong>              </td>      <td>        (None)<br/>        Android      </td>      <td>        DESKTOP<br/>        Android, iPad      </td>      <td>        HIGH_END_MOBILE<br/>        Android, iPad      </td>      <td>        (None)<br/>        Android, iPad      </td>    </tr>    <tr>      <td>                  <strong>iOS</strong>              </td>      <td>        (None)<br/>        iPhone      </td>      <td>        DESKTOP<br/>        iPhone, iPad      </td>      <td>        HIGH_END_MOBILE<br/>        iPhone, iPad      </td>      <td>        (None)<br/>        iPhone, iPad      </td>    </tr>    <tr>      <td>                  <strong>webOS</strong>              </td>      <td>        (None)<br/>        Palm      </td>      <td>        DESKTOP<br/>        Palm, iPad      </td>      <td>        HIGH_END_MOBILE<br/>        Palm, iPad      </td>      <td>        (None)<br/>        Palm, iPad      </td>    </tr>    <tr>      <td>                  <strong>All</strong>              </td>      <td>        (None)<br/>        (None)      </td>      <td>        DESKTOP<br/>        (None)      </td>      <td>        HIGH_END_MOBILE<br/>        (None)      </td>      <td>        (None)<br/>        (None)      </td>    </tr>  </tbody></table>
<br /><p>As you can see there are certain states in the UI that appear identical in the API. This is unfortunate behavior that is due to the limited values available in the current version of the API.  Specifically, it’s not possible to distinguish:</p><ol start="1"><li>Tablets vs. Mobile &amp; Tablets</li><li>Mobile with all operating systems vs. Mobile &amp; Tablets with all operating systems</li><li>Computers vs. Computers &amp; Tablets with all operating systems</li><li>Computer &amp; Mobile with all operating systems vs. All devices with all operating systems</li></ol><p>Likewise, using these values in a mutate request may inadvertently change the targeting options of the campaign since the system will always apply the broadest targeting that matches the input.  For example, let’s say you have a campaign that was configured in the AdWords web interface to target just Android tablets.  If you called <code>CampaignTargetService.get() </code>you would get back the <code>PlatformTarget</code> "HIGH_END_MOBILE" and the <code>MobilePlatformTargets</code> "Android" and "iPad".  If you then call <code>CampaignTargetService.mutate()</code>using those same values, the campaign will be updated to target both tablets and mobile devices that run Android.</p><p>What this means is that there are certain targeting combinations that can’t be determined or applied accurately in the v201101 version of the API.  In the next version of the API we plan to update these target types to support the new tablet settings, which will make reading and writing these combinations much simpler.  As always, if you have any questions about this topic you can reach us on the <a href="http://code.google.com/apis/adwords/forum.html">AdWords API forum</a>.</p><p>- <a href="https://profiles.google.com/eric.koleda.devrel"><img height="20" src="https://lh5.googleusercontent.com/-qbaZRXjidts/AAAAAAAAAAI/AAAAAAAAABo/HfCK2T4S-14/photo.jpg?sz=20" width="20" style="vertical-align: middle; border:none;"></a> <a href="https://profiles.google.com/eric.koleda.devrel" rel="author">Eric Koleda</a>, AdWords API Team</p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10373715-2220719953915881490?l=adwordsapi.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-adwords-api/tablet-targeting-in-v201101/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Fine grained partial failure in the BulkMutateJobService</title>
		<link>https://googledata.org/uncategorized/fine-grained-partial-failure-in-the-bulkmutatejobservice/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=fine-grained-partial-failure-in-the-bulkmutatejobservice</link>
		<comments>https://googledata.org/uncategorized/fine-grained-partial-failure-in-the-bulkmutatejobservice/#comments</comments>
		<pubDate>Fri, 22 Jul 2011 18:20:00 +0000</pubDate>
		<dc:creator>Eric Koleda</dc:creator>
				<category><![CDATA[Google Adwords API]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[adwords api]]></category>
		<category><![CDATA[adwords integration]]></category>
		<category><![CDATA[Google Adwords]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=fb833f63ee4d4ac7830fc9d5d54d008e</guid>
		<description><![CDATA[Since its introduction the BulkMutateJobService has provided support for partial failures, allowing some operations to succeed even though others have failed. Over the next few weeks we'll be rolling out improvements to this functionality, allowing for...]]></description>
			<content:encoded><![CDATA[Since its introduction the <a href="http://code.google.com/apis/adwords/docs/reference/latest/BulkMutateJobService.html">BulkMutateJobService</a> has provided support for partial failures, allowing some operations to succeed even though others have failed. Over the next few weeks we'll be rolling out improvements to this functionality, allowing for more granular failures when possible.
<br />
<br />Bulk mutate jobs process operations in batches, and a failed operation will cause the entire batch to fail, but not the rest of the job. The results for a failed batch start with a <a href="http://code.google.com/apis/adwords/docs/reference/latest/BulkMutateJobService.FailureResult.html">FailureResult</a> that holds all the errors generated by the operations in that batch. It is followed by a series of <a href="http://code.google.com/apis/adwords/docs/reference/latest/BulkMutateJobService.BatchFailureResult.html">BatchFailureResults</a> which act as placeholders for the rest of the operations in the batch. More information about how these failures are reported can be found in a <a href="http://adwordsapi.blogspot.com/2010/04/discover-v2009-error-handling-in.html">previous blog post</a> we did on the topic.
<br />
<br />In v201008 we enabled <a href="http://adwordsapi.blogspot.com/2010/12/discover-v201008-partial-failure-for.html">partial failure</a> support for the synchronous AdGroupCriterionService.  Unlike the behavior in the BulkMutateJobService, this version of partial failure allows individual operations to fail without affecting successful ones. This method of partial failure is preferred as it cuts down on the number of retries needed.
<br />
<br />While we can't update the BulkMutateJobService to process all operations this way, we are able to enable it for operations that use an underlying service that does support granular partial failures. Starting August 1st, operations of type AdGroupCriterionOperation and AdGroupAdOperation processed by the BulkMutateJobService may start failing granularly instead of in batches.
<br />
<br />Let's see how this will change the results returned.<h4>Existing partial failure behavior</h4><table border="1" width="100%" cellpadding="5px"><tr>    <th>Operation</th>    <th>Result</th>  </tr><tr>    <td>AdGroupCriterionOperation</td>    <td>FailureResult <ul style="margin:0"><li>cause.errors[0].fieldPath = "operations[1]..."</li><li >cause.errors[1].fieldPath = "operations[2]..."</li></ul></td>  </tr><tr>    <td >AdGroupCriterionOperation (Invalid)</td>    <td>BatchFailureResult <ul style="margin:0"><li>operationIndexInBatch = 1</li></ul></td>  </tr><tr>    <td>AdGroupCriterionOperation (Invalid)</td>    <td>BatchFailureResult <ul style="margin:0"><li>operationIndexInBatch = 2</li></ul></td>  </tr><tr>    <td>AdGroupCriterionOperation</td>    <td>BatchFailureResult <ul style="margin:0"><li>operationIndexInBatch = 3</li></ul></td>  </tr></table>
<br />Before the change the invalid operations will cause other valid operations to fail. The FailureResult is the first result in the batch, even if the operation at the position was valid. The field path of the errors indicates the index of the invalid operations relative to the start of the batch.<h4>New granular partial failure behavior</h4><table border="1" width="100%" cellpadding="5px"><tr>    <th>Operation</th>    <th>Result</th>  </tr><tr>    <td>AdGroupCriterionOperation</td>    <td>ReturnValueResult</td>  </tr><tr>    <td>AdGroupCriterionOperation (Invalid)</td>    <td>FailureResult<ul style="margin:0"><li>cause.errors[0].fieldPath = "operations[0]..."</li></ul></td>  </tr><tr>    <td>AdGroupCriterionOperation (Invalid)</td>    <td>FailureResult<ul style="margin:0"><li>cause.errors[0].fieldPath = "operations[0]..."</li></ul></td>  </tr><tr>    <td>AdGroupCriterionOperation</td>    <td>ReturnValueResult</td>  </tr></table>
<br />After the change invalid operations will not affect other valid operations in the same batch. Each invalid operation will have a corresponding FailureResult. There may still be cases where BatchFailureResults are returned for these operations, such as if there is a general error with the account that cannot be attributed to any specific operation.
<br />
<br />So how does this affect code you've already written to process BulkMutateJob results?  The good news is that if you've written your code to allow for a variable batch size (no hard coded batch size) then no changes are needed! Invalid operations are essentially processed as batches of one, and the same logic that you use to process the results today should work perfectly with these new granular failures. If your application is currently expecting a batch of a specific size then you should update it to detect the start and end of batches dynamically.
<br />
<br />If you have any questions about how these new granular failures work, or feedback on how we can further improve the error handling in the API, add a post to the <a href="http://code.google.com/apis/adwords/forum.html">AdWords API forum</a>.
<br />
<br /><strong>Update 2011-08-25</strong>
<br />This change has been fully deployed and <em>all</em> BulkMutateJobs will be processed with granular partial failures enabled.
<br />
<br />- <a href="https://profiles.google.com/eric.koleda.devrel"><img src="https://lh5.googleusercontent.com/-qbaZRXjidts/AAAAAAAAAAI/AAAAAAAAABo/HfCK2T4S-14/photo.jpg?sz=20" style="vertical-align: middle; border:none;"></a> <a href="https://profiles.google.com/eric.koleda.devrel">Eric Koleda</a>, AdWords API Team<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10373715-8828099308579265625?l=adwordsapi.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/uncategorized/fine-grained-partial-failure-in-the-bulkmutatejobservice/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Enhanced documentation for selectors and reports</title>
		<link>https://googledata.org/google-adwords-api/enhanced-documentation-for-selectors-and-reports/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=enhanced-documentation-for-selectors-and-reports</link>
		<comments>https://googledata.org/google-adwords-api/enhanced-documentation-for-selectors-and-reports/#comments</comments>
		<pubDate>Wed, 22 Jun 2011 21:31:00 +0000</pubDate>
		<dc:creator>Eric Koleda</dc:creator>
				<category><![CDATA[Google Adwords API]]></category>
		<category><![CDATA[adwords api]]></category>
		<category><![CDATA[adwords integration]]></category>
		<category><![CDATA[Google Adwords]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=5b2c0010e0e72df8cd538b02ed0fdb0b</guid>
		<description><![CDATA[We understand the importance of documentation when navigating a system as complex as the AdWords API; for this reason we’ve been working to expand our reference materials to include even more information.First off, we’ve published a new Selector Fi...]]></description>
			<content:encoded><![CDATA[We understand the importance of documentation when navigating a system as complex as the AdWords API; for this reason we’ve been working to expand our reference materials to include even more information.<br /><br />First off, we’ve published a new <a href="http://code.google.com/apis/adwords/docs/appendix/selectorfields.html">Selector Fields</a> page that provides information about the fields that can be used in <a href="http://adwordsapi.blogspot.com/2011/03/discover-v201101-generic-selectors.html">generic selectors</a>.  This information was always available on an object’s individual reference page, but now we’ve aggregated it together across entire services for quicker lookups.<br /><br /><a href="http://2.bp.blogspot.com/-mcn0CYsRM9g/TgJgL-X-VXI/AAAAAAAAACU/9N-yHmgd_9U/s1600/selectorguide.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/-mcn0CYsRM9g/TgJgL-X-VXI/AAAAAAAAACU/9N-yHmgd_9U/s600/selectorguide.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5621161043750180210" /></a><br />Additional information on how to migrate from the service-specific selectors used in versions v200909 through v201008 is available in the <a href="http://code.google.com/apis/adwords/docs/selectorguide.html">Selector Migration Reference</a>.<br /><br />Next, we’ve added more notes to the <a href="http://code.google.com/apis/adwords/docs/appendix/reports.html">Report Types</a> page to indicate which fields will prevent zero-impression rows from being returned in the downloaded report.  In general, any field that is a property of an impression or click (such as the date, network, etc) will prevent rows with no impressions from being returned, but we decided to explicitly mark these fields so that the behavior is clear.<br /><br /><a href="http://2.bp.blogspot.com/-pmpydEtr4b4/TgJg3qaXhzI/AAAAAAAAACc/her2Miy8Lb8/s1600/report-notes1.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/-pmpydEtr4b4/TgJg3qaXhzI/AAAAAAAAACc/her2Miy8Lb8/s600/report-notes1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5621161794305754930" /></a><br />Finally, we’ve added new tips to our <a href="http://code.google.com/apis/adwords/docs/bestpractices.html">Best Practices Guide</a> on topics such as deleting entities and using gzip compression.  The guide is a great resource for developers starting an AdWords API project, but is also useful for established developers trying to increase the efficiency of their applications.<br /><br />We’re always looking to expand and improve our documentation, so if you have any feedback for us please post it to the <a href="http://code.google.com/apis/adwords/forum.html">forum</a>.<br /><br />- <a href="https://profiles.google.com/eric.koleda.devrel"><img src="https://lh5.googleusercontent.com/-qbaZRXjidts/AAAAAAAAAAI/AAAAAAAAABo/HfCK2T4S-14/photo.jpg?sz=20" style="vertical-align: middle; border:none;"></a> <a href="https://profiles.google.com/eric.koleda.devrel">Eric Koleda</a>, AdWords API Team<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10373715-566270897690672451?l=adwordsapi.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-adwords-api/enhanced-documentation-for-selectors-and-reports/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using apc (User agent is rejected)
Database Caching 1/19 queries in 0.225 seconds using apc
Object Caching 513/552 objects using apc

Served from: googledata.org @ 2011-10-26 08:36:10 -->