CINXE.COM

Google Ads Developer Blog: dfp_reports

<!DOCTYPE html> <html class='v2 list-page' dir='ltr' itemscope='' itemtype='http://schema.org/Blog' lang='en' xmlns='http://www.w3.org/1999/xhtml' xmlns:b='http://www.google.com/2005/gml/b' xmlns:data='http://www.google.com/2005/gml/data' xmlns:expr='http://www.google.com/2005/gml/expr'> <head> <link href='https://www.blogger.com/static/v1/widgets/3566091532-css_bundle_v2.css' rel='stylesheet' type='text/css'/> <title> Google Ads Developer Blog: dfp_reports </title> <meta content='width=device-width, height=device-height, minimum-scale=1.0, initial-scale=1.0, user-scalable=0' name='viewport'/> <meta content='IE=Edge' http-equiv='X-UA-Compatible'/> <meta content='Google Ads Developer Blog' property='og:title'/> <meta content='en_US' property='og:locale'/> <meta content='http://ads-developers.googleblog.com/search/label/dfp_reports' property='og:url'/> <meta content='Google Ads Developer Blog' property='og:site_name'/> <!-- Twitter Card properties --> <meta content='Google Ads Developer Blog' property='og:title'/> <meta content='summary' name='twitter:card'/> <meta content='@google' name='twitter:creator'/> <link href='https://fonts.googleapis.com/css?family=Roboto:400italic,400,500,500italic,700,700italic' rel='stylesheet' type='text/css'/> <link href='https://fonts.googleapis.com/icon?family=Material+Icons' rel='stylesheet'/> <script src='https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js' type='text/javascript'></script> <script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-82055326-1', 'auto'); ga('send', 'pageview'); </script> <!-- End --> <style id='page-skin-1' type='text/css'><!-- /* <Group description="Header Color" selector="header"> <Variable name="header.background.color" description="Header Background" type="color" default="#ffffff"/> </Group> */ .header-outer { border-bottom: 1px solid #e0e0e0; background: #ffffff; } html, .Label h2, #sidebar .rss a, .BlogArchive h2, .FollowByEmail h2.title, .widget .post h2 { font-family: Roboto, sans-serif; } .plusfollowers h2.title, .post h2.title, .widget h2.title { font-family: Roboto, sans-serif; } .widget-item-control { height: 100%; } .widget.Header, #header { position: relative; height: 100%; width: 100%; } } .widget.Header .header-logo1 { float: left; margin-right: 15px; padding-right: 15px; border-right: 1px solid #ddd; } .header-title h2 { color: rgba(0,0,0,.54); display: inline-block; font-size: 40px; font-family: Roboto, sans-serif; font-weight: normal; line-height: 48px; vertical-align: top; } .header-inner { background-repeat: no-repeat; background-position: right 0px; } .post-author, .byline-author { font-size: 14px; font-weight: normal; color: #757575; color: rgba(0,0,0,.54); } .post-content .img-border { border: 1px solid rgb(235, 235, 235); padding: 4px; } .header-title a { text-decoration: none !important; } pre { border: 1px solid #bbbbbb; margin-top: 1em 0 0 0; padding: 0.99em; overflow-x: auto; overflow-y: auto; } pre, code { font-size: 9pt; background-color: #fafafa; line-height: 125%; font-family: monospace; } pre, code { color: #060; font: 13px/1.54 "courier new",courier,monospace; } .header-left .header-logo1 { width: 128px !important; } .header-desc { line-height: 20px; margin-top: 8px; } .fb-custom img, .twitter-custom img, .gplus-share img { cursor: pointer; opacity: 0.54; } .fb-custom img:hover, .twitter-custom img:hover, .gplus-share img:hover { opacity: 0.87; } .fb-like { width: 80px; } .post .share { float: right; } #twitter-share{ border: #CCC solid 1px; border-radius: 3px; background-image: -webkit-linear-gradient(top,#ffffff,#dedede); } .twitter-follow { background: url(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVVfowXWI6SI8HNCGPfnKyNRe-wyiGsM28Jazt5og63q6Ula3__QjfJ0krie-XTOtpO6IlDOtulriyGWBdin3XU7HN6VY_J5mT7lWez8I8QjoqsXHq5qmxyqePXRBJ_G-NZfaqplhFFBfg/s1600/twitter-bird.png) no-repeat left center; padding-left: 18px; font: normal normal normal 11px/18px 'Helvetica Neue',Arial,sans-serif; font-weight: bold; text-shadow: 0 1px 0 rgba(255,255,255,.5); cursor: pointer; margin-bottom: 10px; } .twitter-fb { padding-top: 2px; } .fb-follow-button { background: -webkit-linear-gradient(#4c69ba, #3b55a0); background: -moz-linear-gradient(#4c69ba, #3b55a0); background: linear-gradient(#4c69ba, #3b55a0); border-radius: 2px; height: 18px; padding: 4px 0 0 3px; width: 57px; border: #4c69ba solid 1px; } .fb-follow-button a { text-decoration: none !important; text-shadow: 0 -1px 0 #354c8c; text-align: center; white-space: nowrap; font-size: 11px; color: white; vertical-align: top; } .fb-follow-button a:visited { color: white; } .fb-follow { padding: 0px 5px 3px 0px; width: 14px; vertical-align: bottom; } .gplus-wrapper { margin-top: 3px; display: inline-block; vertical-align: top; } .twitter-custom, .gplus-share { margin-right: 12px; } .fb-follow-button{ margin: 10px auto; } --></style> <style id='template-skin-1' type='text/css'><!-- .header-outer { clear: both; } .header-inner { margin: auto; padding: 0px; } .footer-outer { background: #f5f5f5; clear: both; margin: 0; } .footer-inner { margin: auto; padding: 0px; } .footer-inner-2 { /* Account for right hand column elasticity. */ max-width: calc(100% - 248px); } .google-footer-outer { clear: both; } .cols-wrapper, .google-footer-outer, .footer-inner, .header-inner { max-width: 978px; margin-left: auto; margin-right: auto; } .cols-wrapper { margin: auto; clear: both; margin-top: 60px; margin-bottom: 60px; overflow: hidden; } .col-main-wrapper { float: left; width: 100%; } .col-main { margin-right: 278px; max-width: 660px; } .col-right { float: right; width: 248px; margin-left: -278px; } /* Tweaks for layout mode. */ body#layout .google-footer-outer { display: none; } body#layout .header-outer, body#layout .footer-outer { background: none; } body#layout .header-inner { height: initial; } body#layout .cols-wrapper { margin-top: initial; margin-bottom: initial; } --></style> <!-- start all head --> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/> <meta content='blogger' name='generator'/> <link href="//ads-developers.googleblog.com/favicon.ico" rel="icon" type="image/x-icon"> <link href='http://ads-developers.googleblog.com/search/label/dfp_reports' rel='canonical'/> <link rel="alternate" type="application/atom+xml" title="Google Ads Developer Blog - Atom" href="http://ads-developers.googleblog.com/feeds/posts/default" /> <link rel="alternate" type="application/rss+xml" title="Google Ads Developer Blog - RSS" href="http://ads-developers.googleblog.com/feeds/posts/default?alt=rss" /> <link rel="service.post" type="application/atom+xml" title="Google Ads Developer Blog - Atom" href="https://www.blogger.com/feeds/7815614485808579332/posts/default" /> <!--Can't find substitution for tag [blog.ieCssRetrofitLinks]--> <meta content='http://ads-developers.googleblog.com/search/label/dfp_reports' property='og:url'/> <meta content='Google Ads Developer Blog' property='og:title'/> <meta content='The official blog for information about the Google Ads, Google Ad Manager, Google Mobile Ads SDKs for AdMob and IMA SDKs, and other Google Advertising Platform developer tools.' property='og:description'/> <!-- end all head --> <base target='_self'/> <style> html { font-family: Roboto, sans-serif; -moz-osx-font-smoothing: grayscale; -webkit-font-smoothing: antialiased; } body { padding: 0; /* This ensures that the scroll bar is always present, which is needed */ /* because content render happens after page load; otherwise the header */ /* would "bounce" in-between states. */ min-height: 150%; } h2 { font-size: 16px; } h1, h2, h3, h4, h5 { line-height: 2em; } html, h4, h5, h6 { font-size: 14px; } a, a:visited { color: #4184F3; text-decoration: none; } a:focus, a:hover, a:active { text-decoration: none; } .Header { margin-top: 15px; } .Header h1 { font-size: 32px; font-weight: 300; line-height: 32px; height: 42px; } .header-inner .Header .titlewrapper { padding: 0; margin-top: 30px; } .header-inner .Header .descriptionwrapper { padding: 0; margin: 0; } .cols-wrapper { margin-top: 56px; } .header-outer, .cols-wrapper, .footer-outer, .google-footer-outer { padding: 0 60px; } .header-inner { height: 256px; position: relative; } html, .header-inner a { color: #212121; color: rgba(0,0,0,.87); } .header-inner .google-logo { display: inline-block; background-size: contain; z-index: 1; height: 46px; overflow: hidden; margin-top: 4px; margin-right: 8px; } .header-left { position: absolute; top: 50%; -webkit-transform: translateY(-50%); transform: translateY(-50%); margin-top: 12px; width: 100%; } .google-logo { margin-left: -4px; } #google-footer { position: relative; font-size: 13px; list-style: none; text-align: right; } #google-footer a { color: #444; } #google-footer ul { margin: 0; padding: 0; height: 144px; line-height: 144px; } #google-footer ul li { display: inline; } #google-footer ul li:before { color: #999; content: "\00b7"; font-weight: bold; margin: 5px; } #google-footer ul li:first-child:before { content: ''; } #google-footer .google-logo-dark { left: 0; margin-top: -16px; position: absolute; top: 50%; } /** Sitemap links. **/ .footer-inner-2 { font-size: 14px; padding-top: 42px; padding-bottom: 74px; } .footer-inner-2 .HTML h2 { color: #212121; color: rgba(0,0,0,.87); font-size: 14px; font-weight: 500; padding-left: 0; margin: 10px 0; } .footer-inner-2 .HTML ul { font-weight: normal; list-style: none; padding-left: 0; } .footer-inner-2 .HTML li { line-height: 24px; padding: 0; } .footer-inner-2 li a { color: rgba(65,132,243,.87); } /** Archive widget. **/ .BlogArchive { font-size: 13px; font-weight: normal; } .BlogArchive .widget-content { display: none; } .BlogArchive h2, .Label h2 { color: #4184F3; text-decoration: none; } .BlogArchive .hierarchy li { display: inline-block; } /* Specificity needed here to override widget CSS defaults. */ .BlogArchive #ArchiveList ul li, .BlogArchive #ArchiveList ul ul li { margin: 0; padding-left: 0; text-indent: 0; } .BlogArchive .intervalToggle { cursor: pointer; } .BlogArchive .expanded .intervalToggle .new-toggle { -ms-transform: rotate(180deg); transform: rotate(180deg); } .BlogArchive .new-toggle { float: right; padding-top: 3px; opacity: 0.87; } #ArchiveList { text-transform: uppercase; } #ArchiveList .expanded > ul:last-child { margin-bottom: 16px; } #ArchiveList .archivedate { width: 100%; } /* Months */ .BlogArchive .items { max-width: 150px; margin-left: -4px; } .BlogArchive .expanded .items { margin-bottom: 10px; overflow: hidden; } .BlogArchive .items > ul { float: left; height: 32px; } .BlogArchive .items a { padding: 0 4px; } .Label { font-size: 13px; font-weight: normal; } .sidebar-icon { display: inline-block; width: 24px; height: 24px; vertical-align: middle; margin-right: 12px; margin-top: -1px } .Label a { margin-right: 4px; } .Label .widget-content { display: none; } .FollowByEmail { font-size: 13px; font-weight: normal; } .FollowByEmail h2 { background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAALCAYAAACZIGYHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUBJREFUeNrMkSGLAlEUhb+ZB4JFi8mx2cz+ApvhRUGTcUCrNqNJDYIi+DO0GUwmQXDK2DSIoGgZcSaIjDrzwrK4ssvChj1w0733O+fdp+m6PozH4yQSCfb7Pa7r8pOi0SjJZBLP8zgej4gAIMvlMuPxmADIYrHger1+C6lUKmo+NJ/NZojb7SZDWiwWo1qtks1msW2bw+HwZdkwDHq9HvV6nel0SqvVYrvdIh6Ph3Qch+VyqRYLhQJSSjRNw7IsfN9XgGKxSLfbJZfL0e/3aTabrFYr7vc7IujLcOh8PqunrNdr0uk0pVKJVCpFJBJRgEajweVyod1uMxgM2O12BAGUgRbU8DV2JpOhVquRz+cRQii3+XxOp9NRN3jVR5LPOp1OjEYjlSL8hclkgmmabDabt4d+m+S30vkD/R/IU4ABAPTZgnZdmG/PAAAAAElFTkSuQmCC"); background-repeat: no-repeat; background-position: 0 50%; text-indent: 30px; } .FollowByEmail .widget-content { display: none; } .searchBox input { border: 1px solid #eee; color: #212121; color: rgba(0,0,0,.87); font-size: 14px; padding: 8px 8px 8px 40px; width: 164px; font-family: Roboto, sans-serif; background: url("https://www.gstatic.com/images/icons/material/system/1x/search_grey600_24dp.png") 8px center no-repeat; } .searchBox ::-webkit-input-placeholder { /* WebKit, Blink, Edge */ color: rgba(0,0,0,.54); } .searchBox :-moz-placeholder { /* Mozilla Firefox 4 to 18 */ color: #000; opacity: 0.54; } .searchBox ::-moz-placeholder { /* Mozilla Firefox 19+ */ color: #000; opacity: 0.54; } .searchBox :-ms-input-placeholder { /* Internet Explorer 10-11 */ color: #757575; } .widget-item-control { margin-top: 0px; } .section { margin: 0; padding: 0; } #sidebar-top { border: 1px solid #eee; } #sidebar-top > div { margin: 16px 0; } .widget ul { line-height: 1.6; } /*main post*/ .post { margin-bottom:30px; } #main .post .title { margin: 0; } #main .post .title a { color: #212121; color: rgba(0,0,0,.87); font-weight: normal; font-size: 24px; } #main .post .title a:hover { text-decoration:none; color:#4184F3; } .message, #main .post .post-header { margin: 0; padding: 0; } #main .post .post-header .caption, #main .post .post-header .labels-caption, #main .post .post-footer .caption, #main .post .post-footer .labels-caption { color: #444; font-weight: 500; } #main .tr-caption-container td { text-align: left; } #main .post .tr-caption { color: #757575; color: rgba(0,0,0,.54); display: block; max-width: 560px; padding-bottom: 20px; } #main .post .tr-caption-container { line-height: 24px; margin: -1px 0 0 0 !important; padding: 4px 0; text-align: left; } #main .post .post-header .published{ font-size:11px; font-weight:bold; } .post-header .publishdate { font-size: 17px; font-weight:normal; color: #757575; color: rgba(0,0,0,.54); } #main .post .post-footer{ font-size:12px; padding-bottom: 21px; } .label-footer { margin-bottom: 12px; margin-top: 12px; } .comment-img { margin-right: 16px; opacity: 0.54; vertical-align: middle; } #main .post .post-header .published { margin-bottom: 40px; margin-top: -2px; } .post .post-content { color: #212121; color: rgba(0,0,0,.87); font-size: 17px; margin: 25px 0 36px 0; line-height: 32px; } .post-body .post-content ul, .post-body .post-content ol { margin: 16px 0; padding: 0 48px; } .post-summary { display: none; } /* Another old-style caption. */ .post-content div i, .post-content div + i { font-size: 14px; font-style: normal; color: #757575; color: rgba(0,0,0,.54); display: block; line-height: 24px; margin-bottom: 16px; text-align: left; } /* Another old-style caption (with link) */ .post-content a > i { color: #4184F3 !important; } /* Old-style captions for images. */ .post-content .separator + div:not(.separator) { margin-top: -16px; } /* Capture section headers. */ .post-content br + br + b, .post-content .space + .space + b, .post-content .separator + b { display: inline-block; margin-bottom: 8px; margin-top: 24px; } .post-content li { line-height: 32px; } /* Override all post images/videos to left align. */ .post-content .separator, .post-content > div { text-align: left; } .post-content .separator > a, .post-content .separator > span { margin-left: 0 !important; } /*.post-content img { max-width: 100%; height: auto; width: auto; }*/ .post-content .tr-caption-container img { margin-bottom: 12px; } .post-content iframe, .post-content embed { max-width: 100%; } .post-content .carousel-container { margin-bottom: 48px; } #main .post-content b { font-weight: 500; } /* These are the main paragraph spacing tweaks. */ #main .post-content br { content: ' '; display: block; padding: 4px; } .post-content .space { display: block; height: 8px; } .post-content iframe + .space, .post-content iframe + br { padding: 0 !important; } #main .post .jump-link { margin-bottom:10px; } .post-content img, .post-content iframe { margin: 30px 0 20px 0; } .post-content > img:first-child, .post-content > iframe:first-child { margin-top: 0; } .col-right .section { padding: 0 16px; } #aside { background:#fff; border:1px solid #eee; border-top: 0; } #aside .widget { margin:0; } #aside .widget h2, #ArchiveList .toggle + a.post-count-link { color: #212121; color: rgba(0,0,0,.87); font-weight: 400 !important; margin: 0; } #ArchiveList .toggle { float: right; } #ArchiveList .toggle .material-icons { padding-top: 4px; } #sidebar .tab { cursor: pointer; } #sidebar .tab .arrow { display: inline-block; float: right; } #sidebar .tab .icon { display: inline-block; vertical-align: top; height: 24px; width: 24px; margin-right: 13px; margin-left: -1px; margin-top: 1px; color: #757575; color: rgba(0,0,0,.54); } #sidebar .widget-content > :first-child { padding-top: 8px; } #sidebar .active .tab .arrow { -ms-transform: rotate(180deg); transform: rotate(180deg); } #sidebar .arrow { color: #757575; color: rgba(0,0,0,.54); } #sidebar .widget h2 { font-size: 14px; font-weight: normal; } #sidebar .Label h2, #sidebar .BlogArchive h2 { display: inline-block; } .HTML .feed-title { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAX5JREFUeNqsVDGSgkAQHL2rIiIikohIc/EBRkbwAIwuwgfwAXiAD9AHSI7kEkECRCb6AIyINDLx7K0aa6kT7uq0q7YYtnZ7umdnt7darXbr9Zpegeu61DNNc0dvwCcH4/GYJpMJnc9nOhwOVJbl/4hAAokMECZJQtvt9k+kH7qufyEYDAakqqqYxFdRFBqNRmTbNg2HQ0rTlK7XayvR0xqBdDqdkuM4dE/0ULhYLOh4PHYrknG5XGi/31MYhuL/nkwonM1mlGUZ1XXdrsiyLGEDhY7juJEZ1u5tIixDGdYhmYw+B7CAzPP5nDabjdgIAgCksMX1832/3drtdqPT6SQWapomiGEFNkDEdpDMMAzK81ys/7XYy+XyoQgq2WoURSIJ2iIIgp/WZCCTvFm2wgeAU31aI3Q2GhIDMeB53qPYPIcm5VrxXIOIOxsDMStjVawAc1VViRgN22lNBiuQN3GR+SY07hpOoStmFQAKXRRFY93bnpG+fONfedi+BRgAbkS8Fxp7QQIAAAAASUVORK5CYII="); background-repeat: no-repeat; background-position: 0 50%; text-indent: 30px; } #sidebar .widget .BlogArchive { padding-bottom: 8px; } #sidebar .widget { border-bottom: 1px solid #eee; box-shadow: 0px 1px 0 white; margin-bottom: 0; padding: 14px 0; min-height: 20px; } #sidebar .widget:last-child { border-bottom: none; box-shadow: none; margin-bottom: 0; } #sidebar ul { margin: 0; padding: 0; } #sidebar ul li { list-style:none; padding:0; } #sidebar ul li a { line-height: 32px; } #sidebar .archive { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAYCAYAAADzoH0MAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAE1JREFUeNpiNDY23s9AAWBioBCwYBM8c+YMVsUmJibEGYBNMS5DaeMFfDYSZQA2v9I3FrB5AZeriI4FmnrBccCT8mhmGs1MwyAzAQQYAKEWG9zm9QFEAAAAAElFTkSuQmCC"); height: 24px; line-height: 24px; padding-left: 30px; } #sidebar .labels { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUxJREFUeNpiNDY23s9AAMycOfM7UF05kHkZmzwTMkdSUhKrIcXFxZy3bt3qBjIN8RrS09PDsHnzZjCNDr58+cKQlpbGDjSoHcg1w2oIyAUODg5gARCNzUVIBrUCuVYYhjx//pzhwIEDYAEQDeJjA1CDWIAGNQK59jBxRuSABbkAlwHIgIeHh2HWrFn/1NTU2oDcvSgBS4wBSC5iArqoCsj1YGIgEyAZVMoEchqlBjEB/cZAiUHg2AEGznpKDAImxOeM////B4VLKtBvEUCngZ1ILKivr3/u6+ubBzJAGZQ9gC5aQoqLgAY8BhkAZL4BuQQkxgXE34A4BuiiZEIuAhrwEGhAEZD5DpzYoIaA2UAM4kQADUrHZRDUgAIg8wO2XAwzbQXQa5OweQ1owB10AyA6gS7BgX1u3ry5397eHow3bdo0EyjGi00tQIABANPgyAH1q1eaAAAAAElFTkSuQmCC"); height: 20px; line-height: 20px; padding-left: 30px; } #sidebar .rss a { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAX5JREFUeNqsVDGSgkAQHL2rIiIikohIc/EBRkbwAIwuwgfwAXiAD9AHSI7kEkECRCb6AIyINDLx7K0aa6kT7uq0q7YYtnZ7umdnt7darXbr9Zpegeu61DNNc0dvwCcH4/GYJpMJnc9nOhwOVJbl/4hAAokMECZJQtvt9k+kH7qufyEYDAakqqqYxFdRFBqNRmTbNg2HQ0rTlK7XayvR0xqBdDqdkuM4dE/0ULhYLOh4PHYrknG5XGi/31MYhuL/nkwonM1mlGUZ1XXdrsiyLGEDhY7juJEZ1u5tIixDGdYhmYw+B7CAzPP5nDabjdgIAgCksMX1832/3drtdqPT6SQWapomiGEFNkDEdpDMMAzK81ys/7XYy+XyoQgq2WoURSIJ2iIIgp/WZCCTvFm2wgeAU31aI3Q2GhIDMeB53qPYPIcm5VrxXIOIOxsDMStjVawAc1VViRgN22lNBiuQN3GR+SY07hpOoStmFQAKXRRFY93bnpG+fONfedi+BRgAbkS8Fxp7QQIAAAAASUVORK5CYII="); } #sidebar .subscription a { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAALCAYAAACZIGYHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUBJREFUeNrMkSGLAlEUhb+ZB4JFi8mx2cz+ApvhRUGTcUCrNqNJDYIi+DO0GUwmQXDK2DSIoGgZcSaIjDrzwrK4ssvChj1w0733O+fdp+m6PozH4yQSCfb7Pa7r8pOi0SjJZBLP8zgej4gAIMvlMuPxmADIYrHger1+C6lUKmo+NJ/NZojb7SZDWiwWo1qtks1msW2bw+HwZdkwDHq9HvV6nel0SqvVYrvdIh6Ph3Qch+VyqRYLhQJSSjRNw7IsfN9XgGKxSLfbJZfL0e/3aTabrFYr7vc7IujLcOh8PqunrNdr0uk0pVKJVCpFJBJRgEajweVyod1uMxgM2O12BAGUgRbU8DV2JpOhVquRz+cRQii3+XxOp9NRN3jVR5LPOp1OjEYjlSL8hclkgmmabDabt4d+m+S30vkD/R/IU4ABAPTZgnZdmG/PAAAAAElFTkSuQmCC"); } #sidebar-bottom { background: #f5f5f5; border-top:1px solid #eee; } #sidebar-bottom .widget { border-bottom: 1px solid #e0e0e0; padding: 15px 0; /*text-align: center;*/ } #sidebar-bottom > div:last-child { border-bottom: 0; } #sidebar-bottom .text { line-height: 20px; } /* Home, forward, and backward pagination. */ .blog-pager { border-top : 1px #e0e0e0 solid; padding-top: 10px; margin-top: 15px; text-align: right !important; } #blog-pager { margin-botom: 0; margin-top: -14px; padding: 16px 0 0 0; } #blog-pager a { display: inline-block; } .blog-pager i.disabled { opacity: 0.2 !important; } .blog-pager i { color: black; margin-left: 16px; opacity: 0.54; } .blog-pager i:hover, .blog-pager i:active { opacity: 0.87; } #blog-pager-older-link, #blog-pager-newer-link { float: none; } .gplus-profile { background-color: #fafafa; border: 1px solid #eee; overflow: hidden; width: 212px; } .gplus-profile-inner { margin-left: -1px; margin-top: -1px; } /* Sidebar follow buttons. */ .followgooglewrapper { padding: 12px 0 0 0; } .loading { visibility: hidden; } .detail-page .post-footer .cmt_iframe_holder { padding-top: 40px !important; } /** Desktop **/ @media (max-width: 900px) { .col-right { display: none; } .col-main { margin-right: 0; min-width: initial; } .footer-outer { display: none; } .cols-wrapper { min-width: initial; } .google-footer-outer { background-color: #f5f5f5; } } /** Tablet **/ @media (max-width: 712px) { .header-outer, .cols-wrapper, .footer-outer, .google-footer-outer { padding: 0 40px; } } /* An extra breakpoint accommodating for long blog titles. */ @media (max-width: 600px) { .header-left { height: 100%; top: inherit; margin-top: 0; -webkit-transform: initial; transform: initial; } .header-title { margin-top: 18px; } .header-inner .google-logo { height: 40px; margin-top: 3px; } .header-inner .google-logo img { height: 42px; } .header-title h2 { font-size: 32px; line-height: 40px; } .header-desc { bottom: 24px; position: absolute; } } /** Mobile/small desktop window; also landscape. **/ @media (max-width: 480px), (max-height: 480px) { .header-outer, .cols-wrapper, .footer-outer, .google-footer-outer { padding: 0 16px; } .cols-wrapper { margin-top: 0; } .post-header .publishdate, .post .post-content { font-size: 16px; } .post .post-content { line-height: 28px; margin-bottom: 30px; } .post { margin-top: 30px; } .byline-author { display: block; font-size: 12px; line-height: 24px; margin-top: 6px; } #main .post .title a { font-weight: 500; color: #4c4c4c; color: rgba(0,0,0,.70); } #main .post .post-header { padding-bottom: 12px; } #main .post .post-header .published { margin-bottom: -8px; margin-top: 3px; } .post .read-more { display: block; margin-top: 14px; } .post .tr-caption { font-size: 12px; } #main .post .title a { font-size: 20px; line-height: 30px; } .post-content iframe { /* iframe won't keep aspect ratio when scaled down. */ max-height: 240px; } .post-content .separator img, .post-content .tr-caption-container img, .post-content iframe { margin-left: -16px; max-width: inherit; width: calc(100% + 32px); } .post-content table, .post-content td { width: 100%; } #blog-pager { margin: 0; padding: 16px 0; } /** List page tweaks. **/ .list-page .post-original { display: none; } .list-page .post-summary { display: block; } .list-page .comment-container { display: none; } .list-page #blog-pager { padding-top: 0; border: 0; margin-top: -8px; } .list-page .label-footer { display: none; } .list-page #main .post .post-footer { border-bottom: 1px solid #eee; margin: -16px 0 0 0; padding: 0 0 20px 0; } .list-page .post .share { display: none; } /** Detail page tweaks. **/ .detail-page .post-footer .cmt_iframe_holder { padding-top: 32px !important; } .detail-page .label-footer { margin-bottom: 0; } .detail-page #main .post .post-footer { padding-bottom: 0; } .detail-page #comments { display: none; } } [data-about-pullquote], [data-is-preview], [data-about-syndication] { display: none; } </style> <noscript> <style> .loading { visibility: visible }</style> </noscript> <!-- Google tag (gtag.js) --> <script async='true' src='https://www.googletagmanager.com/gtag/js?id=G-E4MSGF2SF9'></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-E4MSGF2SF9'); </script> <link href='https://www.blogger.com/dyn-css/authorization.css?targetBlogID=7815614485808579332&amp;zx=9069ca84-be54-4ec1-91e8-db3279f51ab9' media='none' onload='if(media!=&#39;all&#39;)media=&#39;all&#39;' rel='stylesheet'/><noscript><link href='https://www.blogger.com/dyn-css/authorization.css?targetBlogID=7815614485808579332&amp;zx=9069ca84-be54-4ec1-91e8-db3279f51ab9' rel='stylesheet'/></noscript> <meta name='google-adsense-platform-account' content='ca-host-pub-1556223355139109'/> <meta name='google-adsense-platform-domain' content='blogspot.com'/> </head> <body> <script type='text/javascript'> //<![CDATA[ var axel = Math.random() + ""; var a = axel * 10000000000000; document.write('<iframe src="https://2542116.fls.doubleclick.net/activityi;src=2542116;type=gblog;cat=googl0;ord=ord=' + a + '?" width="1" height="1" frameborder="0" style="display:none"></iframe>'); //]]> </script> <noscript> <img alt='' height='1' src='https://ad.doubleclick.net/ddm/activity/src=2542116;type=gblog;cat=googl0;ord=1?' width='1'/> </noscript> <!-- Header --> <div class='header-outer'> <div class='header-inner'> <div class='section' id='header'><div class='widget Header' data-version='1' id='Header1'> <div class='header-left'> <div class='header-title'> <a class='google-logo' href='http://ads-developers.googleblog.com/'> <img height='50' src='https://www.gstatic.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png'/> </a> <a href='/.'> <h2> Ads Developer Blog </h2> </a> </div> <div class='header-desc'> The official blog for information about the Google Ads, Google Ad Manager, Google Mobile Ads SDKs for AdMob and IMA SDKs, and other Google Advertising Platform developer tools. </div> </div> </div></div> </div> </div> <!-- all content wrapper start --> <div class='cols-wrapper loading'> <div class='col-main-wrapper'> <div class='col-main'> <div class='section' id='main'><div class='widget Blog' data-version='1' id='Blog1'> <div class='post' data-id='3676494228878397070' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='http://ads-developers.googleblog.com/2015/08/changes-to-dfp-reporting-now-with-more.html' itemprop='url' title='Changes to DFP Reporting, now with more deprecation!'> Changes to DFP Reporting, now with more deprecation! </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Tuesday, August 4, 2015 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <p>After our last round of <a href="http://googleadsdeveloper.blogspot.com/2015/04/important-upcoming-breaking-changes-to.html">spring cleaning</a>, we've gone back to the drawing board to take another look at how we could make reporting better. There currently is an abundance of <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201505/ReportService.Dimension">Dimensions</a>, <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201505/ReportService.DimensionAttribute">DimensionAttributes</a>, and <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201505/ReportService.Column">Columns</a> (and more coming with each release), so in an effort to simplify the list of fields, we will be sunsetting the following reconciliation-related dimension attributes / columns <b>in all versions</b>. This will happen on <b>September 1, 2015</b>.</p> <h2>Columns with equivalent replacements:</h2> <ul> <li><a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201505/ReportService.Column#RECONCILIATION_LAST_DATE_TIME">RECONCILIATION_LAST_DATE_TIME</a> replaced by dimension attribute: <b>PROPOSAL_LINE_ITEM_LAST_RECONCILIATION_DATE_TIME and LINE_ITEM_LAST_RECONCILIATION_DATE_TIME</b></li> <li><a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201505/ReportService.Column#RECONCILIATION_RECONCILIATION_STATUS">RECONCILIATION_RECONCILIATION_STATUS</a> replaced by dimension attribute: <b>PROPOSAL_LINE_ITEM_RECONCILIATION_STATUS and LINE_ITEM_RECONCILIATION_STATUS</b></li> </ul> <h2>Columns without equivalent replacements:</h2> <ul> <li><a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201502/ReportService.DimensionAttribute#LINE_ITEM_RECONCILED_RATE">LINE_ITEM_RECONCILED_RATE</a> (in <= v201502)</li> <li><a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201411/ReportService.Column#CONTRACTED_REVENUE_CONTRACTED_PLACEMENT_NET_REVENUE">CONTRACTED_REVENUE_CONTRACTED_PLACEMENT_NET_REVENUE</a> (in <= v201411)</li> <li><a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201411/ReportService.Column#CONTRACTED_REVENUE_CONTRACTED_PLACEMENT_GROSS_REVENUE">CONTRACTED_REVENUE_CONTRACTED_PLACEMENT_GROSS_REVENUE</a> (in <= v201411)</li> <li><a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201411/ReportService.Column#DISCOUNTS_BREAKDOWN_ADDITIONAL_ADJUSTMENT">DISCOUNT_BREAKDOWN_ADDITIONAL_ADJUSTMENT</a> (in <= v201411)</li> </ul> <p>While the first two have equivalent replacements, the latter ones are not being replaced, as they don&#8217;t exist in core product reporting either.</p> <p>This means that usage of these columns / dimension attributes will begin throwing errors in <b>all versions starting September 1st</b>. If your network is actively using any of these, please update your reports to switch to the supported fields or remove them entirely. If you have any questions, comments, or concerns about this, you know where to <a href="https://groups.google.com/forum/#!forum/google-doubleclick-for-publishers-api">reach us</a>!</p> <p><span class="post-author" style="font-family: Arial, Helvetica, sans-serif;"><a href="https://plus.google.com/u/0/111839132596690319500"><img height="40" src="https://lh4.googleusercontent.com/-avqiIdFUKEE/Tl_RE8sMnmI/AAAAAAAACJQ/_fcfYqyi964/w1003-h998-no/IMG_5249.jpg?sz=40" style="border: none; vertical-align: middle;" width="40" /></a>&nbsp;-&nbsp;<a href="https://plus.google.com/u/0/111839132596690319500" rel="author">Nicholas Chen</a>, DFP API Team</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <p>After our last round of <a href="http://googleadsdeveloper.blogspot.com/2015/04/important-upcoming-breaking-changes-to.html">spring cleaning</a>, we've gone back to the drawing board to take another look at how we could make reporting better. There currently is an abundance of <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201505/ReportService.Dimension">Dimensions</a>, <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201505/ReportService.DimensionAttribute">DimensionAttributes</a>, and <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201505/ReportService.Column">Columns</a> (and more coming with each release), so in an effort to simplify the list of fields, we will be sunsetting the following reconciliation-related dimension attributes / columns <b>in all versions</b>. This will happen on <b>September 1, 2015</b>.</p> <h2>Columns with equivalent replacements:</h2> <ul> <li><a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201505/ReportService.Column#RECONCILIATION_LAST_DATE_TIME">RECONCILIATION_LAST_DATE_TIME</a> replaced by dimension attribute: <b>PROPOSAL_LINE_ITEM_LAST_RECONCILIATION_DATE_TIME and LINE_ITEM_LAST_RECONCILIATION_DATE_TIME</b></li> <li><a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201505/ReportService.Column#RECONCILIATION_RECONCILIATION_STATUS">RECONCILIATION_RECONCILIATION_STATUS</a> replaced by dimension attribute: <b>PROPOSAL_LINE_ITEM_RECONCILIATION_STATUS and LINE_ITEM_RECONCILIATION_STATUS</b></li> </ul> <h2>Columns without equivalent replacements:</h2> <ul> <li><a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201502/ReportService.DimensionAttribute#LINE_ITEM_RECONCILED_RATE">LINE_ITEM_RECONCILED_RATE</a> (in <= v201502)</li> <li><a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201411/ReportService.Column#CONTRACTED_REVENUE_CONTRACTED_PLACEMENT_NET_REVENUE">CONTRACTED_REVENUE_CONTRACTED_PLACEMENT_NET_REVENUE</a> (in <= v201411)</li> <li><a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201411/ReportService.Column#CONTRACTED_REVENUE_CONTRACTED_PLACEMENT_GROSS_REVENUE">CONTRACTED_REVENUE_CONTRACTED_PLACEMENT_GROSS_REVENUE</a> (in <= v201411)</li> <li><a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201411/ReportService.Column#DISCOUNTS_BREAKDOWN_ADDITIONAL_ADJUSTMENT">DISCOUNT_BREAKDOWN_ADDITIONAL_ADJUSTMENT</a> (in <= v201411)</li> </ul> <p>While the first two have equivalent replacements, the latter ones are not being replaced, as they don&#8217;t exist in core product reporting either.</p> <p>This means that usage of these columns / dimension attributes will begin throwing errors in <b>all versions starting September 1st</b>. If your network is actively using any of these, please update your reports to switch to the supported fields or remove them entirely. If you have any questions, comments, or concerns about this, you know where to <a href="https://groups.google.com/forum/#!forum/google-doubleclick-for-publishers-api">reach us</a>!</p> <p><span class="post-author" style="font-family: Arial, Helvetica, sans-serif;"><a href="https://plus.google.com/u/0/111839132596690319500"><img height="40" src="https://lh4.googleusercontent.com/-avqiIdFUKEE/Tl_RE8sMnmI/AAAAAAAACJQ/_fcfYqyi964/w1003-h998-no/IMG_5249.jpg?sz=40" style="border: none; vertical-align: middle;" width="40" /></a>&nbsp;-&nbsp;<a href="https://plus.google.com/u/0/111839132596690319500" rel="author">Nicholas Chen</a>, DFP API Team</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Google Ads Developer Blog:Changes to DFP Reporting, now with more deprecation!&url=http://ads-developers.googleblog.com/2015/08/changes-to-dfp-reporting-now-with-more.html&via=google'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=http://ads-developers.googleblog.com/2015/08/changes-to-dfp-reporting-now-with-more.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='http://ads-developers.googleblog.com/2015/08/changes-to-dfp-reporting-now-with-more.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='http://ads-developers.googleblog.com/search/label/dfp_api' rel='tag'> dfp_api </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/dfp_reports' rel='tag'> dfp_reports </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/reporting' rel='tag'> reporting </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/reports' rel='tag'> reports </a> </span> </div> </div> </div> <div class='post' data-id='4742386446956759327' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='http://ads-developers.googleblog.com/2015/04/important-upcoming-breaking-changes-to.html' itemprop='url' title='Important upcoming breaking changes to DFP reporting'> Important upcoming breaking changes to DFP reporting </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Thursday, April 23, 2015 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <p>Now that it&#8217;s spring again (in the Northern Hemisphere at least), it&#8217;s time for DFP&#8217;s annual spring cleaning! In this edition, we&#8217;ll be doing some pruning of our <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201502/ReportService">ReportService</a>. What does this mean for you? We&#8217;re sunsetting some reporting dimensions, attributes, and metrics in existing versions (before the version is fully sunset), so your reports will break if you don&#8217;t migrate before the shutoff dates. I know what you&#8217;re wondering: &#8220;should I panic?&#8221;. Absolutely not. This type of behavior rarely occurs, so as long as you phase out usage for these particular fields, you should be fine moving forward.</p> <h2>Merged Metrics</h2> <p>Remember when Doubleclick for Publishers was called DART? I, too, get nostalgic about our old ad server, but it&#8217;s been a couple of years since we transitioned to the new DFP platform, and it&#8217;s just about time when the merged reporting columns are no longer useful (these columns only existed so you could continue reporting on delivery that spanned DART and DFP). In all versions after v201502, we will no longer provide merged reporting columns and dimension attributes in the API, that is, anything starting with '<a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201502/ReportService.Column#MERGED_AD_SERVER_DELIVERY_INDICATOR">MERGED_</a>' or contains '<a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201502/ReportService.DimensionAttribute#ORDER_LIFETIME_MERGED_IMPRESSIONS">_LIFETIME_MERGED_</a>.' After <b>August 1, 2015</b>, these columns and dimension attributes will stop returning data entirely and will return <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201502/ReportService.ReportError.Reason#INVALID_COLUMNS">INVALID_COLUMNS</a> in all versions that still include them.</p> <p>There are three scenarios in which you&#8217;re using these columns:</p> <ol> <li>Just for fun.</li> <li>Because you forgot you&#8217;re using them.</li> <li>Because you have lifetime line items that have carried over from DART (in which case you&#8217;ll have to recreate these). To give you an example, if the metric you care about is impressions, you can get the DART delivery portion by subtracting the portion of delivery from DFP Premium (<a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201502/ReportService.Column#AD_SERVER_IMPRESSIONS">AD_SERVER_IMPRESSIONS</a>) from the MERGED value (<a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201502/ReportService.Column#MERGED_AD_SERVER_IMPRESSIONS">MERGED_AD_SERVER_IMPRESSIONS</a>) which represents the aggregate DART and DFP Premium volume. Additionally, you should make the switch to the non-merged columns and dimension attributes as soon as possible.</li> </ol> <h2>Dimension Filters</h2> <p>But wait, there&#8217;s more! Our next API version (v201505) will be the last to support some of our infrequently used dimensionFilters.</p> <ul> <li>MOBILE_LINE_ITEMS</li> <li>WEB_INVENTORY_UNITS</li> <li>MOBILE_INVENTORY_UNITS</li> <li>WHOLE_NETWORK</li> <li>PARTNER_STATS_TYPE_ESTIMATED</li> <li>ACTIVE_ADVERTISERS</li> <li>PARTNER_STATS_TYPE_RECONCILED</li> <li>WEB_LINE_ITEMS</li> <li>ALL_SALESPEOPLE</li> </ul> <p>In each of the cases above, the filters either no longer provide meaningful information (as is the case with mobile vs. web line items and ad units with <a href="http://googleadsdeveloper.blogspot.com/2013/09/how-dfps-new-universal-inventory.html">platform unification</a> complete), or weren&#8217;t being used at all.</p> <p>Similar to the changes above, after <b>August 1, 2015</b>, these dimension filters will return an <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201502/ReportService.ReportError.Reason#INVALID_DIMENSION_FILTERS">INVALID_DIMENSION_FILTERS</a> error in any version that still includes them.</p> <p>So if you&#8217;re using any of the reporting features above, consider this an early heads up (and an opportunity) to refactor some of your code for spring cleaning.</p> <p>As usual, if you have any questions, comments, or concerns, don&#8217;t hesitate to let us know on the <a href="https://groups.google.com/forum/?fromgroups#!forum/google-doubleclick-for-publishers-api">forums</a>.</p> <p><span class="post-author" style="font-family: Arial, Helvetica, sans-serif;"><a href="https://plus.google.com/u/0/111839132596690319500"><img height="40" src="https://lh4.googleusercontent.com/-avqiIdFUKEE/Tl_RE8sMnmI/AAAAAAAACJQ/_fcfYqyi964/w1003-h998-no/IMG_5249.jpg?sz=40" style="border: none; vertical-align: middle;" width="40" /></a>&nbsp;-&nbsp;<a href="https://plus.google.com/u/0/111839132596690319500" rel="author">Nicholas Chen</a>, DFP API Team</span></p> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <p>Now that it&#8217;s spring again (in the Northern Hemisphere at least), it&#8217;s time for DFP&#8217;s annual spring cleaning! In this edition, we&#8217;ll be doing some pruning of our <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201502/ReportService">ReportService</a>. What does this mean for you? We&#8217;re sunsetting some reporting dimensions, attributes, and metrics in existing versions (before the version is fully sunset), so your reports will break if you don&#8217;t migrate before the shutoff dates. I know what you&#8217;re wondering: &#8220;should I panic?&#8221;. Absolutely not. This type of behavior rarely occurs, so as long as you phase out usage for these particular fields, you should be fine moving forward.</p> <h2>Merged Metrics</h2> <p>Remember when Doubleclick for Publishers was called DART? I, too, get nostalgic about our old ad server, but it&#8217;s been a couple of years since we transitioned to the new DFP platform, and it&#8217;s just about time when the merged reporting columns are no longer useful (these columns only existed so you could continue reporting on delivery that spanned DART and DFP). In all versions after v201502, we will no longer provide merged reporting columns and dimension attributes in the API, that is, anything starting with '<a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201502/ReportService.Column#MERGED_AD_SERVER_DELIVERY_INDICATOR">MERGED_</a>' or contains '<a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201502/ReportService.DimensionAttribute#ORDER_LIFETIME_MERGED_IMPRESSIONS">_LIFETIME_MERGED_</a>.' After <b>August 1, 2015</b>, these columns and dimension attributes will stop returning data entirely and will return <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201502/ReportService.ReportError.Reason#INVALID_COLUMNS">INVALID_COLUMNS</a> in all versions that still include them.</p> <p>There are three scenarios in which you&#8217;re using these columns:</p> <ol> <li>Just for fun.</li> <li>Because you forgot you&#8217;re using them.</li> <li>Because you have lifetime line items that have carried over from DART (in which case you&#8217;ll have to recreate these). To give you an example, if the metric you care about is impressions, you can get the DART delivery portion by subtracting the portion of delivery from DFP Premium (<a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201502/ReportService.Column#AD_SERVER_IMPRESSIONS">AD_SERVER_IMPRESSIONS</a>) from the MERGED value (<a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201502/ReportService.Column#MERGED_AD_SERVER_IMPRESSIONS">MERGED_AD_SERVER_IMPRESSIONS</a>) which represents the aggregate DART and DFP Premium volume. Additionally, you should make the switch to the non-merged columns and dimension attributes as soon as possible.</li> </ol> <h2>Dimension Filters</h2> <p>But wait, there&#8217;s more! Our next API version (v201505) will be the last to support some of our infrequently used dimensionFilters.</p> <ul> <li>MOBILE_LINE_ITEMS</li> <li>WEB_INVENTORY_UNITS</li> <li>MOBILE_INVENTORY_UNITS</li> <li>WHOLE_NETWORK</li> <li>PARTNER_STATS_TYPE_ESTIMATED</li> <li>ACTIVE_ADVERTISERS</li> <li>PARTNER_STATS_TYPE_RECONCILED</li> <li>WEB_LINE_ITEMS</li> <li>ALL_SALESPEOPLE</li> </ul> <p>In each of the cases above, the filters either no longer provide meaningful information (as is the case with mobile vs. web line items and ad units with <a href="http://googleadsdeveloper.blogspot.com/2013/09/how-dfps-new-universal-inventory.html">platform unification</a> complete), or weren&#8217;t being used at all.</p> <p>Similar to the changes above, after <b>August 1, 2015</b>, these dimension filters will return an <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201502/ReportService.ReportError.Reason#INVALID_DIMENSION_FILTERS">INVALID_DIMENSION_FILTERS</a> error in any version that still includes them.</p> <p>So if you&#8217;re using any of the reporting features above, consider this an early heads up (and an opportunity) to refactor some of your code for spring cleaning.</p> <p>As usual, if you have any questions, comments, or concerns, don&#8217;t hesitate to let us know on the <a href="https://groups.google.com/forum/?fromgroups#!forum/google-doubleclick-for-publishers-api">forums</a>.</p> <p><span class="post-author" style="font-family: Arial, Helvetica, sans-serif;"><a href="https://plus.google.com/u/0/111839132596690319500"><img height="40" src="https://lh4.googleusercontent.com/-avqiIdFUKEE/Tl_RE8sMnmI/AAAAAAAACJQ/_fcfYqyi964/w1003-h998-no/IMG_5249.jpg?sz=40" style="border: none; vertical-align: middle;" width="40" /></a>&nbsp;-&nbsp;<a href="https://plus.google.com/u/0/111839132596690319500" rel="author">Nicholas Chen</a>, DFP API Team</span></p> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Google Ads Developer Blog:Important upcoming breaking changes to DFP reporting&url=http://ads-developers.googleblog.com/2015/04/important-upcoming-breaking-changes-to.html&via=google'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=http://ads-developers.googleblog.com/2015/04/important-upcoming-breaking-changes-to.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='http://ads-developers.googleblog.com/2015/04/important-upcoming-breaking-changes-to.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='http://ads-developers.googleblog.com/search/label/deprecation' rel='tag'> deprecation </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/dfp_api' rel='tag'> dfp_api </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/dfp_reports' rel='tag'> dfp_reports </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/sunset' rel='tag'> sunset </a> </span> </div> </div> </div> <div class='post' data-id='8616686975235499619' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='http://ads-developers.googleblog.com/2014/12/deprecation-of-active-view-not-report.html' itemprop='url' title='Deprecation of active view NOT_* report columns in the DFP API'> Deprecation of active view NOT_* report columns in the DFP API </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Friday, December 19, 2014 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <div dir="ltr" style="text-align: left;" trbidi="on"> In the coming weeks, we will be deprecating all <code>ACTIVE_VIEW_NOT*</code> report columns in v201405, v201403, v201311 and v201306 of the DFP API. These columns are no longer supported in the DFP query tool, and the DFP API is following suit. The following columns will be affected:<br /><br /> <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201405/ReportService.Column#TOTAL_ACTIVE_VIEW_NOT_VIEWABLE_IMPRESSIONS">Column.TOTAL_ACTIVE_VIEW_NOT_VIEWABLE_IMPRESSIONS</a><br /> <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201405/ReportService.Column#TOTAL_ACTIVE_VIEW_NOT_MEASURABLE_IMPRESSIONS">Column.TOTAL_ACTIVE_VIEW_NOT_MEASURABLE_IMPRESSIONS</a><br /><br /> <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201405/ReportService.Column#AD_SERVER_ACTIVE_VIEW_NOT_VIEWABLE_IMPRESSIONS">Column.AD_SERVER_ACTIVE_VIEW_NOT_VIEWABLE_IMPRESSIONS</a><br /> <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201405/ReportService.Column#AD_SERVER_ACTIVE_VIEW_NOT_MEASURABLE_IMPRESSIONS">Column.AD_SERVER_ACTIVE_VIEW_NOT_MEASURABLE_IMPRESSIONS</a><br /><br /> <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201405/ReportService.Column#ADSENSE_ACTIVE_VIEW_NOT_VIEWABLE_IMPRESSIONS">Column.ADSENSE_ACTIVE_VIEW_NOT_VIEWABLE_IMPRESSIONS</a><br /> <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201405/ReportService.Column#ADSENSE_ACTIVE_VIEW_NOT_MEASURABLE_IMPRESSIONS">Column.ADSENSE_ACTIVE_VIEW_NOT_MEASURABLE_IMPRESSIONS</a><br /><br /> <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201405/ReportService.Column#AD_EXCHANGE_ACTIVE_VIEW_NOT_VIEWABLE_IMPRESSIONS">Column.AD_EXCHANGE_ACTIVE_VIEW_NOT_VIEWABLE_IMPRESSIONS</a><br /> <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201405/ReportService.Column#AD_EXCHANGE_ACTIVE_VIEW_NOT_MEASURABLE_IMPRESSIONS">Column.AD_EXCHANGE_ACTIVE_VIEW_NOT_MEASURABLE_IMPRESSIONS</a><br /><br /> <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201403/ReportService.Column#ACTIVE_VIEW_NOT_VIEWABLE_IMPRESSIONS">Column.ACTIVE_VIEW_NOT_VIEWABLE_IMPRESSIONS</a><br /> <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201403/ReportService.Column#ACTIVE_VIEW_NOT_MEASURABLE_IMPRESSIONS">Column.ACTIVE_VIEW_NOT_MEASURABLE_IMPRESSIONS</a><br /><br /> <font size="4">Migration</font><br /> Normally all features are supported until the API version is <a href="https://developers.google.com/doubleclick-publishers/docs/deprecation">sunset</a>. This deprecation is a rare case where these report metrics are being disabled for existing versions due to product changes related to viewability. If you are using v201408 or later, you will not be affected by this deprecation. If you are currently using these columns in v201405 or earlier, you can replace them with their logical opposites. Alternatively, to retain the same metrics, you can calculate them from the logical opposite and the rate. For example, <code>Column.TOTAL_ACTIVE_VIEW_NOT_VIEWABLE_IMPRESSIONS</code> is equivalent to<br /> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggRGBkExShlvtnXY7jmzWbzJdoyNUaw5UdFHXP-Nndui6LfqI_MNAaKvywQ89m4lUlriaLs7k1ffjocxsnm6rBkgScyl1rBTXl0Na8IgoX_Xuetz8cooOtoOWkJuNPyGhfkE0wF_iLPCs/s1600/dfp_image1.png"><img height="60" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggRGBkExShlvtnXY7jmzWbzJdoyNUaw5UdFHXP-Nndui6LfqI_MNAaKvywQ89m4lUlriaLs7k1ffjocxsnm6rBkgScyl1rBTXl0Na8IgoX_Xuetz8cooOtoOWkJuNPyGhfkE0wF_iLPCs/s1600/dfp_image1.png" width="468" /></a><br /> <font size="4">Deprecation errors</font><br /> If you do not migrate, your reports will return the following error:<br /><br /> <code>ReportError.COLUMNS_NOT_SUPPORTED_FOR_REQUESTED_DIMENSIONS</code><br /><br /> If you have any questions or migration troubles, please reach out to us on our <a href="https://groups.google.com/d/forum/google-doubleclick-for-publishers-api">developer forum</a>.<br /><br /> <span class='byline-author'><a href="https://plus.google.com/+ChrisSeeleyDev/"><img height="40" src="https://lh5.googleusercontent.com/-rNZajAGIipc/UtWtmjWjVWI/AAAAAAAAAPc/jXM6Xt5ByO0/w947-h946-no/1529708_10201760602551531_1075206704_o.jpg?sz=20" style="border: none; vertical-align: middle;" width="40" /></a>&nbsp;-&nbsp;<a href="https://plus.google.com/+ChrisSeeleyDev/" rel="author">Chris Seeley</a>, DFP API Team</span> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <div dir="ltr" style="text-align: left;" trbidi="on"> In the coming weeks, we will be deprecating all <code>ACTIVE_VIEW_NOT*</code> report columns in v201405, v201403, v201311 and v201306 of the DFP API. These columns are no longer supported in the DFP query tool, and the DFP API is following suit. The following columns will be affected:<br /><br /> <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201405/ReportService.Column#TOTAL_ACTIVE_VIEW_NOT_VIEWABLE_IMPRESSIONS">Column.TOTAL_ACTIVE_VIEW_NOT_VIEWABLE_IMPRESSIONS</a><br /> <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201405/ReportService.Column#TOTAL_ACTIVE_VIEW_NOT_MEASURABLE_IMPRESSIONS">Column.TOTAL_ACTIVE_VIEW_NOT_MEASURABLE_IMPRESSIONS</a><br /><br /> <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201405/ReportService.Column#AD_SERVER_ACTIVE_VIEW_NOT_VIEWABLE_IMPRESSIONS">Column.AD_SERVER_ACTIVE_VIEW_NOT_VIEWABLE_IMPRESSIONS</a><br /> <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201405/ReportService.Column#AD_SERVER_ACTIVE_VIEW_NOT_MEASURABLE_IMPRESSIONS">Column.AD_SERVER_ACTIVE_VIEW_NOT_MEASURABLE_IMPRESSIONS</a><br /><br /> <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201405/ReportService.Column#ADSENSE_ACTIVE_VIEW_NOT_VIEWABLE_IMPRESSIONS">Column.ADSENSE_ACTIVE_VIEW_NOT_VIEWABLE_IMPRESSIONS</a><br /> <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201405/ReportService.Column#ADSENSE_ACTIVE_VIEW_NOT_MEASURABLE_IMPRESSIONS">Column.ADSENSE_ACTIVE_VIEW_NOT_MEASURABLE_IMPRESSIONS</a><br /><br /> <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201405/ReportService.Column#AD_EXCHANGE_ACTIVE_VIEW_NOT_VIEWABLE_IMPRESSIONS">Column.AD_EXCHANGE_ACTIVE_VIEW_NOT_VIEWABLE_IMPRESSIONS</a><br /> <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201405/ReportService.Column#AD_EXCHANGE_ACTIVE_VIEW_NOT_MEASURABLE_IMPRESSIONS">Column.AD_EXCHANGE_ACTIVE_VIEW_NOT_MEASURABLE_IMPRESSIONS</a><br /><br /> <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201403/ReportService.Column#ACTIVE_VIEW_NOT_VIEWABLE_IMPRESSIONS">Column.ACTIVE_VIEW_NOT_VIEWABLE_IMPRESSIONS</a><br /> <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201403/ReportService.Column#ACTIVE_VIEW_NOT_MEASURABLE_IMPRESSIONS">Column.ACTIVE_VIEW_NOT_MEASURABLE_IMPRESSIONS</a><br /><br /> <font size="4">Migration</font><br /> Normally all features are supported until the API version is <a href="https://developers.google.com/doubleclick-publishers/docs/deprecation">sunset</a>. This deprecation is a rare case where these report metrics are being disabled for existing versions due to product changes related to viewability. If you are using v201408 or later, you will not be affected by this deprecation. If you are currently using these columns in v201405 or earlier, you can replace them with their logical opposites. Alternatively, to retain the same metrics, you can calculate them from the logical opposite and the rate. For example, <code>Column.TOTAL_ACTIVE_VIEW_NOT_VIEWABLE_IMPRESSIONS</code> is equivalent to<br /> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggRGBkExShlvtnXY7jmzWbzJdoyNUaw5UdFHXP-Nndui6LfqI_MNAaKvywQ89m4lUlriaLs7k1ffjocxsnm6rBkgScyl1rBTXl0Na8IgoX_Xuetz8cooOtoOWkJuNPyGhfkE0wF_iLPCs/s1600/dfp_image1.png"><img height="60" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggRGBkExShlvtnXY7jmzWbzJdoyNUaw5UdFHXP-Nndui6LfqI_MNAaKvywQ89m4lUlriaLs7k1ffjocxsnm6rBkgScyl1rBTXl0Na8IgoX_Xuetz8cooOtoOWkJuNPyGhfkE0wF_iLPCs/s1600/dfp_image1.png" width="468" /></a><br /> <font size="4">Deprecation errors</font><br /> If you do not migrate, your reports will return the following error:<br /><br /> <code>ReportError.COLUMNS_NOT_SUPPORTED_FOR_REQUESTED_DIMENSIONS</code><br /><br /> If you have any questions or migration troubles, please reach out to us on our <a href="https://groups.google.com/d/forum/google-doubleclick-for-publishers-api">developer forum</a>.<br /><br /> <span class='byline-author'><a href="https://plus.google.com/+ChrisSeeleyDev/"><img height="40" src="https://lh5.googleusercontent.com/-rNZajAGIipc/UtWtmjWjVWI/AAAAAAAAAPc/jXM6Xt5ByO0/w947-h946-no/1529708_10201760602551531_1075206704_o.jpg?sz=20" style="border: none; vertical-align: middle;" width="40" /></a>&nbsp;-&nbsp;<a href="https://plus.google.com/+ChrisSeeleyDev/" rel="author">Chris Seeley</a>, DFP API Team</span> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Google Ads Developer Blog:Deprecation of active view NOT_* report columns in the DFP API&url=http://ads-developers.googleblog.com/2014/12/deprecation-of-active-view-not-report.html&via=google'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=http://ads-developers.googleblog.com/2014/12/deprecation-of-active-view-not-report.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='http://ads-developers.googleblog.com/2014/12/deprecation-of-active-view-not-report.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='http://ads-developers.googleblog.com/search/label/dfp_api' rel='tag'> dfp_api </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/dfp_reports' rel='tag'> dfp_reports </a> </span> </div> </div> </div> <div class='post' data-id='596183567763411725' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='http://ads-developers.googleblog.com/2014/12/filtering-report-data-by-custom.html' itemprop='url' title='Filtering report data by custom targeting key ID in the DFP API'> Filtering report data by custom targeting key ID in the DFP API </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Friday, December 5, 2014 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <p>A lot of our DFP API developers have been asking recently about how to filter report data by custom targeting key ID. Currently the DFP API allows you to filter report data by <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201411/ReportService.Dimension#CUSTOM_TARGETING_VALUE_ID">custom targeting <i>value</i> ID</a> only. Until we have official support for filtering by custom targeting key ID in reports, you can use the <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201411/CustomTargetingService">CustomTargetingService</a> and the <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201411/ReportService">ReportService</a> together to achieve this goal.</p> <p><h2>Step 1: Use CustomTargetingService to get your keys and values</h2> You will first need to use <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201411/CustomTargetingService#getCustomTargetingValuesByStatement">getCustomTargetingValuesByStatement</a> and filter by the custom targeting keys you&#8217;re interested in to obtain all the corresponding values. For example:</p> <pre class="prettyprint"> WHERE customTargetingKeyId IN (17, 18, 19)</pre> <p>If you have a lot of keys and values in your network, a better approach is to store these in a local database and do nightly syncs. Use <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201411/CustomTargetingService#getCustomTargetingKeysByStatement">getCustomTargetingKeysByStatement</a> to obtain all the keys in your network, and then iterate through them, calling <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201411/CustomTargetingService#getCustomTargetingValuesByStatement">getCustomTargetingValuesByStatement</a> for each key to obtain their values. Our client libraries all have examples of this. For instance, the Java example can be found in our <a target="_blank" href="https://github.com/googleads/googleads-java-lib/blob/master/examples/dfp_axis/src/main/java/dfp/axis/v201411/customtargetingservice/GetAllCustomTargetingKeysAndValues.java#L45">ads Java client library GitHub repository</a>. This way, you can look up the values associated with a custom targeting key more quickly and not do an additional API call.</p> <p><h2>Step 2: Use the values in a report query</h2> Once you have the values for the custom targeting key you&#8217;re interested in, you can then use the <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201411/ReportService.ReportQuery#statement">ReportQuery.statement</a> with the PQL <code>IN</code> clause to filter on the <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201411/ReportService.Dimension#CUSTOM_TARGETING_VALUE_ID">CUSTOM_TARGETING_VALUE_ID</a> dimension. For example, say you were interested in filtering on custom targeting key ID of 7777. You look up the values of 7777 in Step 1, which gives you three value IDs: 3211, 88990, 123456. You can then use the IDs to effectively filter your report data by custom targeting key ID 7777.</p> <pre class="prettyprint"> WHERE CUSTOM_TARGETING_VALUE_ID IN (3211, 88990, 123456)</pre> <p>However, please be aware that if you have a lot of custom targeting value IDs to filter on, you should batch them by querying for no more than 500 IDs at a time in the PQL IN clause. For example, you will run your report filtering on the first 500 IDs you&#8217;ve collected and save that report. Then you will run the same report on the next page of 500 IDs you&#8217;ve collected and so on until you have no more IDs. You can then combine the reports locally so that you have all the data for those custom targeting IDs.</p> <p>If you have any questions about this, feel free to drop us a line on the <a target="_blank" href="https://groups.google.com/forum/#!forum/google-doubleclick-for-publishers-api">DFP API forums</a> or <a target="_blank" href="https://plus.google.com/+GoogleAdsDevelopers/posts">Ads Developer Google+ page</a>.</p> <p><span class='byline-author'><a target="_blank" href="https://plus.google.com/u/0/112590577081306037615"><img height="20" src="https://lh3.googleusercontent.com/-ZhiWbaD23FE/URUv61yO3GI/AAAAAAAAF7U/6pZfz4oD4nM/s20/photo.jpg?sz=20" style="vertical-align:middle; border:none;" width="20"></a>&nbsp;-&nbsp;<a target="_blank" href="https://plus.google.com/u/0/112590577081306037615" rel="author">Vincent Tsao</a>, DFP API Team</span></p> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <p>A lot of our DFP API developers have been asking recently about how to filter report data by custom targeting key ID. Currently the DFP API allows you to filter report data by <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201411/ReportService.Dimension#CUSTOM_TARGETING_VALUE_ID">custom targeting <i>value</i> ID</a> only. Until we have official support for filtering by custom targeting key ID in reports, you can use the <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201411/CustomTargetingService">CustomTargetingService</a> and the <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201411/ReportService">ReportService</a> together to achieve this goal.</p> <p><h2>Step 1: Use CustomTargetingService to get your keys and values</h2> You will first need to use <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201411/CustomTargetingService#getCustomTargetingValuesByStatement">getCustomTargetingValuesByStatement</a> and filter by the custom targeting keys you&#8217;re interested in to obtain all the corresponding values. For example:</p> <pre class="prettyprint"> WHERE customTargetingKeyId IN (17, 18, 19)</pre> <p>If you have a lot of keys and values in your network, a better approach is to store these in a local database and do nightly syncs. Use <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201411/CustomTargetingService#getCustomTargetingKeysByStatement">getCustomTargetingKeysByStatement</a> to obtain all the keys in your network, and then iterate through them, calling <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201411/CustomTargetingService#getCustomTargetingValuesByStatement">getCustomTargetingValuesByStatement</a> for each key to obtain their values. Our client libraries all have examples of this. For instance, the Java example can be found in our <a target="_blank" href="https://github.com/googleads/googleads-java-lib/blob/master/examples/dfp_axis/src/main/java/dfp/axis/v201411/customtargetingservice/GetAllCustomTargetingKeysAndValues.java#L45">ads Java client library GitHub repository</a>. This way, you can look up the values associated with a custom targeting key more quickly and not do an additional API call.</p> <p><h2>Step 2: Use the values in a report query</h2> Once you have the values for the custom targeting key you&#8217;re interested in, you can then use the <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201411/ReportService.ReportQuery#statement">ReportQuery.statement</a> with the PQL <code>IN</code> clause to filter on the <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201411/ReportService.Dimension#CUSTOM_TARGETING_VALUE_ID">CUSTOM_TARGETING_VALUE_ID</a> dimension. For example, say you were interested in filtering on custom targeting key ID of 7777. You look up the values of 7777 in Step 1, which gives you three value IDs: 3211, 88990, 123456. You can then use the IDs to effectively filter your report data by custom targeting key ID 7777.</p> <pre class="prettyprint"> WHERE CUSTOM_TARGETING_VALUE_ID IN (3211, 88990, 123456)</pre> <p>However, please be aware that if you have a lot of custom targeting value IDs to filter on, you should batch them by querying for no more than 500 IDs at a time in the PQL IN clause. For example, you will run your report filtering on the first 500 IDs you&#8217;ve collected and save that report. Then you will run the same report on the next page of 500 IDs you&#8217;ve collected and so on until you have no more IDs. You can then combine the reports locally so that you have all the data for those custom targeting IDs.</p> <p>If you have any questions about this, feel free to drop us a line on the <a target="_blank" href="https://groups.google.com/forum/#!forum/google-doubleclick-for-publishers-api">DFP API forums</a> or <a target="_blank" href="https://plus.google.com/+GoogleAdsDevelopers/posts">Ads Developer Google+ page</a>.</p> <p><span class='byline-author'><a target="_blank" href="https://plus.google.com/u/0/112590577081306037615"><img height="20" src="https://lh3.googleusercontent.com/-ZhiWbaD23FE/URUv61yO3GI/AAAAAAAAF7U/6pZfz4oD4nM/s20/photo.jpg?sz=20" style="vertical-align:middle; border:none;" width="20"></a>&nbsp;-&nbsp;<a target="_blank" href="https://plus.google.com/u/0/112590577081306037615" rel="author">Vincent Tsao</a>, DFP API Team</span></p> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Google Ads Developer Blog:Filtering report data by custom targeting key ID in the DFP API&url=http://ads-developers.googleblog.com/2014/12/filtering-report-data-by-custom.html&via=google'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=http://ads-developers.googleblog.com/2014/12/filtering-report-data-by-custom.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='http://ads-developers.googleblog.com/2014/12/filtering-report-data-by-custom.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='http://ads-developers.googleblog.com/search/label/dfp_api' rel='tag'> dfp_api </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/dfp_reports' rel='tag'> dfp_reports </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/targeting' rel='tag'> targeting </a> </span> </div> </div> </div> <div class='post' data-id='8879030312289204439' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='http://ads-developers.googleblog.com/2014/02/new-pql-tables-in-dfp-api.html' itemprop='url' title='New PQL tables in the DFP API'> New PQL tables in the DFP API </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Monday, February 10, 2014 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <div dir="ltr" style="text-align: left;" trbidi="on"> In the recent DFP API releases, we <a href="http://googleadsdeveloper.blogspot.com/2013/09/dfp-api-v201308.html" target="_blank">announced</a> the addition of more tables to the <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201311/PublisherQueryLanguageService" target="_blank">PublisherQueryLanguageService</a>, starting with <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201311/PublisherQueryLanguageService#Line_Item" target="_blank">Line_Item</a> and <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201311/PublisherQueryLanguageService#Ad_Unit" target="_blank">Ad_Unit</a>. These tables are an alternative to retrieving entities from their respective services&#8217; get***ByStatement methods. They allow you to retrieve sparse entities containing only the fields you&#8217;re interested in. For example, the following select statement retrieves the first page of only the ID and name of line items that are missing creatives. <br /> <pre>SELECT Id, Name from Line_Item WHERE IsMissingCreatives = true LIMIT 500 OFFSET 0</pre> In this blog post, we&#8217;ll go over some situations where this feature can be utilized to speed up entity retrieval times from hours to minutes. <br /> <h2> Entity synchronization</h2> <br /> The first major use case that benefits from these new tables is entity synchronization. For example, if you&#8217;re synchronizing line items on your network into a local database, you&#8217;re most likely using <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201311/LineItemService#getLineItemsByStatement" target="_blank">LineItemService.getLineItemsByStatement</a> and hopefully taking advantage of the <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201311/LineItemService.LineItem#lastModifiedDateTime" target="_blank">LineItem.lastModifiedDateTime</a> field to only filter out line items that have changed since the last time you synchronized. But even with lastModifiedDateTime, this synchronization can still take a while, depending on how many line items you have on your network, and how complex their targetings are. If you don&#8217;t need to synchronize all the fields in your line item objects, you may be able to use the Line_Item PQL table to perform this synchronization instead. <br /> <br /> If you do need to synchronize fields not yet available in the Line_Item table, such as targeting, you can still take advantage of this table for computed fields that don&#8217;t affect lastModifiedDateTime, such as <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201311/LineItemService.LineItem#status" target="_blank">LineItem.status</a>. What you can do is synchronize your line items as usual with getLineItemsByStatement filtering on lastModifiedDateTime. Then update your local statuses with selected line item statuses from the Line_Item table (a very quick process):<br /> <pre>SELECT Id, Status from Line_Item LIMIT 500 OFFSET 0</pre> <h2> Match tables for reports</h2> <br /> Local copies of line item information can also be used as match tables to construct more detailed reports. Sometimes, you may want more information in your reports than what is currently available as a <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201311/ReportService.DimensionAttribute" target="_blank">dimensionAttribute</a>. For example, if you run a report by line item ID, you may also want other line item information like <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201311/LineItemService.LineItem#isMissingCreatives" target="_blank">isMissingCreatives</a> to show in the report. Because LineItem.isMissingCreatives is unavailable as a DimensionAttribute, you can create a local match table containing line item IDs and additional columns to be included in the report. Then you can merge this match table with the report by the line item ID to obtain a report with those additional columns. <br /> <br /> For example, let&#8217;s say you run a report with the following configuration: <br /> <pre>Dimension.LINE_ITEM_ID DimensionAttribute.LINE_ITEM_COST_TYPE Column.AD_SERVER_IMPRESSIONS</pre> The report in CSV_DUMP format looks something like this: <br /> <pre>Dimension.LINE_ITEM_ID, DimensionAttribute.LINE_ITEM_COST_TYPE, Column.AD_SERVER_IMPRESSIONS 1234567, CPM, 206 1234568, CPD, 45 1234569, CPD, 4</pre> To also include LineItem.isMissingCreatives in the report, you would fetch a match table and save it (as a CSV file for example) by retrieving ID and isMissingCreatives from the Line_Item table. <br /> <pre>SELECT Id, IsMissingCreatives from Line_Item LIMIT 500 OFFSET 0</pre> Full examples of how to fetch match tables are available in all our client libraries. For instance, Python&#8217;s is <a href="https://github.com/googleads/googleads-python-lib/blob/master/examples/adspygoogle/dfp/v201311/publisher_query_language_service/fetch_match_tables.py" target="_blank">here</a>. Then using a script or a spreadsheet program, merge the match table with the report to produce something like this: <br /> <pre>Dimension.LINE_ITEM_ID, DimensionAttribute.LINE_ITEM_COST_TYPE, Column.AD_SERVER_IMPRESSIONS, <strong>LineItem.isMissingCreatives</strong> 1234567, CPM, 206, <strong>true</strong> 1234568, CPD, 45, <strong>false</strong> 1234569, CPD, 4, <strong>false</strong></pre> If you have any questions on these new PQL tables, or suggestions on what PQL tables you want in the next release, please let us know on the <a href="https://groups.google.com/forum/?fromgroups#!forum/google-doubleclick-for-publishers-api" target="_blank">API forum</a>, or on our <a href="https://plus.google.com/+GoogleAdsDevelopers/posts" target="_blank">Google+ Developers page</a>.<br /> <br /> <span class="post-author"><a href="https://plus.google.com/u/0/112590577081306037615"><img height="20" src="https://lh3.googleusercontent.com/-ZhiWbaD23FE/URUv61yO3GI/AAAAAAAAF7U/6pZfz4oD4nM/s20/photo.jpg?sz=20" style="border: none; vertical-align: middle;" width="20" /></a>&nbsp;-&nbsp;<a href="https://plus.google.com/u/0/112590577081306037615" rel="author">Vincent Tsao</a>, DFP API Team</span> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <div dir="ltr" style="text-align: left;" trbidi="on"> In the recent DFP API releases, we <a href="http://googleadsdeveloper.blogspot.com/2013/09/dfp-api-v201308.html" target="_blank">announced</a> the addition of more tables to the <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201311/PublisherQueryLanguageService" target="_blank">PublisherQueryLanguageService</a>, starting with <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201311/PublisherQueryLanguageService#Line_Item" target="_blank">Line_Item</a> and <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201311/PublisherQueryLanguageService#Ad_Unit" target="_blank">Ad_Unit</a>. These tables are an alternative to retrieving entities from their respective services&#8217; get***ByStatement methods. They allow you to retrieve sparse entities containing only the fields you&#8217;re interested in. For example, the following select statement retrieves the first page of only the ID and name of line items that are missing creatives. <br /> <pre>SELECT Id, Name from Line_Item WHERE IsMissingCreatives = true LIMIT 500 OFFSET 0</pre> In this blog post, we&#8217;ll go over some situations where this feature can be utilized to speed up entity retrieval times from hours to minutes. <br /> <h2> Entity synchronization</h2> <br /> The first major use case that benefits from these new tables is entity synchronization. For example, if you&#8217;re synchronizing line items on your network into a local database, you&#8217;re most likely using <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201311/LineItemService#getLineItemsByStatement" target="_blank">LineItemService.getLineItemsByStatement</a> and hopefully taking advantage of the <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201311/LineItemService.LineItem#lastModifiedDateTime" target="_blank">LineItem.lastModifiedDateTime</a> field to only filter out line items that have changed since the last time you synchronized. But even with lastModifiedDateTime, this synchronization can still take a while, depending on how many line items you have on your network, and how complex their targetings are. If you don&#8217;t need to synchronize all the fields in your line item objects, you may be able to use the Line_Item PQL table to perform this synchronization instead. <br /> <br /> If you do need to synchronize fields not yet available in the Line_Item table, such as targeting, you can still take advantage of this table for computed fields that don&#8217;t affect lastModifiedDateTime, such as <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201311/LineItemService.LineItem#status" target="_blank">LineItem.status</a>. What you can do is synchronize your line items as usual with getLineItemsByStatement filtering on lastModifiedDateTime. Then update your local statuses with selected line item statuses from the Line_Item table (a very quick process):<br /> <pre>SELECT Id, Status from Line_Item LIMIT 500 OFFSET 0</pre> <h2> Match tables for reports</h2> <br /> Local copies of line item information can also be used as match tables to construct more detailed reports. Sometimes, you may want more information in your reports than what is currently available as a <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201311/ReportService.DimensionAttribute" target="_blank">dimensionAttribute</a>. For example, if you run a report by line item ID, you may also want other line item information like <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201311/LineItemService.LineItem#isMissingCreatives" target="_blank">isMissingCreatives</a> to show in the report. Because LineItem.isMissingCreatives is unavailable as a DimensionAttribute, you can create a local match table containing line item IDs and additional columns to be included in the report. Then you can merge this match table with the report by the line item ID to obtain a report with those additional columns. <br /> <br /> For example, let&#8217;s say you run a report with the following configuration: <br /> <pre>Dimension.LINE_ITEM_ID DimensionAttribute.LINE_ITEM_COST_TYPE Column.AD_SERVER_IMPRESSIONS</pre> The report in CSV_DUMP format looks something like this: <br /> <pre>Dimension.LINE_ITEM_ID, DimensionAttribute.LINE_ITEM_COST_TYPE, Column.AD_SERVER_IMPRESSIONS 1234567, CPM, 206 1234568, CPD, 45 1234569, CPD, 4</pre> To also include LineItem.isMissingCreatives in the report, you would fetch a match table and save it (as a CSV file for example) by retrieving ID and isMissingCreatives from the Line_Item table. <br /> <pre>SELECT Id, IsMissingCreatives from Line_Item LIMIT 500 OFFSET 0</pre> Full examples of how to fetch match tables are available in all our client libraries. For instance, Python&#8217;s is <a href="https://github.com/googleads/googleads-python-lib/blob/master/examples/adspygoogle/dfp/v201311/publisher_query_language_service/fetch_match_tables.py" target="_blank">here</a>. Then using a script or a spreadsheet program, merge the match table with the report to produce something like this: <br /> <pre>Dimension.LINE_ITEM_ID, DimensionAttribute.LINE_ITEM_COST_TYPE, Column.AD_SERVER_IMPRESSIONS, <strong>LineItem.isMissingCreatives</strong> 1234567, CPM, 206, <strong>true</strong> 1234568, CPD, 45, <strong>false</strong> 1234569, CPD, 4, <strong>false</strong></pre> If you have any questions on these new PQL tables, or suggestions on what PQL tables you want in the next release, please let us know on the <a href="https://groups.google.com/forum/?fromgroups#!forum/google-doubleclick-for-publishers-api" target="_blank">API forum</a>, or on our <a href="https://plus.google.com/+GoogleAdsDevelopers/posts" target="_blank">Google+ Developers page</a>.<br /> <br /> <span class="post-author"><a href="https://plus.google.com/u/0/112590577081306037615"><img height="20" src="https://lh3.googleusercontent.com/-ZhiWbaD23FE/URUv61yO3GI/AAAAAAAAF7U/6pZfz4oD4nM/s20/photo.jpg?sz=20" style="border: none; vertical-align: middle;" width="20" /></a>&nbsp;-&nbsp;<a href="https://plus.google.com/u/0/112590577081306037615" rel="author">Vincent Tsao</a>, DFP API Team</span> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Google Ads Developer Blog:New PQL tables in the DFP API&url=http://ads-developers.googleblog.com/2014/02/new-pql-tables-in-dfp-api.html&via=google'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=http://ads-developers.googleblog.com/2014/02/new-pql-tables-in-dfp-api.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='http://ads-developers.googleblog.com/2014/02/new-pql-tables-in-dfp-api.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='http://ads-developers.googleblog.com/search/label/dfp_api' rel='tag'> dfp_api </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/dfp_pql' rel='tag'> dfp_pql </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/dfp_reports' rel='tag'> dfp_reports </a> </span> </div> </div> </div> <div class='post' data-id='3349229559579226087' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='http://ads-developers.googleblog.com/2013/09/dfp-api-v201308.html' itemprop='url' title='Announcing v201308 of the DFP API and all-version improvements'> Announcing v201308 of the DFP API and all-version improvements </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Monday, September 9, 2013 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <div dir="ltr" style="text-align: left;" trbidi="on"> Today we are launching v201308 of the DFP API, which brings many new and exciting features and a glimpse of the API&#8217;s future. This release improves report stability, offers a brand new way to fetch line items through a Publisher Query Language table, the ability to create first party audience segments, and the ability to see contending line item in forecasts. A detailed list of these features and what&#8217;s changed can be found on our&nbsp;<a href="https://developers.google.com/doubleclick-publishers/docs/rel_notes.html">release notes page</a>.<br /> <br /> <div> <div> <div style="text-align: left;"> <b> Reporting</b></div> <div style="text-align: left;"> <br /></div> First off, we heard you loud and clear - reports are very important to you and when a report fails for no apparent reason, it&#8217;s incredibly frustrating. Starting today, we are taking major steps towards our goal to fix this. You&#8217;ll now notice that large reports, which would otherwise time out or fail with a 502 HTTP status code while fetching the download URL, will now spend more time preparing the report in the <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201308/ReportService#runReportJob">runReportJob</a>&nbsp;stage. Some reports may still be too large to run, but any report that runs in the UI will now work via the API as well. We've also made this change behind the scenes, so you&#8217;ll start seeing improvements right away without having to switch to v201308. While we know there is still more work to be done, we hope this is a clear sign that we take this issue seriously and are working hard to improve it.<br /> <br /> In addition to stability improvements, in v201308, we are launching two highly requested features: <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201308/ReportService.Column#AD_SERVER_TARGETED_IMPRESSIONS">targeted criteria</a>&nbsp;reporting and <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201308/ReportService.Column#ACTIVE_VIEW_VIEWABLE_IMPRESSIONS">ActiveView</a>&nbsp;(a.k.a. <a href="http://doubleclickpublishers.blogspot.com/2013/04/the-importance-of-being-seen.html">viewability metrics</a>) columns. These features are not available in all networks yet, but you or your third-party will be able to use them as soon as they are rolled out, if your network is eligible.<br /> <br /></div> <div> <div style="text-align: left;"> <b> Publisher Query Language</b></div> <div style="text-align: left;"> <br /></div> <div style="text-align: left;"> We are launching two major PQL features today - the <a href="https://developers.google.com/doubleclick-publishers/docs/pqlreference">LIKE</a>&nbsp;keyword and the <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201308/PublisherQueryLanguageService#Line_Item">Line_Item</a> table, both of which will be made available in all versions.<br /> <br /> The LIKE keyword allows you to do wildcard matching for fields. For example, if you pass the filter statement &#8220;WHERE Name LIKE 'my order%'&#8221; to the OrderService.getOrdersByStatement method, it will match all orders that have a name beginning with &#8216;my order&#8217; (like &#8216;my order 1&#8217;, &#8216;my order 2&#8217; and &#8216;my orders&#8217;).<br /> <br /> The other exciting feature of this release is the experimental Line_Item table. With this new table, you&#8217;ll be able to select only the fields you want for line items using the PublisherQueryLanguageService. For example:<br /> <br /> <span style="font-family: Courier New, Courier, monospace;">SELECT Id, Name FROM Line_Item WHERE IsMissingCreatives = TRUE LIMIT 1000 OFFSET 0</span><br /> <br /> This allows for extremely efficient synchronization; tasks that would take hours with LineItemService, will now take minutes. We think this will be a great fit for pulling &#8220;match tables&#8221; and we&#8217;ll have a follow-up blog post soon about how to do this. Although we are launching this with a limited set of fields, we have made it a priority to add more in upcoming releases and we&#8217;d love to hear your feedback on our <a href="https://groups.google.com/forum/#!forum/google-doubleclick-for-publishers-api">forum</a> or <a href="https://plus.google.com/+GoogleAdsDevelopers">Ads Developer Google+ page</a>. If you want to get started playing with these new features now, you can always visit the <a href="https://dfp-playground.appspot.com/">dfp-playground</a>. Try using the Publisher Query Language section with a query like &#8220;SELECT Id, Name FROM Line_Item WHERE name LIKE 'Line Item #%' LIMIT 100&#8221;.<br /> <br /></div> <div style="text-align: left;"> </div> <div style="text-align: left;"> <b> Last, but not least</b></div> <div style="text-align: left;"> <b><br /></b></div> Starting in v201308, we are adding support for <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201308/AudienceSegmentService#createAudienceSegments">creating first party audience segments</a> with the AudienceSegmentService as well as retrieving <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201308/ForecastService.Forecast#contendingLineItems">contending line items</a>&nbsp;with the ForecastService. We know the latter has been a long time coming, so we are looking forward to any feedback.<br /> <br /> As always, if you have any suggestions or questions about the new version, feel free to drop us a line on our <a href="https://plus.google.com/+GoogleAdsDevelopers">Ads Developer Google+ page</a>.<br /> <br /> <br /> <div style="text-align: left;"> <a href="https://plus.google.com/100742954389084668497"><img alt="" border="0" height="20" id="BLOGGER_PHOTO_ID_5677875414712016498" src="https://lh4.googleusercontent.com/-tcqfAdWqCFc/AAAAAAAAAAI/AAAAAAABT3Y/JU6vWx64NbU/photo.jpg?sz=20" style="border: none; vertical-align: middle;" width="20" /></a>&nbsp;-&nbsp;<a href="https://plus.google.com/100742954389084668497" rel="author">Adam Rogal</a>, DFP API Team</div> </div> </div> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <div dir="ltr" style="text-align: left;" trbidi="on"> Today we are launching v201308 of the DFP API, which brings many new and exciting features and a glimpse of the API&#8217;s future. This release improves report stability, offers a brand new way to fetch line items through a Publisher Query Language table, the ability to create first party audience segments, and the ability to see contending line item in forecasts. A detailed list of these features and what&#8217;s changed can be found on our&nbsp;<a href="https://developers.google.com/doubleclick-publishers/docs/rel_notes.html">release notes page</a>.<br /> <br /> <div> <div> <div style="text-align: left;"> <b> Reporting</b></div> <div style="text-align: left;"> <br /></div> First off, we heard you loud and clear - reports are very important to you and when a report fails for no apparent reason, it&#8217;s incredibly frustrating. Starting today, we are taking major steps towards our goal to fix this. You&#8217;ll now notice that large reports, which would otherwise time out or fail with a 502 HTTP status code while fetching the download URL, will now spend more time preparing the report in the <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201308/ReportService#runReportJob">runReportJob</a>&nbsp;stage. Some reports may still be too large to run, but any report that runs in the UI will now work via the API as well. We've also made this change behind the scenes, so you&#8217;ll start seeing improvements right away without having to switch to v201308. While we know there is still more work to be done, we hope this is a clear sign that we take this issue seriously and are working hard to improve it.<br /> <br /> In addition to stability improvements, in v201308, we are launching two highly requested features: <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201308/ReportService.Column#AD_SERVER_TARGETED_IMPRESSIONS">targeted criteria</a>&nbsp;reporting and <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201308/ReportService.Column#ACTIVE_VIEW_VIEWABLE_IMPRESSIONS">ActiveView</a>&nbsp;(a.k.a. <a href="http://doubleclickpublishers.blogspot.com/2013/04/the-importance-of-being-seen.html">viewability metrics</a>) columns. These features are not available in all networks yet, but you or your third-party will be able to use them as soon as they are rolled out, if your network is eligible.<br /> <br /></div> <div> <div style="text-align: left;"> <b> Publisher Query Language</b></div> <div style="text-align: left;"> <br /></div> <div style="text-align: left;"> We are launching two major PQL features today - the <a href="https://developers.google.com/doubleclick-publishers/docs/pqlreference">LIKE</a>&nbsp;keyword and the <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201308/PublisherQueryLanguageService#Line_Item">Line_Item</a> table, both of which will be made available in all versions.<br /> <br /> The LIKE keyword allows you to do wildcard matching for fields. For example, if you pass the filter statement &#8220;WHERE Name LIKE 'my order%'&#8221; to the OrderService.getOrdersByStatement method, it will match all orders that have a name beginning with &#8216;my order&#8217; (like &#8216;my order 1&#8217;, &#8216;my order 2&#8217; and &#8216;my orders&#8217;).<br /> <br /> The other exciting feature of this release is the experimental Line_Item table. With this new table, you&#8217;ll be able to select only the fields you want for line items using the PublisherQueryLanguageService. For example:<br /> <br /> <span style="font-family: Courier New, Courier, monospace;">SELECT Id, Name FROM Line_Item WHERE IsMissingCreatives = TRUE LIMIT 1000 OFFSET 0</span><br /> <br /> This allows for extremely efficient synchronization; tasks that would take hours with LineItemService, will now take minutes. We think this will be a great fit for pulling &#8220;match tables&#8221; and we&#8217;ll have a follow-up blog post soon about how to do this. Although we are launching this with a limited set of fields, we have made it a priority to add more in upcoming releases and we&#8217;d love to hear your feedback on our <a href="https://groups.google.com/forum/#!forum/google-doubleclick-for-publishers-api">forum</a> or <a href="https://plus.google.com/+GoogleAdsDevelopers">Ads Developer Google+ page</a>. If you want to get started playing with these new features now, you can always visit the <a href="https://dfp-playground.appspot.com/">dfp-playground</a>. Try using the Publisher Query Language section with a query like &#8220;SELECT Id, Name FROM Line_Item WHERE name LIKE 'Line Item #%' LIMIT 100&#8221;.<br /> <br /></div> <div style="text-align: left;"> </div> <div style="text-align: left;"> <b> Last, but not least</b></div> <div style="text-align: left;"> <b><br /></b></div> Starting in v201308, we are adding support for <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201308/AudienceSegmentService#createAudienceSegments">creating first party audience segments</a> with the AudienceSegmentService as well as retrieving <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201308/ForecastService.Forecast#contendingLineItems">contending line items</a>&nbsp;with the ForecastService. We know the latter has been a long time coming, so we are looking forward to any feedback.<br /> <br /> As always, if you have any suggestions or questions about the new version, feel free to drop us a line on our <a href="https://plus.google.com/+GoogleAdsDevelopers">Ads Developer Google+ page</a>.<br /> <br /> <br /> <div style="text-align: left;"> <a href="https://plus.google.com/100742954389084668497"><img alt="" border="0" height="20" id="BLOGGER_PHOTO_ID_5677875414712016498" src="https://lh4.googleusercontent.com/-tcqfAdWqCFc/AAAAAAAAAAI/AAAAAAABT3Y/JU6vWx64NbU/photo.jpg?sz=20" style="border: none; vertical-align: middle;" width="20" /></a>&nbsp;-&nbsp;<a href="https://plus.google.com/100742954389084668497" rel="author">Adam Rogal</a>, DFP API Team</div> </div> </div> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Google Ads Developer Blog:Announcing v201308 of the DFP API and all-version improvements&url=http://ads-developers.googleblog.com/2013/09/dfp-api-v201308.html&via=google'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=http://ads-developers.googleblog.com/2013/09/dfp-api-v201308.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='http://ads-developers.googleblog.com/2013/09/dfp-api-v201308.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='http://ads-developers.googleblog.com/search/label/dfp_api' rel='tag'> dfp_api </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/dfp_pql' rel='tag'> dfp_pql </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/dfp_reports' rel='tag'> dfp_reports </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/dfp_v201308' rel='tag'> dfp_v201308 </a> </span> </div> </div> </div> <div class='post' data-id='1245974068254383587' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='http://ads-developers.googleblog.com/2013/08/dfp-small-business-changes-and-our-api.html' itemprop='url' title='DFP small business changes and our API'> DFP small business changes and our API </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Tuesday, August 13, 2013 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> Recently we announced how we&#8217;re <a target="_blank" href="http://doubleclickpublishers.blogspot.com/2013/07/helping-publishers-grow-with-dfp-small.html">helping publishers grow with DFP small business</a>. This included making a number of features available to small business networks. In this blog post, we&#8217;ll describe how these changes affect the way small business networks use the API.<br /> <h2>Creatives</h2>Creatives can now be reused for small business networks. When using <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/LineItemCreativeAssociationService#createLineItemCreativeAssociation">LineItemCreativeAssociationService.createLineItemCreativeAssociation</a>, you can now use an existing creative for the <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/LineItemCreativeAssociationService.LineItemCreativeAssociation#creativeId">LineItemCreativeAssociation.creativeId</a> instead of having to copy the creative.<br /> <br /> <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/CreativeService.CustomCreative">CustomCreatives</a> and <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/CreativeService.TemplateCreative">TemplateCreatives</a> are now available to small business networks as well. The following creatives that were previously only for small business networks now come back as TemplateCreatives starting in v201306:<br /> <ul><li>FlashExpandableCreative &#8594; <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/CreativeService.TemplateCreative#creativeTemplateId">TemplateCreative.creativeTemplateId</a> of 10001160.</li> <li>FlashPushdownCreative &#8594; TemplateCreative.creativeTemplateId of 10001400.</li> <li>FloatingFlashCreative &#8594; TemplateCreative.creativeTemplateId of 10000560.</li> <li>TextAdCreative &#8594; TemplateCreative.creativeTemplateId of 10000440.</li> </ul><h2>Targeting and Delivery</h2>All custom targeting <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/CustomTargetingService.CustomTargetingValue.MatchType">matchTypes</a> are now available to small business networks and can be set on a <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/CustomTargetingService.CustomTargetingValue#matchType">CustomTargetingValue</a> object when creating custom targeting using the <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/CustomTargetingService">CustomTargetingService</a>.<br /> <br /> Since competitive exclusions and ad exclusions are now available to small business networks, you can use the <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/LabelService">LabelService</a> to create and manage labels for them. They can then be set on the <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/LineItemService.LineItem#appliedLabels">LineItem.appliedLabels</a> and <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/InventoryService.AdUnit#appliedLabels">AdUnits.appliedLabels</a> fields.<br /> <h2>Reports</h2>Reach reports are now available to small business networks. You can run reach reports via the API using the <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/ReportService">ReportService&#8217;s</a> <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/ReportService.Column#REACH_FREQUENCY">reach report columns</a> and <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/ReportService.DateRangeType#REACH_LIFETIME">reach report date range types</a>.<br /> <br /> City-level geographic data has also been made available in reports for small business networks and can be added to reports using the <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/ReportService.Dimension#CITY_CRITERIA_ID">city dimensions</a>.<br /> <h2>Network administration</h2>Since custom user roles are now available to small business networks, if you create a custom user role using the web UI, you can use <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/UserService#getAllRoles">UserService.getAllRoles</a> to obtain the IDs of those roles and <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/UserService.User#roleId">assign them to your users</a>.<br /> <br /> If you&#8217;re a small business network and have any questions or concerns about how these changes may affect your API use, please post your questions to the <a target="_blank" href="https://groups.google.com/forum/#!forum/google-doubleclick-for-publishers-api">DFP API forums</a>. Additionally, the <a target="_blank" href="https://code.google.com/p/google-api-ads-java/source/browse/#git%2Fexamples%2Fdfp_axis%2Fsrc%2Fmain%2Fjava%2Fdfp%2Faxis%2Fv201306">Ads Java client library&#8217;s DFP examples</a> are a great place to start exploring these additional features.<br /> <br /> <span class="post-author"><a href="https://plus.google.com/u/0/112590577081306037615"><img height="20" src="https://lh3.googleusercontent.com/-ZhiWbaD23FE/URUv61yO3GI/AAAAAAAAF7U/6pZfz4oD4nM/s20/photo.jpg?sz=20" style="border: none; vertical-align: middle;" width="20" /></a>&nbsp;-&nbsp;<a target="_blank" href="https://plus.google.com/u/0/112590577081306037615" rel="author">Vincent Tsao</a>, DFP API Team</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> Recently we announced how we&#8217;re <a target="_blank" href="http://doubleclickpublishers.blogspot.com/2013/07/helping-publishers-grow-with-dfp-small.html">helping publishers grow with DFP small business</a>. This included making a number of features available to small business networks. In this blog post, we&#8217;ll describe how these changes affect the way small business networks use the API.<br /> <h2>Creatives</h2>Creatives can now be reused for small business networks. When using <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/LineItemCreativeAssociationService#createLineItemCreativeAssociation">LineItemCreativeAssociationService.createLineItemCreativeAssociation</a>, you can now use an existing creative for the <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/LineItemCreativeAssociationService.LineItemCreativeAssociation#creativeId">LineItemCreativeAssociation.creativeId</a> instead of having to copy the creative.<br /> <br /> <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/CreativeService.CustomCreative">CustomCreatives</a> and <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/CreativeService.TemplateCreative">TemplateCreatives</a> are now available to small business networks as well. The following creatives that were previously only for small business networks now come back as TemplateCreatives starting in v201306:<br /> <ul><li>FlashExpandableCreative &#8594; <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/CreativeService.TemplateCreative#creativeTemplateId">TemplateCreative.creativeTemplateId</a> of 10001160.</li> <li>FlashPushdownCreative &#8594; TemplateCreative.creativeTemplateId of 10001400.</li> <li>FloatingFlashCreative &#8594; TemplateCreative.creativeTemplateId of 10000560.</li> <li>TextAdCreative &#8594; TemplateCreative.creativeTemplateId of 10000440.</li> </ul><h2>Targeting and Delivery</h2>All custom targeting <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/CustomTargetingService.CustomTargetingValue.MatchType">matchTypes</a> are now available to small business networks and can be set on a <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/CustomTargetingService.CustomTargetingValue#matchType">CustomTargetingValue</a> object when creating custom targeting using the <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/CustomTargetingService">CustomTargetingService</a>.<br /> <br /> Since competitive exclusions and ad exclusions are now available to small business networks, you can use the <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/LabelService">LabelService</a> to create and manage labels for them. They can then be set on the <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/LineItemService.LineItem#appliedLabels">LineItem.appliedLabels</a> and <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/InventoryService.AdUnit#appliedLabels">AdUnits.appliedLabels</a> fields.<br /> <h2>Reports</h2>Reach reports are now available to small business networks. You can run reach reports via the API using the <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/ReportService">ReportService&#8217;s</a> <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/ReportService.Column#REACH_FREQUENCY">reach report columns</a> and <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/ReportService.DateRangeType#REACH_LIFETIME">reach report date range types</a>.<br /> <br /> City-level geographic data has also been made available in reports for small business networks and can be added to reports using the <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/ReportService.Dimension#CITY_CRITERIA_ID">city dimensions</a>.<br /> <h2>Network administration</h2>Since custom user roles are now available to small business networks, if you create a custom user role using the web UI, you can use <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/UserService#getAllRoles">UserService.getAllRoles</a> to obtain the IDs of those roles and <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/UserService.User#roleId">assign them to your users</a>.<br /> <br /> If you&#8217;re a small business network and have any questions or concerns about how these changes may affect your API use, please post your questions to the <a target="_blank" href="https://groups.google.com/forum/#!forum/google-doubleclick-for-publishers-api">DFP API forums</a>. Additionally, the <a target="_blank" href="https://code.google.com/p/google-api-ads-java/source/browse/#git%2Fexamples%2Fdfp_axis%2Fsrc%2Fmain%2Fjava%2Fdfp%2Faxis%2Fv201306">Ads Java client library&#8217;s DFP examples</a> are a great place to start exploring these additional features.<br /> <br /> <span class="post-author"><a href="https://plus.google.com/u/0/112590577081306037615"><img height="20" src="https://lh3.googleusercontent.com/-ZhiWbaD23FE/URUv61yO3GI/AAAAAAAAF7U/6pZfz4oD4nM/s20/photo.jpg?sz=20" style="border: none; vertical-align: middle;" width="20" /></a>&nbsp;-&nbsp;<a target="_blank" href="https://plus.google.com/u/0/112590577081306037615" rel="author">Vincent Tsao</a>, DFP API Team</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Google Ads Developer Blog:DFP small business changes and our API&url=http://ads-developers.googleblog.com/2013/08/dfp-small-business-changes-and-our-api.html&via=google'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=http://ads-developers.googleblog.com/2013/08/dfp-small-business-changes-and-our-api.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='http://ads-developers.googleblog.com/2013/08/dfp-small-business-changes-and-our-api.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='http://ads-developers.googleblog.com/search/label/dfp_api' rel='tag'> dfp_api </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/dfp_creatives' rel='tag'> dfp_creatives </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/dfp_reports' rel='tag'> dfp_reports </a> </span> </div> </div> </div> <div class='post' data-id='9173491196116709139' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='http://ads-developers.googleblog.com/2013/06/dfp-api-v201306.html' itemprop='url' title='Announcing v201306 and the Sales Management Services of the DFP API'> Announcing v201306 and the Sales Management Services of the DFP API </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Monday, June 24, 2013 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <div dir="ltr" style="text-align: left;" trbidi="on"> We are pleased to announce the release of v201306 of the DFP API - one of our largest launches yet. It introduces many new features for creative management, forecasting, reporting, and includes a beta release of the sales management services. A detailed list of these features and what&#8217;s changed can be found on our&nbsp;<a href="https://developers.google.com/doubleclick-publishers/docs/rel_notes.html">release notes page</a>.<br /> <br /> <div> <b>Sales Management API</b><br /> <div> <br /></div> <div> With the launch of v201306 also comes the release of the <a href="https://developers.google.com/doubleclick-publishers/docs/sales">Sales Management</a> beta services. Sales Management is currently being piloted by a small group of partners and we plan to extend availability throughout the year. We'd like to offer beta access to developers who plan to leverage the API to build connections to other business tools and systems.<br /> <br /> The sales services allow you to:<br /> <ul style="text-align: left;"> <li>Create and track <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/ProposalService">proposals</a></li> <li>Manage a catalog of <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/ProductService">products</a></li> <li>Define and update <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/RateCardService">rate cards</a></li> <li><a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/ReconciliationReportService">Reconcile</a> monthly reports</li> </ul> For more information, take a look at our <a href="https://developers.google.com/doubleclick-publishers/docs/sales/cases">use cases guide</a>. <br /> <br /> To request access to the Sales Management services, please complete <a href="https://docs.google.com/forms/d/1ibactm03d0fVuzU0lws8mJSp4HHQkl5E-56tMVVgW50/viewform">this form</a> and our team will be in touch with further instructions.<br /> <br /> <b>Reporting</b><br /> <br /></div> <div> As we detailed in our previous <a href="http://googleadsdeveloper.blogspot.com/2013/03/announcing-v201302-and-deprecation-of-3.html">blog posts</a>, improving the stability and feature set of the reports is a top priority. Some highlights of note for v201306:<br /> <ul style="text-align: left;"> <li>Columns, dimensions, and dimension attributes will now appear in reports in the order in which they were requested. This does not affect previous versions.</li> </ul> <ul style="text-align: left;"> <li>If you have the feature enabled, you can now specify a <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/ReportService.ReportQuery#timeZone">timeZone</a>&nbsp;to run the report in. Supported time zones for your network can be found using the Time_Zone table through the <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/PublisherQueryLanguageService">PublisherQueryLanguage</a> service. Please contact your account manager for questions regarding enabling this feature.<br /><br /></li> <li>More than 50 <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/ReportService.Column">columns</a>, <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/ReportService.Dimension">dimensions</a>, and <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/ReportService.DimensionAttribute">dimension attributes</a>&nbsp;have been added to bring the API closer to parity with the UI.&nbsp;</li> </ul> <b>Creatives</b><br /> <b><br /></b></div> <div> To make managing non-standard creatives easier, beginning in v201306, the creative types FlashExpandableCreative, FlashPushdownCreative, FloatingFlashCreative, and TextAdCreative have been replaced with the type <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/CreativeService.TemplateCreative">TemplateCreative</a>. In addition, the <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/CreativeService.TemplateCreative#destinationUrl">TemplateCreative.destinationUrl</a> field has been added for use with %u or %%DEST_URL%% macros. As more template types are added to DFP, our hope is that you&#8217;ll be able to take advantage of them with less code modification.<br /> <br /> If you have any suggestions or questions about the new version, feel free to comment on our plus page:&nbsp;<a href="https://plus.google.com/u/0/115658573333388777174/posts/Zxi5SRfwPDS">Ads Developer Google+ page</a>.<br /> <br /> <a href="https://plus.google.com/100742954389084668497"><img alt="" border="0" height="20" id="BLOGGER_PHOTO_ID_5677875414712016498" src="https://lh4.googleusercontent.com/-tcqfAdWqCFc/AAAAAAAAAAI/AAAAAAABT3Y/JU6vWx64NbU/photo.jpg?sz=20" style="border: none; vertical-align: middle;" width="20" /></a>&nbsp;-&nbsp;<a href="https://plus.google.com/100742954389084668497" rel="author">Adam Rogal</a>, DFP API Team</div> </div> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <div dir="ltr" style="text-align: left;" trbidi="on"> We are pleased to announce the release of v201306 of the DFP API - one of our largest launches yet. It introduces many new features for creative management, forecasting, reporting, and includes a beta release of the sales management services. A detailed list of these features and what&#8217;s changed can be found on our&nbsp;<a href="https://developers.google.com/doubleclick-publishers/docs/rel_notes.html">release notes page</a>.<br /> <br /> <div> <b>Sales Management API</b><br /> <div> <br /></div> <div> With the launch of v201306 also comes the release of the <a href="https://developers.google.com/doubleclick-publishers/docs/sales">Sales Management</a> beta services. Sales Management is currently being piloted by a small group of partners and we plan to extend availability throughout the year. We'd like to offer beta access to developers who plan to leverage the API to build connections to other business tools and systems.<br /> <br /> The sales services allow you to:<br /> <ul style="text-align: left;"> <li>Create and track <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/ProposalService">proposals</a></li> <li>Manage a catalog of <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/ProductService">products</a></li> <li>Define and update <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/RateCardService">rate cards</a></li> <li><a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/ReconciliationReportService">Reconcile</a> monthly reports</li> </ul> For more information, take a look at our <a href="https://developers.google.com/doubleclick-publishers/docs/sales/cases">use cases guide</a>. <br /> <br /> To request access to the Sales Management services, please complete <a href="https://docs.google.com/forms/d/1ibactm03d0fVuzU0lws8mJSp4HHQkl5E-56tMVVgW50/viewform">this form</a> and our team will be in touch with further instructions.<br /> <br /> <b>Reporting</b><br /> <br /></div> <div> As we detailed in our previous <a href="http://googleadsdeveloper.blogspot.com/2013/03/announcing-v201302-and-deprecation-of-3.html">blog posts</a>, improving the stability and feature set of the reports is a top priority. Some highlights of note for v201306:<br /> <ul style="text-align: left;"> <li>Columns, dimensions, and dimension attributes will now appear in reports in the order in which they were requested. This does not affect previous versions.</li> </ul> <ul style="text-align: left;"> <li>If you have the feature enabled, you can now specify a <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/ReportService.ReportQuery#timeZone">timeZone</a>&nbsp;to run the report in. Supported time zones for your network can be found using the Time_Zone table through the <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/PublisherQueryLanguageService">PublisherQueryLanguage</a> service. Please contact your account manager for questions regarding enabling this feature.<br /><br /></li> <li>More than 50 <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/ReportService.Column">columns</a>, <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/ReportService.Dimension">dimensions</a>, and <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/ReportService.DimensionAttribute">dimension attributes</a>&nbsp;have been added to bring the API closer to parity with the UI.&nbsp;</li> </ul> <b>Creatives</b><br /> <b><br /></b></div> <div> To make managing non-standard creatives easier, beginning in v201306, the creative types FlashExpandableCreative, FlashPushdownCreative, FloatingFlashCreative, and TextAdCreative have been replaced with the type <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/CreativeService.TemplateCreative">TemplateCreative</a>. In addition, the <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201306/CreativeService.TemplateCreative#destinationUrl">TemplateCreative.destinationUrl</a> field has been added for use with %u or %%DEST_URL%% macros. As more template types are added to DFP, our hope is that you&#8217;ll be able to take advantage of them with less code modification.<br /> <br /> If you have any suggestions or questions about the new version, feel free to comment on our plus page:&nbsp;<a href="https://plus.google.com/u/0/115658573333388777174/posts/Zxi5SRfwPDS">Ads Developer Google+ page</a>.<br /> <br /> <a href="https://plus.google.com/100742954389084668497"><img alt="" border="0" height="20" id="BLOGGER_PHOTO_ID_5677875414712016498" src="https://lh4.googleusercontent.com/-tcqfAdWqCFc/AAAAAAAAAAI/AAAAAAABT3Y/JU6vWx64NbU/photo.jpg?sz=20" style="border: none; vertical-align: middle;" width="20" /></a>&nbsp;-&nbsp;<a href="https://plus.google.com/100742954389084668497" rel="author">Adam Rogal</a>, DFP API Team</div> </div> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Google Ads Developer Blog:Announcing v201306 and the Sales Management Services of the DFP API&url=http://ads-developers.googleblog.com/2013/06/dfp-api-v201306.html&via=google'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=http://ads-developers.googleblog.com/2013/06/dfp-api-v201306.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='http://ads-developers.googleblog.com/2013/06/dfp-api-v201306.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='http://ads-developers.googleblog.com/search/label/dfp_api' rel='tag'> dfp_api </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/dfp_creatives' rel='tag'> dfp_creatives </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/dfp_reports' rel='tag'> dfp_reports </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/dfp_sales' rel='tag'> dfp_sales </a> </span> </div> </div> </div> <div class='post' data-id='3258112415356265752' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='http://ads-developers.googleblog.com/2013/04/clarification-on-running-sell-through.html' itemprop='url' title='Clarification on running sell through reports in the DFP API'> Clarification on running sell through reports in the DFP API </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Monday, April 1, 2013 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> In the recent DFP v201302 release, we <a target="_blank" href="http://googleadsdeveloper.blogspot.com/2013/03/announcing-v201302-and-deprecation-of-3.html">announced</a> that the ability to run <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201302/ReportService.Column#SELL_THROUGH_FORECASTED_IMPRESSIONS">sell through reports</a> (STRs) is now available via the API. This has led to a bit of confusion as some developers who are able to run STRs through the web UI received a <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201302/ReportService.ReportError.Reason#COLUMN_VIEW_NOT_ALLOWED">ReportError.COLUMN_VIEW_NOT_ALLOWED</a> message when using these new dimensions through the API. We would like to clarify how you&#8217;ll be able to access STRs.<br /> <br /> We are in the process of updating STRs for networks that have them enabled. The current version of STRs isn&#8217;t accessible via the API. Once updated, you will be able to run STRs through the API right away as the columns already exist in the report service. Please speak with your account manager about when your network will be updated.<br /> <br /> <span class="post-author"><a href="https://plus.google.com/u/0/112590577081306037615"><img height="20" src="https://lh3.googleusercontent.com/-ZhiWbaD23FE/URUv61yO3GI/AAAAAAAAF7U/6pZfz4oD4nM/s20/photo.jpg?sz=20" style="vertical-align:middle; border:none;" width="20"></a>&nbsp;-&nbsp;<a href="https://plus.google.com/u/0/112590577081306037615" rel="author">Vincent Tsao</a>, DFP API Team</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> In the recent DFP v201302 release, we <a target="_blank" href="http://googleadsdeveloper.blogspot.com/2013/03/announcing-v201302-and-deprecation-of-3.html">announced</a> that the ability to run <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201302/ReportService.Column#SELL_THROUGH_FORECASTED_IMPRESSIONS">sell through reports</a> (STRs) is now available via the API. This has led to a bit of confusion as some developers who are able to run STRs through the web UI received a <a target="_blank" href="https://developers.google.com/doubleclick-publishers/docs/reference/v201302/ReportService.ReportError.Reason#COLUMN_VIEW_NOT_ALLOWED">ReportError.COLUMN_VIEW_NOT_ALLOWED</a> message when using these new dimensions through the API. We would like to clarify how you&#8217;ll be able to access STRs.<br /> <br /> We are in the process of updating STRs for networks that have them enabled. The current version of STRs isn&#8217;t accessible via the API. Once updated, you will be able to run STRs through the API right away as the columns already exist in the report service. Please speak with your account manager about when your network will be updated.<br /> <br /> <span class="post-author"><a href="https://plus.google.com/u/0/112590577081306037615"><img height="20" src="https://lh3.googleusercontent.com/-ZhiWbaD23FE/URUv61yO3GI/AAAAAAAAF7U/6pZfz4oD4nM/s20/photo.jpg?sz=20" style="vertical-align:middle; border:none;" width="20"></a>&nbsp;-&nbsp;<a href="https://plus.google.com/u/0/112590577081306037615" rel="author">Vincent Tsao</a>, DFP API Team</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Google Ads Developer Blog:Clarification on running sell through reports in the DFP API&url=http://ads-developers.googleblog.com/2013/04/clarification-on-running-sell-through.html&via=google'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=http://ads-developers.googleblog.com/2013/04/clarification-on-running-sell-through.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='http://ads-developers.googleblog.com/2013/04/clarification-on-running-sell-through.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='http://ads-developers.googleblog.com/search/label/dfp_api' rel='tag'> dfp_api </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/dfp_reports' rel='tag'> dfp_reports </a> </span> </div> </div> </div> <div class='post' data-id='888263797250580837' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='http://ads-developers.googleblog.com/2012/08/announcing-v201208-of-dfp-api.html' itemprop='url' title='Announcing v201208 of the DFP API '> Announcing v201208 of the DFP API </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Tuesday, August 21, 2012 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <div dir="ltr" style="text-align: left;" trbidi="on"> At Google, we enjoy hearing from you, the developer community, and working with you to ensure that progress is being made. We think the latest DFP API release reflects positively on how we work better together and we're excited to announce version v201208. This release adds new types of creatives, support for optimization, rich media, and video interaction report columns, along with new options for downloading reports. A full list of improvements from this release can be found on our <a href="https://developers.google.com/doubleclick-publishers/docs/rel_notes.html">release notes page</a>. We also want to remind you that we host virtual office hours via Google+ hangouts in order to make sure your voice is heard. Stay tuned to our <a href="https://developers.google.com/live/ads">Google Developers Live calendar</a> to catch the next one on September 18th.<br /><br /><b>Reporting improvements</b><br /><br />In v201208, we&#8217;ve added 64 new columns which enable you to pull metrics for <a href="//www.google.com/doubleclick/publishers/adapt.html">optimization</a>, <a href="//www.google.com/doubleclick/publishers/solutions/rich-media-campaign.html">rich media</a>, and <a href="//www.google.com/doubleclick/publishers/solutions/video.html">video</a>. Using these new columns, you&#8217;ll now be able to better track performance of your network including determining the interaction time of your rich media (e.g. <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201208/ReportService.Column#RICH_MEDIA_INTERACTION_TIME">RICH_MEDIA_INTERACTION_TIME</a>), locating videos which complete the most (e.g. <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201208/ReportService.Column#VIDEO_INTERACTION_COMPLETE">VIDEO_INTERACTION_COMPLETE</a>), or analyzing the revenue resulting from optimized impressions (e.g. <a href="https://devsite.googleplex.com/doubleclick-publishers/docs/reference/v201208/ReportService.Column#OPTIMIZATION_OPTIMIZED_REVENUE">OPTIMIZATION_OPTIMIZED_REVENUE</a>). In addition to these columns, we&#8217;ve added the <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201208/ReportService.Dimension#CREATIVE_TYPE">CREATIVE_TYPE</a> dimension and the ability to include <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201208/ReportService.ReportQuery#customFieldIds">custom fields</a> to help you better break down your reports.<br /><br />For applications which cannot process gzip files, you can now download reports already <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201208/ReportService.ReportDownloadOptions#useGzipCompression">deflated</a> using the new <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201208/ReportService#getReportDownloadUrlWithOptions">ReportService.getReportDownloadUrlWithOptions</a> method. If you choose to not use gzip compression, we still highly recommend that you set the HTTP header <span style="font-family: Courier New, Courier, monospace;">Accept-Encoding: gzip</span> to speed up downloads. We&#8217;ve also added the ability to <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201208/ReportService.ReportDownloadOptions#includeReportProperties">include report properties</a> (e.g. network, user, generation date, etc...) and <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201208/ReportService.ReportDownloadOptions#includeTotalsRow">remove the totals row</a>. If there are any other types of report download options you&#8217;d like to see, we&#8217;d love to hear about them on the <a href="https://groups.google.com/forum/?fromgroups#!forum/google-doubleclick-for-publishers-api">forum</a>.<br /><br /><b>Creative additions</b><br /><br />For publishers who are using the cutting edge features of DFP, we&#8217;ve added support for four new creative types: <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201208/CreativeService.AdSenseCreative">AdSenseCreative</a>, <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201208/CreativeService.AdExchangeCreative">AdExchangeCreative</a>, <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201208/CreativeService.RichMediaStudioCreative">RichMediaStudioCreative</a>, and&nbsp;<a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201208/CreativeService.AspectRatioImageCreative">AspectRatioImageCreative</a>. AdSense and Ad Exchange creatives allow you to traffic <a href="http://support.google.com/dfp_premium/bin/answer.py?hl=en&amp;answer=188523">line item level dynamic allocation ads</a> by serving <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201208/CreativeService.AdSenseCreative#codeSnippet">ad slot code snippets</a> as the creative asset. Rich media studio creatives allow you to fetch creatives created using the <a href="http://studio.doubleclick.net/">DoubleClick rich media studio</a>. Although these creatives are mostly used in a read-only manner (since they are created in the rich media studio and not DFP), some fields are mutable, such as the <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201208/CreativeService.RichMediaStudioCreative#duration">duration</a>, any <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201208/CreativeService.RichMediaStudioCreative#overrideCss">CSS overrides</a>, and <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201208/CreativeService.RichMediaStudioCreative#surveyUrl">URLs</a>. Finally, aspect ratio image creatives let you upload <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201208/CreativeService.AspectRatioImageCreative#imageAssets">multiple image assets</a> of the same aspect ratio to give you control of how images should be scaled; these creatives are mostly used in a mobile environment given the variety of screen sizes and resolution of today&#8217;s devices.<br /><br /><b>Last but not least</b><br /><br />In our ongoing effort to bring the API up to parity with the UI, we&#8217;ve also added a number of smaller features. These include additional <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201208/CompanyService.Company.Type#CONTENT_PARTNER">company partner types</a>, the ability to set the <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201208/InventoryService.AdUnit#mobilePlatform">mobile platform type</a> on ad units, a <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201208/InventoryService.AdUnitSize#fullDisplayString">friendly display string</a> for inventory sizes, the option to <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201208/LineItemCreativeAssociationService.LineItemCreativeAssociation#creativeSetId">associate line items with creative sets</a> , and support for the recently released <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201208/LineItemService.DeviceCategoryTargeting">device category targeting criteria</a>.<br /><br />Our API and outreach efforts are constantly growing, but we can't do it without you. If there is anything you'd like to see us do better, please <a href="https://groups.google.com/forum/?fromgroups#!forum/google-doubleclick-for-publishers-api">let us know</a> or introduce yourself in the next <a href="https://developers.google.com/live/ads">Google+ hangout</a>&nbsp;on September 18th.<br /><br /><a href="https://plus.google.com/100742954389084668497"><img alt="" border="0" height="20" id="BLOGGER_PHOTO_ID_5677875414712016498" src="https://lh4.googleusercontent.com/-tcqfAdWqCFc/AAAAAAAAAAI/AAAAAAABT3Y/JU6vWx64NbU/photo.jpg?sz=20" style="border: none; vertical-align: middle;" width="20" /></a>&nbsp;-&nbsp;<a href="https://plus.google.com/100742954389084668497" rel="author">Adam Rogal</a>, DFP API Team</div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <div dir="ltr" style="text-align: left;" trbidi="on"> At Google, we enjoy hearing from you, the developer community, and working with you to ensure that progress is being made. We think the latest DFP API release reflects positively on how we work better together and we're excited to announce version v201208. This release adds new types of creatives, support for optimization, rich media, and video interaction report columns, along with new options for downloading reports. A full list of improvements from this release can be found on our <a href="https://developers.google.com/doubleclick-publishers/docs/rel_notes.html">release notes page</a>. We also want to remind you that we host virtual office hours via Google+ hangouts in order to make sure your voice is heard. Stay tuned to our <a href="https://developers.google.com/live/ads">Google Developers Live calendar</a> to catch the next one on September 18th.<br /><br /><b>Reporting improvements</b><br /><br />In v201208, we&#8217;ve added 64 new columns which enable you to pull metrics for <a href="//www.google.com/doubleclick/publishers/adapt.html">optimization</a>, <a href="//www.google.com/doubleclick/publishers/solutions/rich-media-campaign.html">rich media</a>, and <a href="//www.google.com/doubleclick/publishers/solutions/video.html">video</a>. Using these new columns, you&#8217;ll now be able to better track performance of your network including determining the interaction time of your rich media (e.g. <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201208/ReportService.Column#RICH_MEDIA_INTERACTION_TIME">RICH_MEDIA_INTERACTION_TIME</a>), locating videos which complete the most (e.g. <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201208/ReportService.Column#VIDEO_INTERACTION_COMPLETE">VIDEO_INTERACTION_COMPLETE</a>), or analyzing the revenue resulting from optimized impressions (e.g. <a href="https://devsite.googleplex.com/doubleclick-publishers/docs/reference/v201208/ReportService.Column#OPTIMIZATION_OPTIMIZED_REVENUE">OPTIMIZATION_OPTIMIZED_REVENUE</a>). In addition to these columns, we&#8217;ve added the <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201208/ReportService.Dimension#CREATIVE_TYPE">CREATIVE_TYPE</a> dimension and the ability to include <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201208/ReportService.ReportQuery#customFieldIds">custom fields</a> to help you better break down your reports.<br /><br />For applications which cannot process gzip files, you can now download reports already <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201208/ReportService.ReportDownloadOptions#useGzipCompression">deflated</a> using the new <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201208/ReportService#getReportDownloadUrlWithOptions">ReportService.getReportDownloadUrlWithOptions</a> method. If you choose to not use gzip compression, we still highly recommend that you set the HTTP header <span style="font-family: Courier New, Courier, monospace;">Accept-Encoding: gzip</span> to speed up downloads. We&#8217;ve also added the ability to <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201208/ReportService.ReportDownloadOptions#includeReportProperties">include report properties</a> (e.g. network, user, generation date, etc...) and <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201208/ReportService.ReportDownloadOptions#includeTotalsRow">remove the totals row</a>. If there are any other types of report download options you&#8217;d like to see, we&#8217;d love to hear about them on the <a href="https://groups.google.com/forum/?fromgroups#!forum/google-doubleclick-for-publishers-api">forum</a>.<br /><br /><b>Creative additions</b><br /><br />For publishers who are using the cutting edge features of DFP, we&#8217;ve added support for four new creative types: <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201208/CreativeService.AdSenseCreative">AdSenseCreative</a>, <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201208/CreativeService.AdExchangeCreative">AdExchangeCreative</a>, <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201208/CreativeService.RichMediaStudioCreative">RichMediaStudioCreative</a>, and&nbsp;<a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201208/CreativeService.AspectRatioImageCreative">AspectRatioImageCreative</a>. AdSense and Ad Exchange creatives allow you to traffic <a href="http://support.google.com/dfp_premium/bin/answer.py?hl=en&amp;answer=188523">line item level dynamic allocation ads</a> by serving <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201208/CreativeService.AdSenseCreative#codeSnippet">ad slot code snippets</a> as the creative asset. Rich media studio creatives allow you to fetch creatives created using the <a href="http://studio.doubleclick.net/">DoubleClick rich media studio</a>. Although these creatives are mostly used in a read-only manner (since they are created in the rich media studio and not DFP), some fields are mutable, such as the <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201208/CreativeService.RichMediaStudioCreative#duration">duration</a>, any <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201208/CreativeService.RichMediaStudioCreative#overrideCss">CSS overrides</a>, and <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201208/CreativeService.RichMediaStudioCreative#surveyUrl">URLs</a>. Finally, aspect ratio image creatives let you upload <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201208/CreativeService.AspectRatioImageCreative#imageAssets">multiple image assets</a> of the same aspect ratio to give you control of how images should be scaled; these creatives are mostly used in a mobile environment given the variety of screen sizes and resolution of today&#8217;s devices.<br /><br /><b>Last but not least</b><br /><br />In our ongoing effort to bring the API up to parity with the UI, we&#8217;ve also added a number of smaller features. These include additional <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201208/CompanyService.Company.Type#CONTENT_PARTNER">company partner types</a>, the ability to set the <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201208/InventoryService.AdUnit#mobilePlatform">mobile platform type</a> on ad units, a <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201208/InventoryService.AdUnitSize#fullDisplayString">friendly display string</a> for inventory sizes, the option to <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201208/LineItemCreativeAssociationService.LineItemCreativeAssociation#creativeSetId">associate line items with creative sets</a> , and support for the recently released <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201208/LineItemService.DeviceCategoryTargeting">device category targeting criteria</a>.<br /><br />Our API and outreach efforts are constantly growing, but we can't do it without you. If there is anything you'd like to see us do better, please <a href="https://groups.google.com/forum/?fromgroups#!forum/google-doubleclick-for-publishers-api">let us know</a> or introduce yourself in the next <a href="https://developers.google.com/live/ads">Google+ hangout</a>&nbsp;on September 18th.<br /><br /><a href="https://plus.google.com/100742954389084668497"><img alt="" border="0" height="20" id="BLOGGER_PHOTO_ID_5677875414712016498" src="https://lh4.googleusercontent.com/-tcqfAdWqCFc/AAAAAAAAAAI/AAAAAAABT3Y/JU6vWx64NbU/photo.jpg?sz=20" style="border: none; vertical-align: middle;" width="20" /></a>&nbsp;-&nbsp;<a href="https://plus.google.com/100742954389084668497" rel="author">Adam Rogal</a>, DFP API Team</div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Google Ads Developer Blog:Announcing v201208 of the DFP API &url=http://ads-developers.googleblog.com/2012/08/announcing-v201208-of-dfp-api.html&via=google'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=http://ads-developers.googleblog.com/2012/08/announcing-v201208-of-dfp-api.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='http://ads-developers.googleblog.com/2012/08/announcing-v201208-of-dfp-api.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='http://ads-developers.googleblog.com/search/label/dfp_api' rel='tag'> dfp_api </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/dfp_creatives' rel='tag'> dfp_creatives </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/dfp_mobile' rel='tag'> dfp_mobile </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/dfp_reports' rel='tag'> dfp_reports </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/dfp_v201208' rel='tag'> dfp_v201208 </a> </span> </div> </div> </div> <div class='post' data-id='3594404898487430012' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='http://ads-developers.googleblog.com/2012/06/announcing-v201206-of-dfp-api.html' itemprop='url' title='Announcing v201206 of the DFP API'> Announcing v201206 of the DFP API </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Thursday, June 28, 2012 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <div dir="ltr" style="text-align: left;" trbidi="on"> Today we&#8217;ve released the newest version of the DFP API, v201206, which adds a significant number of reporting improvements. The new release also fully supports OAuth 2.0 as the authentication mechanism of choice and we encourage you to switch to OAuth 2.0 from ClientLogin or OAuth 1.0a. A full list of improvements from today&#8217;s release can be found on our <a href="https://developers.google.com/doubleclick-publishers/docs/rel_notes" target="_blank">release notes page</a>.<br /> <div> <br /> <b>Reporting improvements</b><br /> <br /> In a few of our recent <a href="http://googleadsdeveloper.blogspot.com/2012/06/hanging-out-for-summer.html" target="_blank">hangouts</a>, we received the feedback that while our reports were great for generating important performance metrics, the CSV files that you downloaded were not always easily machine readable. To make it easier for you to consume reports, we&#8217;ve created a new <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201206/ReportService.ExportFormat" target="_blank">ExportFormat</a>&nbsp;- <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201206/ReportService.ExportFormat#CSV_DUMP" target="_blank">CSV_DUMP</a>. Below is a list of the features of this new format:<br /> <br /> <ul> <li>Columns are now shown as Dimension.ENUM_VALUE or Column.ENUM_VALUE</li> <li>All money values are now displayed in micro format in the <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201206/NetworkService.Network#currencyCode">currency of the network</a></li> <li>All dates are now displayed as YYYY-MM-DD</li> <li>All date-times are now displayed as YYYY-MM-DDThh:mm:ss&#177;hh:mm</li> <li>There is no "pretty printing" of values (i.e. commas) and there is no total row</li> </ul> You may also notice that the v201204 <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201204/ReportService.ExportFormat#CSV" target="_blank">CSV</a> export format has been replaced by <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201206/ReportService.ExportFormat#CSV_EXCEL" target="_blank">CSV_EXCEL</a>, which can be imported into Excel-like products.</div> <div> <br /> As an important note to some of our developers, after upgrading to v201206, you will most likely need to update your code; many column names have changed to reflect a more accurate description of what metrics they are indeed pulling. For example, the column <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201204/ReportService.ReportQuery#TOTAL_IMPRESSIONS">TOTAL_IMPRESSIONS</a> has been changed to <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201206/ReportService.Column#TOTAL_INVENTORY_LEVEL_IMPRESSIONS">TOTAL_INVENTORY_LEVEL_IMPRESSIONS</a> because the v201204 column could only be used with dimensions like <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201206/ReportService.Dimension#AD_UNIT_NAME" target="_blank">AD_UNIT_NAME</a> on the inventory level, i.e. it could not be used with line items, orders, companies or creatives. Alternatively, <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201206/ReportService.Column#TOTAL_LINE_ITEM_LEVEL_IMPRESSIONS">TOTAL_LINE_ITEM_LEVEL_IMPRESSIONS</a> in v201206 should now be used with dimensions like <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201206/ReportService.Dimension#LINE_ITEM_NAME" target="_blank">LINE_ITEM_NAME</a>&nbsp;and <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201206/ReportService.Dimension#ORDER_NAME" target="_blank">ORDER_NAME</a>&nbsp;for instances where you need to include dynamic allocation impressions from AdSense or Ad Exchange line items. To determine how each column should be updated, visit the old column&#8217;s <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201204/ReportService.Column#TOTAL_IMPRESSIONS" target="_blank">reference page</a> and look for the phrase that begins with &#8220;Replaced with &#8230;&#8221;, e.g. <br /> <br /> <span style="font-family: 'Courier New', Courier, monospace;">&nbsp;&nbsp;&nbsp;&nbsp;Replaced with TOTAL_INVENTORY_LEVEL_IMPRESSIONS beginning in v201206.</span></div> <div> <br /></div> <div> Lastly, we&#8217;ve improved formatting for inventory reports that don&#8217;t use top level <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201206/ReportService.ReportQuery#adUnitView" target="_blank">ad unit views</a>. Most importantly, the duplicate columns clicks and impressions <a href="https://groups.google.com/forum/?fromgroups#!searchin/google-doubleclick-for-publishers-api/duplicate/google-doubleclick-for-publishers-api/gIe7eawPx0A/BnwXDdUDjZMJ">issue for hierarchical views </a>has been fixed and the <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201206/ReportService.ReportQuery.AdUnitView#FLAT" target="_blank">flat view</a>&nbsp;report will now match how the report is downloaded from the UI.<br /> <br /> <b>OAuth 2.0</b><br /> <br /> If you are an eagle-eyed developer, you may have noticed that we recently added OAuth 2.0 information to our <a href="https://developers.google.com/doubleclick-publishers/docs/authentication">authentication page</a>. OAuth 2.0 is now fully supported in the DFP API and we are progressively adding support in our client libraries; <a href="http://code.google.com/p/google-api-ads-java/source/browse/examples/dfp_axis/src/main/java/dfp/axis/other/OAuth2Example.java">Java</a>, <a href="https://code.google.com/p/google-api-ads-python/source/browse/trunk/examples/adspygoogle/dfp/v201204/misc/use_oauth2.py">Python</a>, <a href="https://code.google.com/p/google-api-dfp-dotnet/">.Net</a> , and <a href="http://code.google.com/p/google-api-ads-ruby/source/browse/dfp_api/examples/v201204/common/oauth2_handling.rb">Ruby</a> currently have full support, while <a href="http://code.google.com/p/google-api-dfp-php/">PHP</a> will very soon. In fact, our <a href="http://dfp-playground.appspot.com/">DFP test playground</a> already <a href="//goo.gl/DaIAx">uses</a> OAuth 2.0 with the <a href="http://code.google.com/p/google-api-ads-java/source/browse/modules/dfp_appengine/pom.xml">Java library</a>. Please stay tuned to the project sites or the <a href="https://groups.google.com/forum/?fromgroups#!forum/google-doubleclick-for-publishers-api">forum</a> for announcements regarding future support.<br /> <br /> Our next hangout is <a href="//www.google.com/calendar/event?eid=bmpqM25zYnY3aXRqdXV1bm5lOXJmcmg3NGcgN2JycWc2MmkwbWJpbnUyMjZpYmxwY25tb29AZw&amp;ctz=Etc/GMT" target="_blank">July 18th</a> and we&#8217;ll be taking your report questions or anything else you might have on your mind. As always, let us know if you have any questions on our <a href="https://groups.google.com/forum/?fromgroups#!forum/google-doubleclick-for-publishers-api">forum</a>.</div> <br /> <div style="font-weight: normal; text-align: -webkit-auto;"> <a href="https://plus.google.com/100742954389084668497" style="text-align: left;"><img alt="" border="0" height="20" id="BLOGGER_PHOTO_ID_5677875414712016498" src="https://lh4.googleusercontent.com/-tcqfAdWqCFc/AAAAAAAAAAI/AAAAAAABT3Y/JU6vWx64NbU/photo.jpg?sz=20" style="border: none; vertical-align: middle;" width="20" /></a><span style="text-align: left;">&nbsp;-&nbsp;</span><a href="https://plus.google.com/100742954389084668497" rel="author" style="text-align: left;">Adam Rogal</a><span style="text-align: left;">, DFP API Team</span></div> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <div dir="ltr" style="text-align: left;" trbidi="on"> Today we&#8217;ve released the newest version of the DFP API, v201206, which adds a significant number of reporting improvements. The new release also fully supports OAuth 2.0 as the authentication mechanism of choice and we encourage you to switch to OAuth 2.0 from ClientLogin or OAuth 1.0a. A full list of improvements from today&#8217;s release can be found on our <a href="https://developers.google.com/doubleclick-publishers/docs/rel_notes" target="_blank">release notes page</a>.<br /> <div> <br /> <b>Reporting improvements</b><br /> <br /> In a few of our recent <a href="http://googleadsdeveloper.blogspot.com/2012/06/hanging-out-for-summer.html" target="_blank">hangouts</a>, we received the feedback that while our reports were great for generating important performance metrics, the CSV files that you downloaded were not always easily machine readable. To make it easier for you to consume reports, we&#8217;ve created a new <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201206/ReportService.ExportFormat" target="_blank">ExportFormat</a>&nbsp;- <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201206/ReportService.ExportFormat#CSV_DUMP" target="_blank">CSV_DUMP</a>. Below is a list of the features of this new format:<br /> <br /> <ul> <li>Columns are now shown as Dimension.ENUM_VALUE or Column.ENUM_VALUE</li> <li>All money values are now displayed in micro format in the <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201206/NetworkService.Network#currencyCode">currency of the network</a></li> <li>All dates are now displayed as YYYY-MM-DD</li> <li>All date-times are now displayed as YYYY-MM-DDThh:mm:ss&#177;hh:mm</li> <li>There is no "pretty printing" of values (i.e. commas) and there is no total row</li> </ul> You may also notice that the v201204 <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201204/ReportService.ExportFormat#CSV" target="_blank">CSV</a> export format has been replaced by <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201206/ReportService.ExportFormat#CSV_EXCEL" target="_blank">CSV_EXCEL</a>, which can be imported into Excel-like products.</div> <div> <br /> As an important note to some of our developers, after upgrading to v201206, you will most likely need to update your code; many column names have changed to reflect a more accurate description of what metrics they are indeed pulling. For example, the column <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201204/ReportService.ReportQuery#TOTAL_IMPRESSIONS">TOTAL_IMPRESSIONS</a> has been changed to <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201206/ReportService.Column#TOTAL_INVENTORY_LEVEL_IMPRESSIONS">TOTAL_INVENTORY_LEVEL_IMPRESSIONS</a> because the v201204 column could only be used with dimensions like <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201206/ReportService.Dimension#AD_UNIT_NAME" target="_blank">AD_UNIT_NAME</a> on the inventory level, i.e. it could not be used with line items, orders, companies or creatives. Alternatively, <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201206/ReportService.Column#TOTAL_LINE_ITEM_LEVEL_IMPRESSIONS">TOTAL_LINE_ITEM_LEVEL_IMPRESSIONS</a> in v201206 should now be used with dimensions like <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201206/ReportService.Dimension#LINE_ITEM_NAME" target="_blank">LINE_ITEM_NAME</a>&nbsp;and <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201206/ReportService.Dimension#ORDER_NAME" target="_blank">ORDER_NAME</a>&nbsp;for instances where you need to include dynamic allocation impressions from AdSense or Ad Exchange line items. To determine how each column should be updated, visit the old column&#8217;s <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201204/ReportService.Column#TOTAL_IMPRESSIONS" target="_blank">reference page</a> and look for the phrase that begins with &#8220;Replaced with &#8230;&#8221;, e.g. <br /> <br /> <span style="font-family: 'Courier New', Courier, monospace;">&nbsp;&nbsp;&nbsp;&nbsp;Replaced with TOTAL_INVENTORY_LEVEL_IMPRESSIONS beginning in v201206.</span></div> <div> <br /></div> <div> Lastly, we&#8217;ve improved formatting for inventory reports that don&#8217;t use top level <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201206/ReportService.ReportQuery#adUnitView" target="_blank">ad unit views</a>. Most importantly, the duplicate columns clicks and impressions <a href="https://groups.google.com/forum/?fromgroups#!searchin/google-doubleclick-for-publishers-api/duplicate/google-doubleclick-for-publishers-api/gIe7eawPx0A/BnwXDdUDjZMJ">issue for hierarchical views </a>has been fixed and the <a href="https://developers.google.com/doubleclick-publishers/docs/reference/v201206/ReportService.ReportQuery.AdUnitView#FLAT" target="_blank">flat view</a>&nbsp;report will now match how the report is downloaded from the UI.<br /> <br /> <b>OAuth 2.0</b><br /> <br /> If you are an eagle-eyed developer, you may have noticed that we recently added OAuth 2.0 information to our <a href="https://developers.google.com/doubleclick-publishers/docs/authentication">authentication page</a>. OAuth 2.0 is now fully supported in the DFP API and we are progressively adding support in our client libraries; <a href="http://code.google.com/p/google-api-ads-java/source/browse/examples/dfp_axis/src/main/java/dfp/axis/other/OAuth2Example.java">Java</a>, <a href="https://code.google.com/p/google-api-ads-python/source/browse/trunk/examples/adspygoogle/dfp/v201204/misc/use_oauth2.py">Python</a>, <a href="https://code.google.com/p/google-api-dfp-dotnet/">.Net</a> , and <a href="http://code.google.com/p/google-api-ads-ruby/source/browse/dfp_api/examples/v201204/common/oauth2_handling.rb">Ruby</a> currently have full support, while <a href="http://code.google.com/p/google-api-dfp-php/">PHP</a> will very soon. In fact, our <a href="http://dfp-playground.appspot.com/">DFP test playground</a> already <a href="//goo.gl/DaIAx">uses</a> OAuth 2.0 with the <a href="http://code.google.com/p/google-api-ads-java/source/browse/modules/dfp_appengine/pom.xml">Java library</a>. Please stay tuned to the project sites or the <a href="https://groups.google.com/forum/?fromgroups#!forum/google-doubleclick-for-publishers-api">forum</a> for announcements regarding future support.<br /> <br /> Our next hangout is <a href="//www.google.com/calendar/event?eid=bmpqM25zYnY3aXRqdXV1bm5lOXJmcmg3NGcgN2JycWc2MmkwbWJpbnUyMjZpYmxwY25tb29AZw&amp;ctz=Etc/GMT" target="_blank">July 18th</a> and we&#8217;ll be taking your report questions or anything else you might have on your mind. As always, let us know if you have any questions on our <a href="https://groups.google.com/forum/?fromgroups#!forum/google-doubleclick-for-publishers-api">forum</a>.</div> <br /> <div style="font-weight: normal; text-align: -webkit-auto;"> <a href="https://plus.google.com/100742954389084668497" style="text-align: left;"><img alt="" border="0" height="20" id="BLOGGER_PHOTO_ID_5677875414712016498" src="https://lh4.googleusercontent.com/-tcqfAdWqCFc/AAAAAAAAAAI/AAAAAAABT3Y/JU6vWx64NbU/photo.jpg?sz=20" style="border: none; vertical-align: middle;" width="20" /></a><span style="text-align: left;">&nbsp;-&nbsp;</span><a href="https://plus.google.com/100742954389084668497" rel="author" style="text-align: left;">Adam Rogal</a><span style="text-align: left;">, DFP API Team</span></div> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Google Ads Developer Blog:Announcing v201206 of the DFP API&url=http://ads-developers.googleblog.com/2012/06/announcing-v201206-of-dfp-api.html&via=google'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=http://ads-developers.googleblog.com/2012/06/announcing-v201206-of-dfp-api.html'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='http://ads-developers.googleblog.com/2012/06/announcing-v201206-of-dfp-api.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='http://ads-developers.googleblog.com/search/label/dfp_api' rel='tag'> dfp_api </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/dfp_reports' rel='tag'> dfp_reports </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/dfp_v201206' rel='tag'> dfp_v201206 </a> , <a class='label' href='http://ads-developers.googleblog.com/search/label/oauth' rel='tag'> oauth </a> </span> </div> </div> </div> <div class='blog-pager' id='blog-pager'> <a class='home-link' href='http://ads-developers.googleblog.com/'> <i class='material-icons'> &#59530; </i> </a> <i class='material-icons disabled'> &#58820; </i> <span id='blog-pager-older-link'> <a class='blog-pager-older-link' href='http://ads-developers.googleblog.com/search/label/dfp_reports?updated-max=2012-06-28T12:15:00-07:00&max-results=20&start=20&by-date=false' id='Blog1_blog-pager-older-link' title='Older Posts'> <i class='material-icons'> &#58824; </i> </a> </span> </div> <div class='clear'></div> </div></div> </div> </div> <div class='col-right'> <div class='section' id='sidebar-top'><div class='widget HTML' data-version='1' id='HTML8'> <div class='widget-content'> <div class='searchBox'> <input type='text' title='Search This Blog' placeholder='Search blog ...' /> </div> </div> <div class='clear'></div> </div></div> <div id='aside'> <div class='section' id='sidebar'><div class='widget Label' data-version='1' id='Label1'> <div class='tab'> <img class='sidebar-icon' src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAYpJREFUeNrs2aFuwzAQBmAvKRkMKRjZA4QMDJaWFgyMjuzFRg37DIUlA3uFkoGQSaWzJU+tpri5O9+l/zSfdFJlpe59yTmyVedq1PjfcZMZ70NuQnaF8w8htyE/rABtpviXkLcK88c5HhLkMBfgVan43zfFBNGMjHVGT/s55KP2pAvidbGHd+nzKt1RKSLG3rKF1iPFv6UWiPke8i7kEqGdGsI1O+LYVdqJAjgirwkKYD0ytkJBUNbAMvX8V3q9PhUsYvU1sWD8SO/sQvx2ahxOiNoJCSBCoAHYCEQAC4EKICOQASQEOmAS8RcAFxFN5hiIiugpgC3wk9hQAHH/70EBHXUN7IER5EWMiBgo2+nzOKQv9SCAeEM/OQAkhE/ncccFICB87qzQMia5FsJfOui0zMnmRvipU1ormHQuxGTxUsAcCFLxJQBLBLn4UoAFglW8BkATwS5eC6CBEBWvCShBiIvXBkgQRcVbADiI4uKtABSESvGWgB9EzHt3+tNwyO0qa9SoIYtvAQYAqDJhaWWeMecAAAAASUVORK5CYII='/> <h2> Labels </h2> <i class='material-icons arrow'> &#58821; </i> </div> <div class='widget-content list-label-widget-content'> <ul> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/account_management'> account_management </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_clicks'> ad_clicks </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_customizers'> ad_customizers </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_exchange'> ad_exchange </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_exchange_buyer'> ad_exchange_buyer </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_exchange_optimization-series'> ad_exchange_optimization-series </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_exchange_rest'> ad_exchange_rest </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_exchange_rtb'> ad_exchange_rtb </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_exchange_seller'> ad_exchange_seller </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_exchange_soap'> ad_exchange_soap </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_extensions'> ad_extensions </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_inspector'> ad_inspector </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager'> ad_manager </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api'> ad_manager_api </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v201805'> ad_manager_api_v201805 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v201808'> ad_manager_api_v201808 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v201811'> ad_manager_api_v201811 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v201902'> ad_manager_api_v201902 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v201905'> ad_manager_api_v201905 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v201908'> ad_manager_api_v201908 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v201911'> ad_manager_api_v201911 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v202002'> ad_manager_api_v202002 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v202005'> ad_manager_api_v202005 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v202008'> ad_manager_api_v202008 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v202011'> ad_manager_api_v202011 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v202102'> ad_manager_api_v202102 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v202105'> ad_manager_api_v202105 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v202108'> ad_manager_api_v202108 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v202111'> ad_manager_api_v202111 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v202202'> ad_manager_api_v202202 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v202205'> ad_manager_api_v202205 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v202208'> ad_manager_api_v202208 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v202211'> ad_manager_api_v202211 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v202302'> ad_manager_api_v202302 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v202305'> ad_manager_api_v202305 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v202308'> ad_manager_api_v202308 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v202311'> ad_manager_api_v202311 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v202402'> ad_manager_api_v202402 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v202405'> ad_manager_api_v202405 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v202408'> ad_manager_api_v202408 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_manager_api_v202411'> ad_manager_api_v202411 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_param'> ad_param </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ad_speed'> ad_speed </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adexchangebuyer'> adexchangebuyer </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/AdGroup'> AdGroup </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/AdGroupAd'> AdGroupAd </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/admanager_api'> admanager_api </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/admob'> admob </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/admob_api'> admob_api </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/admob_api_v1'> admob_api_v1 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/admob_mediation'> admob_mediation </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/admob_sdk'> admob_sdk </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/admob_v4.3.1'> admob_v4.3.1 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/admob_v5.0.5'> admob_v5.0.5 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/admob_v6.0.1'> admob_v6.0.1 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ads'> ads </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adsense'> adsense </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adsense_api'> adsense_api </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adsense_host_api'> adsense_host_api </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adsense_host_api_v3'> adsense_host_api_v3 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adsense_management_api'> adsense_management_api </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adsense_management_api_v1'> adsense_management_api_v1 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adsense_management_api_v1.1'> adsense_management_api_v1.1 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adsense_management_api_v1.2'> adsense_management_api_v1.2 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adsense_management_api_v1.3'> adsense_management_api_v1.3 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adsense_management_api_v1.4'> adsense_management_api_v1.4 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/advanced_apis'> advanced_apis </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwhirl'> adwhirl </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwhirl_v3.1.1'> adwhirl_v3.1.1 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords'> adwords </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/AdWords%20Scripts'> AdWords Scripts </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_AdGroupCriterionService'> adwords_AdGroupCriterionService </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_api'> adwords_api </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_api_v201302'> adwords_api_v201302 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_api_v201306'> adwords_api_v201306 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_api_v201309'> adwords_api_v201309 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_api_v201402'> adwords_api_v201402 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_api_v201406'> adwords_api_v201406 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_api_v201409'> adwords_api_v201409 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_api_v201502'> adwords_api_v201502 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_api_v201506'> adwords_api_v201506 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_api_v201509'> adwords_api_v201509 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_api_v201601'> adwords_api_v201601 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_api_v201603'> adwords_api_v201603 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_api_v201605'> adwords_api_v201605 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_api_v201607'> adwords_api_v201607 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_api_v201609'> adwords_api_v201609 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_api_v201702'> adwords_api_v201702 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_api_v201705'> adwords_api_v201705 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_api_v201708'> adwords_api_v201708 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_api_v201710'> adwords_api_v201710 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_api_v201802'> adwords_api_v201802 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_api_v201806'> adwords_api_v201806 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_api_v201809'> adwords_api_v201809 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_api_workshops'> adwords_api_workshops </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_BatchJobService'> adwords_BatchJobService </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_CampaignService'> adwords_CampaignService </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_CreateAccountService'> adwords_CreateAccountService </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_for_video'> adwords_for_video </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_ManagedCustomerService'> adwords_ManagedCustomerService </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_MutateJobService'> adwords_MutateJobService </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_ReportDefinitionService'> adwords_ReportDefinitionService </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_scripts'> adwords_scripts </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_v201109'> adwords_v201109 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_v201206'> adwords_v201206 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_v201209'> adwords_v201209 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_v201302'> adwords_v201302 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_v201306'> adwords_v201306 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_v201309'> adwords_v201309 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_v201601'> adwords_v201601 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_v201605'> adwords_v201605 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_v201607'> adwords_v201607 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_v201609'> adwords_v201609 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_v201702'> adwords_v201702 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_v201802'> adwords_v201802 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_v201806'> adwords_v201806 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/adwords_v201809'> adwords_v201809 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/alerting'> alerting </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/amp'> amp </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/analytics'> analytics </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/analyticsapi'> analyticsapi </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/android'> android </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/android_layout'> android_layout </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/animation'> animation </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/announcement'> announcement </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/annual%20developer%20survey'> annual developer survey </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/api'> api </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/app_engine'> app_engine </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/asset_group'> asset_group </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/asset_group_listing_group_filter'> asset_group_listing_group_filter </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/asset_group_signal'> asset_group_signal </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/assets'> assets </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/attribution_reporting_api'> attribution_reporting_api </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/audiences'> audiences </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/authentication'> authentication </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/authorization'> authorization </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/authorized_buyer'> authorized_buyer </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/authorized_buyers'> authorized_buyers </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/aw_reporting'> aw_reporting </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/awql'> awql </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/batch_processing'> batch_processing </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/beacon_api'> beacon_api </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/best_practices'> best_practices </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/beta'> beta </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/bid_manager_api'> bid_manager_api </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/bid_modifiers'> bid_modifiers </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/bidding'> bidding </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/billing'> billing </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/brand%20guidelines'> brand guidelines </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/brand_guidelines'> brand_guidelines </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/budget_order_service'> budget_order_service </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/budgets'> budgets </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/builders'> builders </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/bulk_upload'> bulk_upload </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/c%23'> c# </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/caf_sdk'> caf_sdk </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/call_extensions'> call_extensions </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/call_metrics'> call_metrics </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/call_only'> call_only </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/call_tracking'> call_tracking </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/call-only'> call-only </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/callout_extensions'> callout_extensions </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/campaign'> campaign </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/CampaignCriterion'> CampaignCriterion </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/case_study'> case_study </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/cast'> cast </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/certificates'> certificates </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/certification'> certification </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/chart_tools'> chart_tools </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/chrome'> chrome </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/chromecast'> chromecast </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/click'> click </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/click_tracking'> click_tracking </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/click_type'> click_type </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/click-to-download'> click-to-download </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/clicks'> clicks </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/client_libraries'> client_libraries </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/client_library'> client_library </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/cm360'> cm360 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/code_examples'> code_examples </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/common_questions'> common_questions </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/conference'> conference </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/content'> content </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/content_api'> content_api </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/conversion'> conversion </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/conversions'> conversions </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ConversionTrackerService'> ConversionTrackerService </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/converted_clicks'> converted_clicks </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/creative_platforms'> creative_platforms </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/creatives'> creatives </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/custom_fields'> custom_fields </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/customer_match'> customer_match </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/DAI'> DAI </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dart'> dart </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dbm_api'> dbm_api </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/debugging'> debugging </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/decorators'> decorators </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/deprecation'> deprecation </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/developer'> developer </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfa_ad_service'> dfa_ad_service </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfa_api'> dfa_api </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfa_api_v118'> dfa_api_v118 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfa_creative_service'> dfa_creative_service </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfa_reporting_api'> dfa_reporting_api </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfa_site_service'> dfa_site_service </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfa_v1.16'> dfa_v1.16 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfa_v1.17'> dfa_v1.17 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfa_v1.18'> dfa_v1.18 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfa_v1.19'> dfa_v1.19 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfa_v1.20'> dfa_v1.20 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfp'> dfp </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfp_api'> dfp_api </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfp_appengine'> dfp_appengine </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfp_creatives'> dfp_creatives </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfp_inventory'> dfp_inventory </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfp_mobile'> dfp_mobile </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfp_pql'> dfp_pql </a> </li> <li> <span dir='ltr'> dfp_reports </span> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfp_sales'> dfp_sales </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfp_teams'> dfp_teams </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfp_v201111'> dfp_v201111 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfp_v201201'> dfp_v201201 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfp_v201203'> dfp_v201203 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfp_v201204'> dfp_v201204 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfp_v201206'> dfp_v201206 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfp_v201208'> dfp_v201208 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfp_v201211'> dfp_v201211 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfp_v201302'> dfp_v201302 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfp_v201308'> dfp_v201308 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfp_v201608'> dfp_v201608 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dfp_v201711'> dfp_v201711 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/display'> display </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/display_network'> display_network </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/display_select'> display_select </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/display_smart_campaign'> display_smart_campaign </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/docs'> docs </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dotnet'> dotnet </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/doubleclick'> doubleclick </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/DoubleClick_Rich_Media'> DoubleClick_Rich_Media </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/doubleclick_studio'> doubleclick_studio </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/drafts'> drafts </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dsa'> dsa </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dv360'> dv360 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dv360_api'> dv360_api </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/dynamic_creative'> dynamic_creative </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/enhanced_campaigns'> enhanced_campaigns </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/entity_read_files'> entity_read_files </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/erf'> erf </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/error%20handling'> error handling </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/eta'> eta </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/examples'> examples </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/excluded_placement_lists'> excluded_placement_lists </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/exoplayer'> exoplayer </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/expanded_text_ads'> expanded_text_ads </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/experiment'> experiment </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/experiments'> experiments </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/faq'> faq </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/feedback'> feedback </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/feeds'> feeds </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/firebase'> firebase </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/flash'> flash </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/flash_sdk'> flash_sdk </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/floc'> floc </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/flutter'> flutter </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/forecast_service'> forecast_service </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/games'> games </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/gaql'> gaql </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/gclid'> gclid </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/gdc'> gdc </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/gdl'> gdl </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/geo_targets'> geo_targets </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/geotargeting'> geotargeting </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/gmail_ads'> gmail_ads </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/gmail_image_ads'> gmail_image_ads </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/gmail_multi_product_ads'> gmail_multi_product_ads </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/gmail_single_promotion_ads'> gmail_single_promotion_ads </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/GMF'> GMF </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/gmp'> gmp </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/golang'> golang </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_ads'> google_ads </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_ads_api'> google_ads_api </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_ads_api_migration_workshop'> google_ads_api_migration_workshop </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_ads_api_v0'> google_ads_api_v0 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_ads_api_v0_1'> google_ads_api_v0_1 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_ads_api_v0_3'> google_ads_api_v0_3 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_ads_api_v0_4'> google_ads_api_v0_4 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_ads_api_v0_5'> google_ads_api_v0_5 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_ads_api_v0_6'> google_ads_api_v0_6 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_ads_api_v0_7'> google_ads_api_v0_7 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_ads_api_v1_0'> google_ads_api_v1_0 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_ads_api_v1_1'> google_ads_api_v1_1 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_ads_api_v1_2'> google_ads_api_v1_2 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_ads_api_v1_3'> google_ads_api_v1_3 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_ads_api_v2_1'> google_ads_api_v2_1 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_ads_api_v3_0'> google_ads_api_v3_0 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_ads_api_v3_1'> google_ads_api_v3_1 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_ads_api_v4'> google_ads_api_v4 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_ads_api_v5'> google_ads_api_v5 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_ads_api_v6'> google_ads_api_v6 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_ads_scripts'> google_ads_scripts </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_ads_solutions'> google_ads_solutions </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_apis'> google_apis </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_apps_script'> google_apps_script </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_drive'> google_drive </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_play_services'> google_play_services </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/google_plus'> google_plus </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/gpt'> gpt </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/guide'> guide </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/guides'> guides </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/hangout'> hangout </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/hotel_ads'> hotel_ads </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/hotel_campaigns'> hotel_campaigns </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/html5'> html5 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/html5_ads'> html5_ads </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/https'> https </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/i18n'> i18n </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ids'> ids </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ima_android'> ima_android </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ima_flash'> ima_flash </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ima_html5'> ima_html5 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ima_ios'> ima_ios </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ima_roku'> ima_roku </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ima_sdk'> ima_sdk </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/image'> image </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/image_ads'> image_ads </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/implementation'> implementation </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/impression_share'> impression_share </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/interstitial'> interstitial </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/interview'> interview </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/io13'> io13 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/iOS'> iOS </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/iOS9'> iOS9 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/java_app_engine'> java_app_engine </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/java_dart_api'> java_dart_api </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/jdbc'> jdbc </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/keyword_optimizer'> keyword_optimizer </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/keywords'> keywords </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/kotlin'> kotlin </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/labels'> labels </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/limits'> limits </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/line_item'> line_item </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/linq'> linq </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/listing_groups'> listing_groups </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/location_extensions'> location_extensions </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/location_feeds'> location_feeds </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/LocationExtensionOperand'> LocationExtensionOperand </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/LocationGroups'> LocationGroups </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/logging'> logging </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/manager_accounts'> manager_accounts </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/maps_api'> maps_api </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/marketplace'> marketplace </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/maximize'> maximize </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/mcc'> mcc </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/media'> media </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/media_bundle'> media_bundle </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/mediation_test_suite'> mediation_test_suite </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/merchant_api'> merchant_api </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/migration'> migration </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/mobile'> mobile </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/mobile_ads'> mobile_ads </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/mobile_ads_garage'> mobile_ads_garage </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/mobile_ads_sdk'> mobile_ads_sdk </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/mobile_sites'> mobile_sites </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/mobile_speed'> mobile_speed </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/mobile_targeting'> mobile_targeting </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/mobile_ux'> mobile_ux </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/monitoring'> monitoring </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/native'> native </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/native_ads_express'> native_ads_express </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/new_features'> new_features </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/oath2'> oath2 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/oauth'> oauth </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/oauth2'> oauth2 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/offline_conversions'> offline_conversions </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/OfflineConversionFeedService'> OfflineConversionFeedService </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/open_source'> open_source </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/openrtb'> openrtb </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/optimization'> optimization </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/Performance%20Max'> Performance Max </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/performance_max'> performance_max </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/performance_max_api_workshop'> performance_max_api_workshop </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/php'> php </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/PLA'> PLA </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/placements'> placements </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/PMax'> PMax </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/policy'> policy </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/policy_violation'> policy_violation </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/PQL'> PQL </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/price_extension'> price_extension </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/privacy'> privacy </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/privacy_sandbox'> privacy_sandbox </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/product_listing_ads'> product_listing_ads </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/proguard'> proguard </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/promotion_line'> promotion_line </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/publisher_ads_audits'> publisher_ads_audits </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/python'> python </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/qa'> qa </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/quality_score'> quality_score </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/query_builder_blog_series'> query_builder_blog_series </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/query_language'> query_language </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/quota'> quota </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/rate_limiter'> rate_limiter </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/rate_sheet'> rate_sheet </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/RateExceededError'> RateExceededError </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/realtime_bidding'> realtime_bidding </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/realtime_bidding_api'> realtime_bidding_api </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/realtime_bidding_protocol'> realtime_bidding_protocol </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/realtimebidding'> realtimebidding </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/recommendations'> recommendations </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/referer'> referer </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/release'> release </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/remarketing'> remarketing </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/reporting'> reporting </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/reports'> reports </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/responsive_ads'> responsive_ads </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/rewarded_video'> rewarded_video </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/rmf'> rmf </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ruby'> ruby </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/sa360'> sa360 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/sandbox'> sandbox </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/scripts'> scripts </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/sdf'> sdf </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/sdkless'> sdkless </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/search'> search </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/search%20audience'> search audience </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/search%20terms'> search terms </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/search_audience'> search_audience </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/search_network'> search_network </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/search_theme'> search_theme </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/selector'> selector </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/sendbeacon'> sendbeacon </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/service_accounts'> service_accounts </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/shared_negative_keywords'> shared_negative_keywords </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/shopping'> shopping </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/simulations'> simulations </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/sitelinks'> sitelinks </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/smart'> smart </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/snds'> snds </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/spend'> spend </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ssl'> ssl </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/StepInsideAdWords'> StepInsideAdWords </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/success_stories'> success_stories </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/suggested_ad_units'> suggested_ad_units </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/sunset'> sunset </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/survey'> survey </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/swift'> swift </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/swiftui'> swiftui </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/target'> target </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/target_cpa'> target_cpa </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/targeting'> targeting </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/template_ads'> template_ads </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/terms'> terms </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/test_accounts'> test_accounts </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/test_network'> test_network </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/testing'> testing </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/text_ads'> text_ads </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/text_asset_automation'> text_asset_automation </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/tools'> tools </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/trials'> trials </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/turtledove'> turtledove </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/ui'> ui </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/unity'> unity </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/update'> update </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/updates'> updates </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/upgrade'> upgrade </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/upgraded_urls'> upgraded_urls </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/v201509'> v201509 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/vast3'> vast3 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/vcpm'> vcpm </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/video'> video </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/viewable-cpm'> viewable-cpm </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/webinar'> webinar </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/workshop'> workshop </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/workshops'> workshops </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/wp8'> wp8 </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/xml'> xml </a> </li> <li> <a dir='ltr' href='http://ads-developers.googleblog.com/search/label/youtube'> youtube </a> </li> </ul> <div class='clear'></div> </div> </div><div class='widget BlogArchive' data-version='1' id='BlogArchive1'> <div class='tab'> <i class='material-icons icon'> &#58055; </i> <h2> Archive </h2> <i class='material-icons arrow'> &#58821; </i> </div> <div class='widget-content'> <div id='ArchiveList'> <div id='BlogArchive1_ArchiveList'> <ul class='hierarchy'> <li class='archivedate expanded'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'> &#58821; </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy toggle-open'> <i class='material-icons'> &#58823; </i> &#160; </span> </a> <a class='post-count-link' href='http://ads-developers.googleblog.com/2025/'> 2025 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate expanded'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2025/02/'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2025/01/'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'> &#58821; </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'> &#58821; </i> &#160; </span> </a> <a class='post-count-link' href='http://ads-developers.googleblog.com/2024/'> 2024 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2024/12/'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2024/11/'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2024/10/'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2024/09/'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2024/08/'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2024/07/'> Jul </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2024/06/'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2024/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2024/04/'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2024/03/'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2024/02/'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2024/01/'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'> &#58821; </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'> &#58821; </i> &#160; </span> </a> <a class='post-count-link' href='http://ads-developers.googleblog.com/2023/'> 2023 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2023/12/'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2023/11/'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2023/10/'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2023/09/'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2023/08/'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2023/07/'> Jul </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2023/06/'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2023/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2023/04/'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2023/03/'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2023/02/'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2023/01/'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'> &#58821; </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'> &#58821; </i> &#160; </span> </a> <a class='post-count-link' href='http://ads-developers.googleblog.com/2022/'> 2022 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2022/12/'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2022/11/'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2022/10/'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2022/09/'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2022/08/'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2022/07/'> Jul </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2022/06/'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2022/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2022/04/'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2022/03/'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2022/02/'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2022/01/'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'> &#58821; </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'> &#58821; </i> &#160; </span> </a> <a class='post-count-link' href='http://ads-developers.googleblog.com/2021/'> 2021 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2021/12/'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2021/11/'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2021/10/'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2021/09/'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2021/08/'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2021/07/'> Jul </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2021/06/'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2021/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2021/04/'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2021/03/'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2021/02/'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2021/01/'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'> &#58821; </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'> &#58821; </i> &#160; </span> </a> <a class='post-count-link' href='http://ads-developers.googleblog.com/2020/'> 2020 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2020/12/'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2020/11/'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2020/10/'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2020/09/'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2020/08/'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2020/07/'> Jul </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2020/06/'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2020/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2020/04/'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2020/03/'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2020/02/'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2020/01/'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'> &#58821; </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'> &#58821; </i> &#160; </span> </a> <a class='post-count-link' href='http://ads-developers.googleblog.com/2019/'> 2019 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2019/12/'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2019/11/'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2019/10/'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2019/09/'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2019/08/'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2019/07/'> Jul </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2019/06/'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2019/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2019/04/'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2019/03/'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2019/02/'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2019/01/'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'> &#58821; </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'> &#58821; </i> &#160; </span> </a> <a class='post-count-link' href='http://ads-developers.googleblog.com/2018/'> 2018 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2018/12/'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2018/11/'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2018/10/'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2018/09/'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2018/08/'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2018/07/'> Jul </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2018/06/'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2018/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2018/04/'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2018/03/'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2018/02/'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2018/01/'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'> &#58821; </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'> &#58821; </i> &#160; </span> </a> <a class='post-count-link' href='http://ads-developers.googleblog.com/2017/'> 2017 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2017/12/'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2017/11/'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2017/10/'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2017/09/'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2017/08/'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2017/07/'> Jul </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2017/06/'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2017/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2017/04/'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2017/03/'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2017/02/'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2017/01/'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'> &#58821; </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'> &#58821; </i> &#160; </span> </a> <a class='post-count-link' href='http://ads-developers.googleblog.com/2016/'> 2016 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2016/12/'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2016/11/'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2016/10/'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2016/09/'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2016/08/'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2016/07/'> Jul </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2016/06/'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2016/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2016/04/'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2016/03/'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2016/02/'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2016/01/'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'> &#58821; </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'> &#58821; </i> &#160; </span> </a> <a class='post-count-link' href='http://ads-developers.googleblog.com/2015/'> 2015 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2015/12/'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2015/11/'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2015/10/'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2015/09/'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2015/08/'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2015/07/'> Jul </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2015/06/'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2015/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2015/04/'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2015/03/'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2015/02/'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2015/01/'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'> &#58821; </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'> &#58821; </i> &#160; </span> </a> <a class='post-count-link' href='http://ads-developers.googleblog.com/2014/'> 2014 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2014/12/'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2014/11/'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2014/10/'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2014/09/'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2014/08/'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2014/07/'> Jul </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2014/06/'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2014/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2014/04/'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2014/03/'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2014/02/'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2014/01/'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'> &#58821; </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'> &#58821; </i> &#160; </span> </a> <a class='post-count-link' href='http://ads-developers.googleblog.com/2013/'> 2013 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2013/12/'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2013/11/'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2013/10/'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2013/09/'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2013/08/'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2013/07/'> Jul </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2013/06/'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2013/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2013/04/'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2013/03/'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2013/02/'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2013/01/'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'> &#58821; </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'> &#58821; </i> &#160; </span> </a> <a class='post-count-link' href='http://ads-developers.googleblog.com/2012/'> 2012 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2012/12/'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2012/11/'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2012/10/'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2012/09/'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2012/08/'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2012/07/'> Jul </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2012/06/'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2012/05/'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2012/04/'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2012/03/'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2012/02/'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2012/01/'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'> &#58821; </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'> &#58821; </i> &#160; </span> </a> <a class='post-count-link' href='http://ads-developers.googleblog.com/2011/'> 2011 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2011/12/'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='http://ads-developers.googleblog.com/2011/11/'> Nov </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> </div> </div> <div class='clear'></div> </div> </div></div> <div class='section' id='sidebar-bottom'><div class='widget HTML' data-version='1' id='HTML5'> <div class='widget-content'> <div class='followgooglewrapper'> <script src="https://apis.google.com/js/plusone.js"></script> <div class="g-ytsubscribe" data-channel="AdsDevelopers" data-layout="full"></div> </div> </div> <div class='clear'></div> </div><div class='widget HTML' data-version='1' id='HTML7'> <div class='widget-content'> Give us feedback in our developer product forums:<br /><br /> <a href="https://groups.google.com/forum/#!forum/adwords-api">Google Ads API</a><br /> <a href="https://groups.google.com/forum/#!forum/adwords-scripts">Google Ads scripts</a><br /> <a href="https://groups.google.com/forum/#!forum/google-doubleclick-for-publishers-api">Google Ad Manager API</a><br /> <a href="https://groups.google.com/forum/#!forum/google-doubleclick-for-advertisers-api">DCM API</a><br /> <a href="https://groups.google.com/forum/#!forum/google-admob-ads-sdk">Google Mobile Ads SDK</a><br /> <a href="https://groups.google.com/g/google-admob-api-developer-forum">Google AdMob API</a><br /> <a href="https://groups.google.com/forum/#!forum/ima-sdk">Google Interactive Media Ads SDK</a><br /> <a href="https://groups.google.com/forum/#!forum/google-content-api-for-shopping">Google Content API for Shopping</a><br /> <a href="https://groups.google.com/forum/#!forum/google-doubleclick-ad-exchange-buyer-api">Authorized Buyers API</a><br /> </div> <div class='clear'></div> </div></div> </div> </div> <div style='clear:both;'></div> </div> <!-- Footer --> <div class='google-footer-outer loading'> <div id='google-footer'> <a href='//www.google.com/'> <img class='google-logo-dark' height='36' src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALgAAABICAYAAABFoT/eAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAACLVJREFUeNrsXd+L20YQ3vOprdLqiMXFXE2qB7dcwEcTSB7ykIc+9A/PQx/yEMq1TWhNuYIpJriNr7XpmZ5IxFEvmW2EKs3Ornb1w50PxIFP0kiz387OzM6uhGAwGAxGP3Ho+f7x7ri1O7LdccPqZjSNA4dEHsLfaHcEFedJom93x9Xu2OyOFTcBo6sED3fHZHeMEELrkAHJF0B8Rr+gDFsZ5n0luLTQ95AXs4W06D/tjpR50xtM4CjD0y48YGB4rnyZxNOzyA7zBHr+nLnDaJLg0mo/ALekCasg3Z4XbM0ZdTEgnDPeHY8bIne+Qz2GvwyGNwsuyT218KWvIIBMcwGpLiipcolecjMxfBDchNyS1EvxLiOSIecp31q6IJ/C3yrIrMqMm4jhg+AxkdwbIO3aUO4KjqqMjCT3uaazMBhWBJfuxH3CtRfiXf66DhSRZWbmlMnNaILgZxrXJQO/eO3wORZwvwm4JUxuhheCjzVBYAbW1ces45YDSoZrFNOEE835M8FT6oyeEnws8Fz3QnBxFKPHBMem4GU+m6fPGb0leCTwWcM5B36MPgeZI01gudyDdw3hPeXfo8L/rmCUWnuMMdqUL2WqWeRbhf+twfVsO7YagZGNC79fw7OthEVtkiJ4jJzTd3KPwf3CRqhhiTu23AP5sl0/0xiwISQXpNwLIJK87mHF+U8ddzzdmgKlGzlPYjyxGJQouIhNT4k9AqWEFkqfguIvagTWbcq3KW1WE3xS3m8NtA9WS451xofwjKT5kkDoK/b6mDk5FfXr1lWDL4BofZEv2/SRsK/EHGlGdBdu8QNRb8HMCFwt7Yy3DDI/QP7fx5z3VLhdlJEIs4rKNuXXJXdxZPdB7kfCzWqwCO4V1LHgLjInX3tQ1KzCR52Cz+vDj1dydeRuS74rcvs2Pi6fT5H8OaaUQPQPYcWwRSGXyhhscn5dpAnEFMkuEZetbfkTAnlSuH4DxisE+aMGeJAQ3lFl7C4LJE6QWCaCd583ORQ1jYAwjFctal7nOs2ZZvicwvlZx+RHGrcoAwKUVX8uwcc/9TT65INeDOr5shL9LDRB6QTeIy3zwfdh3WOi6axLCEhSjXU7F3h6LqggUtvyJxpynwu8tDkD98fXApOxRj8zoZ9MnGveYVIVZKaGrkBXCY65BCYNN9NkjpKOyQ81Q79JgdxS+Jn3SDTEXRI7SWzaiSTB32oI3nU3BvMfM0urhOVYgwKhuiAfc4tM07wXwm1ZRoQYSl2NUwiu01fEAHVcpixd745FvVz4dzUUc0o8rwoLy8ZSwU6CyFx1RP5II9+1bFPEFs9HWbNLiimDXE+vCm7u1CS47cofzD3aEhVY57mxRo5zlqdt+RFC1JUH2S7bcVXg4liTMakaBZZVxiTICRoivcn1sEUBlk24JmaC6kxUbYmWoqvyfck2xZGGnDFYa9MMzkYQ1ijkCX6qidybrgePiQ0QIQqoi6qRLeqQfIoRsEHaQJLBdHOnLGetSdm/IPcymJuS1PAnbQPH0MOw/39C1vL11DiLOqIsbDI8QcHvGiLnySi2qUXBicaqUSxN5LEB0g7Jt3ENXJLPJ5S1tnaZBoWbpRqrmjRE7qHmpSmNHdQcYrEUadoh+TbBnc9ri7iycI1kzPeNcLDIvbiqXpez9Tmdq6zGREPuzECBoxrPMiI2WtvyNwhJba2wy3JZ6ky5dD1lSvmZS3e4SPA1wcf1VTFHKX+cGwZzdUYcqpvUtvwrD/InDttVlyZeAKlNN5MKbAiurHhKIPlUuJvlTCCiDjSKSCsUmCFWbGLZwCESfK07JB8LvMYWVtw0D00JEHV8Mq2HkqPbE0oHLvvK2g0o8ETg+4cfwTlZDT9JDoWygu4uQQE/ivIvtcnfPkaCqhiupz7jWOAzqL/vjtcdkv9G4MVMt+EaylfuImiPAXEUjRF3pjjaHiPPZ6If9TGGAO4ZY0am6jOCb+DQ+ZCqLkIpOIPrdNfIjnFPY6nyFut7TS/fanrziOBOKMupKw94WaLMtuVnSFt9CPrWWdJE6PeltCX432DEBoh+5Dv8RRhdis8YAv9uyq4/JAwtlEApgBe9Cw9xDD3tdk4Jn0MDfiHwPHcRPxBePCMER3GuIx7kGlv9fkZ4V9lolx2Uv4X7hEj7qJ3LDoAMGbTRMRibu4L2xQ8bgt8AyU+Q+x7nYrvDnH4iuO5LxKsYwPVbkPMvKF9Zky9wXzRfVWizi62r9X5VHf55h+WHhDjGBZ4WRhyTr6z5SlCoLMxLSpBZFsQ9F80uQFbF/6aFWi+Ev51vzzsuX+msyzuQXXjUz8zEBy+zpq9yweXAoxJW4JbYrDS6gYDqGHxPl+TKeiBfxj9/EBIElPYeOA4y8/qRQfknjvSzgRgtq0Pw/M1eQeMdOSb2Bnrhr6Led+1vcp2x7oTFHMnedFW+Ivlty062BUt74oHgSj+vHepnhunn0JJAMtBZgDI/qmGtMujRv8DDpo47zBJ8UtPOuAR/7rKn8t9AJ0tBdmBAmJ/Fu71yxp4I3qh+DhyRqbi5Y1ShVPlSb8X7bRNcfgZFl+WRGYo7uecrWq1r8X5bhmzP5OdlDwsGRm1suSxkg5rYm7ConyGQ3Zl+DgSD8V/kPwrWBMG9YcBtyShBnTLdTiHgttw7qAW7cqh/ZnmPKr/6ignOaKsdyxbsToT5UkPsW00bJjijDXficcX/JsLs6w2BwGtherdckH3w/kNXRPVI0OqJQoHX42/66IMfMj/2huRjxIidgKV/W0JS+bsstDoTeAHcrI8E5zTh/sDkqxL5rZup55/3USlswfcHf4IrQplVDgW9XFlOqnwr6pVPMMEZTuC60EttvdzbLbaZ4PsFVa3nohhO+vW+yn/ZB2fUhpysmQrzBcTSai9EszuZMcEZ1lCFVrp9zGXhm69iLyY4oxFIa178lPe12I/P2DAYDAaDwWAwGAwGg8FgMBgMBoPBYDD2Cf8IMADDRGoQTe+E9AAAAABJRU5ErkJggg==' style='margin-top: -16px;' width='92'/> </a> <ul> <li> <a href='//www.google.com/'> Google </a> </li> <li> <a href='//www.google.com/policies/privacy/'> Privacy </a> </li> <li> <a href='//www.google.com/policies/terms/'> Terms </a> </li> </ul> </div> </div> <script type='text/javascript'> //<![CDATA[ // Social sharing popups. var postEl = document.getElementsByClassName('social-wrapper'); var postCount = postEl.length; for(i=0; i<postCount;i++){ postEl[i].addEventListener("click", function(event){ var postUrl = this.getAttribute("data-href"); window.open( postUrl,'popUpWindow','height=500,width=500,left=10,top=10,resizable=yes,scrollbars=yes,toolbar=yes,menubar=no,location=no,directories=no,status=yes'); });} //]]> </script> <script type='text/javascript'> //<![CDATA[ var BreakpointHandler = function() { this.initted = false; this.isHomePage = false; this.isMobile = false; }; BreakpointHandler.prototype.finalizeSummary = function(summaryHtml, lastNode) { // Use $.trim for IE8 compatibility summaryHtml = $.trim(summaryHtml).replace(/(<br>|\s)+$/,''); if (lastNode.nodeType == 3) { var lastChar = summaryHtml.slice(-1); if (!lastChar.match(/[.”"?]/)) { if (!lastChar.match(/[A-Za-z]/)) { summaryHtml = summaryHtml.slice(0, -1); } summaryHtml += ' ...'; } } else if (lastNode.nodeType == 1 && (lastNode.nodeName == 'I' || lastNode.nodeName == 'A')) { summaryHtml += ' ...'; } return summaryHtml; }; BreakpointHandler.prototype.generateSummaryFromContent = function(content, numWords) { var seenWords = 0; var summaryHtml = ''; for (var i=0; i < content.childNodes.length; i++) { var node = content.childNodes[i]; var nodeText; if (node.nodeType == 1) { if (node.hasAttribute('data-about-pullquote')) { continue; } nodeText = node.textContent; if (nodeText === undefined) { // innerText for IE8 nodeText = node.innerText; } if (node.nodeName == 'DIV' || node.nodeName == 'B') { // Don't end early if we haven't seen enough words. if (seenWords < 10) { continue; } if (i > 0) { summaryHtml = this.finalizeSummary(summaryHtml, content.childNodes[i-1]); } break; } summaryHtml += node.outerHTML; } else if (node.nodeType == 3) { nodeText = node.nodeValue; summaryHtml += nodeText + ' '; } var words = nodeText.match(/\S+\s*/g); if (!words) { continue; } var remain = numWords - seenWords; if (words.length >= remain) { summaryHtml = this.finalizeSummary(summaryHtml, node); break; } seenWords += words.length; } return summaryHtml; }; BreakpointHandler.prototype.detect = function() { var match, pl = /\+/g, search = /([^&=]+)=?([^&]*)/g, decode = function (s) { return decodeURIComponent(s.replace(pl, " ")); }, query = window.location.search.substring(1); var urlParams = {}; while (match = search.exec(query)) urlParams[decode(match[1])] = decode(match[2]); this.isListPage = $('html').hasClass('list-page'); this.isMobile = urlParams['m'] === '1'; this.isHomePage = window.location.pathname == '/'; }; BreakpointHandler.prototype.initContent = function() { var self = this; $('.post').each(function(index) { var body = $(this).children('.post-body')[0]; var content = $(body).children('.post-content')[0]; $(content).addClass('post-original'); var data = $(content).children('script').html(); data = self.rewriteForSSL(data); // If exists, extract specified editor's preview. var match = data.match(/([\s\S]+?)<div data-is-preview.+?>([\s\S]+)<\/div>/m); if (match) { data = match[1]; } // Prevent big images from loading when they aren't needed. // This must be done as a pre-injection step, since image loading can't be // canceled once embedded into the DOM. if (self.isListPage && self.isMobile) { data = data.replace(/<(img|iframe) .+?>/g, ''); } // Insert template to be rendered as nodes. content.innerHTML = data; if (self.isListPage) { var summary = document.createElement('div'); $(summary).addClass('post-content'); $(summary).addClass('post-summary'); body.insertBefore(summary, content); if (match) { // Use provided summary. summary.innerHTML = match[2]; } else { // Generate a summary. // Summary generation relies on DOM, so it must occur after content is // inserted into the page. summary.innerHTML = self.generateSummaryFromContent(content, 30); } // Add read more link to summary. var titleAnchor = $(this).find('.title a')[0]; var link = titleAnchor.cloneNode(true); link.innerHTML = 'Read More'; $(link).addClass('read-more'); summary.appendChild(link); } }); // Firefox does not allow for proper styling of BR. if (navigator.userAgent.indexOf('Firefox') > -1) { $('.post-content br').replaceWith('<span class="space"></span>'); } $('.loading').removeClass('loading'); }; BreakpointHandler.prototype.process = function() { if (!this.initted) { var makeInsecureImageRegex = function(hosts) { var whitelist = hosts.join('|').replace(/\./g,'\\.'); // Normal image tags, plus input images (yes, this is possible!) return new RegExp('(<(img|input)[^>]+?src=("|\'))http:\/\/(' + whitelist +')', 'g'); }; this.sslImageRegex = makeInsecureImageRegex(BreakpointHandler.KNOWN_HTTPS_HOSTS); this.sslImageCurrentDomainRegex = makeInsecureImageRegex([window.location.hostname]); this.detect(); this.initContent(); this.initted = true; } }; BreakpointHandler.KNOWN_HTTPS_HOSTS = [ "www.google.org", "www.google.com", "services.google.com", "blogger.com", "draft.blogger.com", "www.blogger.com", "photos1.blogger.com", "photos2.blogger.com", "photos3.blogger.com", "blogblog.com", "img1.blogblog.com", "img2.blogblog.com", "www.blogblog.com", "www1.blogblog.com", "www2.blogblog.com", "0.bp.blogspot.com", "1.bp.blogspot.com", "2.bp.blogspot.com", "3.bp.blogspot.com", "4.bp.blogspot.com", "lh3.googleusercontent.com", "lh4.googleusercontent.com", "lh5.googleusercontent.com", "lh6.googleusercontent.com", "themes.googleusercontent.com", ]; BreakpointHandler.prototype.rewriteForSSL = function(html) { // Handle HTTP -> HTTPS source replacement of images, movies, and other embedded content. return html.replace(this.sslImageRegex, '$1https://$4') .replace(this.sslImageCurrentDomainRegex, '$1//$4') .replace(/(<(embed|iframe)[^>]+?src=("|'))http:\/\/([^"']*?(youtube|picasaweb\.google)\.com)/g, '$1https://$4') // Slideshow SWF takes a image host, so we need to rewrite that parameter. .replace(/(<embed[^>]+?feed=http(?=[^s]))/g, '$1s'); }; $(document).ready(function() { var handler = new BreakpointHandler(); handler.process(); // Top-level navigation. $(".BlogArchive .tab").click(function(ev) { ev.preventDefault(); $(this).parent().toggleClass('active'); $(this).siblings().slideToggle(300); }); $(".Label .tab").click(function(ev) { ev.preventDefault(); $(this).parent().toggleClass('active'); $(this).siblings().slideToggle(300); }); // Blog archive year expansion. $('.BlogArchive .intervalToggle').click(function(ev) { ev.preventDefault(); if ($(this).parent().hasClass('collapsed')) { $(this).parent().removeClass('collapsed'); $(this).parent().addClass('expanded'); } else { $(this).parent().removeClass('expanded'); $(this).parent().addClass('collapsed'); } }); // Reverse order of months. $('.BlogArchive .intervalToggle + div').each(function(_, items) { var year = $(this); year.children().each(function(_, month) { year.prepend(month); }); }); // Set anchors to open in new tab. $('.post-content img').parent().each(function(_, node) { if (node.nodeName == 'A') { $(this).attr('target', '_blank'); } }); // Process search requests. $('.searchBox input').on("keypress", function(ev) { if (ev.which == 13) { window.location.href = 'https://www.google.com/search?q=site%3A' + window.location.hostname + '%20' + encodeURIComponent ($(this).val()); } }); }); //]]> </script> <script type="text/javascript" src="https://www.blogger.com/static/v1/widgets/1704033933-widgets.js"></script> <script type='text/javascript'> window['__wavt'] = 'AOuZoY40w02aWsq3lozyovVAxnj2oW9DuQ:1740307771540';_WidgetManager._Init('//www.blogger.com/rearrange?blogID\x3d7815614485808579332','//ads-developers.googleblog.com/search/label/dfp_reports','7815614485808579332'); _WidgetManager._SetDataContext([{'name': 'blog', 'data': {'blogId': '7815614485808579332', 'title': 'Google Ads Developer Blog', 'url': 'http://ads-developers.googleblog.com/search/label/dfp_reports', 'canonicalUrl': 'http://ads-developers.googleblog.com/search/label/dfp_reports', 'homepageUrl': 'http://ads-developers.googleblog.com/', 'searchUrl': 'http://ads-developers.googleblog.com/search', 'canonicalHomepageUrl': 'http://ads-developers.googleblog.com/', 'blogspotFaviconUrl': 'http://ads-developers.googleblog.com/favicon.ico', 'bloggerUrl': 'https://www.blogger.com', 'hasCustomDomain': true, 'httpsEnabled': false, 'enabledCommentProfileImages': true, 'gPlusViewType': 'FILTERED_POSTMOD', 'adultContent': false, 'analyticsAccountNumber': 'G-E4MSGF2SF9', 'analytics4': true, 'encoding': 'UTF-8', 'locale': 'en', 'localeUnderscoreDelimited': 'en', 'languageDirection': 'ltr', 'isPrivate': false, 'isMobile': false, 'isMobileRequest': false, 'mobileClass': '', 'isPrivateBlog': false, 'isDynamicViewsAvailable': true, 'feedLinks': '\x3clink rel\x3d\x22alternate\x22 type\x3d\x22application/atom+xml\x22 title\x3d\x22Google Ads Developer Blog - Atom\x22 href\x3d\x22http://ads-developers.googleblog.com/feeds/posts/default\x22 /\x3e\n\x3clink rel\x3d\x22alternate\x22 type\x3d\x22application/rss+xml\x22 title\x3d\x22Google Ads Developer Blog - RSS\x22 href\x3d\x22http://ads-developers.googleblog.com/feeds/posts/default?alt\x3drss\x22 /\x3e\n\x3clink rel\x3d\x22service.post\x22 type\x3d\x22application/atom+xml\x22 title\x3d\x22Google Ads Developer Blog - Atom\x22 href\x3d\x22https://www.blogger.com/feeds/7815614485808579332/posts/default\x22 /\x3e\n', 'meTag': '', 'adsenseHostId': 'ca-host-pub-1556223355139109', 'adsenseHasAds': false, 'adsenseAutoAds': false, 'boqCommentIframeForm': true, 'loginRedirectParam': '', 'view': '', 'dynamicViewsCommentsSrc': '//www.blogblog.com/dynamicviews/4224c15c4e7c9321/js/comments.js', 'dynamicViewsScriptSrc': '//www.blogblog.com/dynamicviews/c320e3f9c6626331', 'plusOneApiSrc': 'https://apis.google.com/js/platform.js', 'disableGComments': true, 'interstitialAccepted': false, 'sharing': {'platforms': [{'name': 'Get link', 'key': 'link', 'shareMessage': 'Get link', 'target': ''}, {'name': 'Facebook', 'key': 'facebook', 'shareMessage': 'Share to Facebook', 'target': 'facebook'}, {'name': 'BlogThis!', 'key': 'blogThis', 'shareMessage': 'BlogThis!', 'target': 'blog'}, {'name': 'X', 'key': 'twitter', 'shareMessage': 'Share to X', 'target': 'twitter'}, {'name': 'Pinterest', 'key': 'pinterest', 'shareMessage': 'Share to Pinterest', 'target': 'pinterest'}, {'name': 'Email', 'key': 'email', 'shareMessage': 'Email', 'target': 'email'}], 'disableGooglePlus': true, 'googlePlusShareButtonWidth': 0, 'googlePlusBootstrap': '\x3cscript type\x3d\x22text/javascript\x22\x3ewindow.___gcfg \x3d {\x27lang\x27: \x27en\x27};\x3c/script\x3e'}, 'hasCustomJumpLinkMessage': false, 'jumpLinkMessage': 'Read more', 'pageType': 'index', 'searchLabel': 'dfp_reports', 'pageName': 'dfp_reports', 'pageTitle': 'Google Ads Developer Blog: dfp_reports'}}, {'name': 'features', 'data': {}}, {'name': 'messages', 'data': {'edit': 'Edit', 'linkCopiedToClipboard': 'Link copied to clipboard!', 'ok': 'Ok', 'postLink': 'Post Link'}}, {'name': 'template', 'data': {'name': 'custom', 'localizedName': 'Custom', 'isResponsive': false, 'isAlternateRendering': false, 'isCustom': true}}, {'name': 'view', 'data': {'classic': {'name': 'classic', 'url': '?view\x3dclassic'}, 'flipcard': {'name': 'flipcard', 'url': '?view\x3dflipcard'}, 'magazine': {'name': 'magazine', 'url': '?view\x3dmagazine'}, 'mosaic': {'name': 'mosaic', 'url': '?view\x3dmosaic'}, 'sidebar': {'name': 'sidebar', 'url': '?view\x3dsidebar'}, 'snapshot': {'name': 'snapshot', 'url': '?view\x3dsnapshot'}, 'timeslide': {'name': 'timeslide', 'url': '?view\x3dtimeslide'}, 'isMobile': false, 'title': 'Google Ads Developer Blog', 'description': 'The official blog for information about the Google Ads, Google Ad Manager, Google Mobile Ads SDKs for AdMob and IMA SDKs, and other Google Advertising Platform developer tools.', 'url': 'http://ads-developers.googleblog.com/search/label/dfp_reports', 'type': 'feed', 'isSingleItem': false, 'isMultipleItems': true, 'isError': false, 'isPage': false, 'isPost': false, 'isHomepage': false, 'isArchive': false, 'isSearch': true, 'isLabelSearch': true, 'search': {'label': 'dfp_reports', 'resultsMessage': 'Showing posts with the label dfp_reports', 'resultsMessageHtml': 'Showing posts with the label \x3cspan class\x3d\x27search-label\x27\x3edfp_reports\x3c/span\x3e'}}}]); _WidgetManager._RegisterWidget('_HeaderView', new _WidgetInfo('Header1', 'header', document.getElementById('Header1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_BlogView', new _WidgetInfo('Blog1', 'main', document.getElementById('Blog1'), {'cmtInteractionsEnabled': false, 'navMessage': 'Showing posts with label \x3cb\x3edfp_reports\x3c/b\x3e. \x3ca href\x3d\x22http://ads-developers.googleblog.com/\x22\x3eShow all posts\x3c/a\x3e', 'lightboxEnabled': true, 'lightboxModuleUrl': 'https://www.blogger.com/static/v1/jsbin/2332438401-lbx.js', 'lightboxCssUrl': 'https://www.blogger.com/static/v1/v-css/1964470060-lightbox_bundle.css'}, 'displayModeFull')); _WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML8', 'sidebar-top', document.getElementById('HTML8'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_LabelView', new _WidgetInfo('Label1', 'sidebar', document.getElementById('Label1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_BlogArchiveView', new _WidgetInfo('BlogArchive1', 'sidebar', document.getElementById('BlogArchive1'), {'languageDirection': 'ltr', 'loadingMessage': 'Loading\x26hellip;'}, 'displayModeFull')); _WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML5', 'sidebar-bottom', document.getElementById('HTML5'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML7', 'sidebar-bottom', document.getElementById('HTML7'), {}, 'displayModeFull')); </script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10