Handle Responsive Display Ads

  • Use Type = MULTI_ASSET_RESPONSIVE_DISPLAY_AD to iterate over responsive display ads that support multiple assets.

  • The condition Type = RESPONSIVE_DISPLAY_AD is deprecated and only iterates over legacy ads.

  • Update existing code to explicitly use Type = LEGACY_RESPONSIVE_DISPLAY_AD for legacy responsive display ads.

  • Modern responsive display ads use getHeadlines() for multiple short headline assets, while legacy ads use getShortHeadline() .

  • The .isLegacy() method can differentiate between legacy and modern responsive display ads within a combined iterator.

Create an ad iterator over ads that support multiple text, image, and video assets by using the condition Type = MULTI_ASSET_RESPONSIVE_DISPLAY_AD . An ad iterator with condition Type = RESPONSIVE_DISPLAY_AD will only iterate over legacy ads because this condition is deprecated. Update existing code to explicitly use Type = LEGACY_RESPONSIVE_DISPLAY_AD .

The following snippet illustrates some of the API differences and similarities between the two types of responsive display ads. Read the Responsive Display Ad reference for more details.

   
 // let legacyRdaIterator = AdsApp.ads().withCondition("Type = RESPONSIVE_DISPLAY_AD").get(); 
  
 let 
  
 legacyRdaIterator 
  
 = 
  
 AdsApp 
 . 
 ads 
 (). 
 withCondition 
 ( 
 "Type = LEGACY_RESPONSIVE_DISPLAY_AD" 
 ). 
 get 
 (); 
  
 while 
  
 ( 
 legacyRdaIterator 
 . 
 hasNext 
 ()) 
  
 { 
  
 let 
  
 responsiveDisplayAd 
  
 = 
  
 legacyRdaIterator 
 . 
 next 
 (). 
 asType 
 (). 
 responsiveDisplayAd 
 (); 
  
 // Legacy responsive display ads have just one long headline. 
  
 let 
  
 longHeadline 
  
 = 
  
 responsiveDisplayAd 
 . 
 getLongHeadline 
 (); 
  
 // And they have one short headline, too. 
  
 let 
  
 shortHeadline 
  
 = 
  
 responsiveDisplayAd 
 . 
 getShortHeadline 
 (); 
  
 // This call to .getHeadlines() returns null, because the method is not 
  
 // meaningful when called on a legacy responsive display ad. 
  
 assert 
 ( 
 responsiveDisplayAd 
 . 
 getHeadlines 
 () 
  
 === 
  
 null 
 ); 
  
 // ... etc. ... 
  
 } 
  
 let 
  
 rdaIterator 
  
 = 
  
 AdsApp 
 . 
 ads 
 (). 
 withCondition 
 ( 
 "Type = MULTI_ASSET_RESPONSIVE_DISPLAY_AD" 
 ). 
 get 
 (); 
  
 while 
  
 ( 
 rdaIterator 
 . 
 hasNext 
 ()) 
  
 { 
  
 let 
  
 responsiveDisplayAd 
  
 = 
  
 rdaIterator 
 . 
 next 
 (). 
 asType 
 (). 
 responsiveDisplayAd 
 (); 
  
 // Responsive display ads have just one long headline. 
  
 let 
  
 longHeadline 
  
 = 
  
 responsiveDisplayAd 
 . 
 getLongHeadline 
 (); 
  
 // But they can have multiple short headline text assets. 
  
 let 
  
 shortHeadlineAssets 
  
 = 
  
 responsiveDisplayAd 
 . 
 getHeadlines 
 (); 
  
 // This call to .getShortHeadline() returns null, because the method is only 
  
 // meaningful when called on a legacy responsive display ad. 
  
 assert 
 ( 
 responsiveDisplayAd 
 . 
 getShortHeadline 
 () 
  
 === 
  
 null 
 ); 
  
 // ... etc. ... 
  
 } 
  
 let 
  
 rdaAndLegacyIterator 
  
 = 
  
 AdsApp 
 . 
 ads 
 (). 
 withCondition 
 ( 
 "Type IN [LEGACY_RESPONSIVE_DISPLAY_AD, MULTI_ASSET_RESPONSIVE_DISPLAY_AD]" 
 ). 
 get 
 (); 
  
 while 
  
 ( 
 rdaAndLegacyIterator 
 . 
 hasNext 
 ()) 
  
 { 
  
 let 
  
 responsiveDisplayAd 
  
 = 
  
 legacyRdaIterator 
 . 
 next 
 (). 
 asType 
 (). 
 responsiveDisplayAd 
 (); 
  
 let 
  
 longHeadline 
  
 = 
  
 responsiveDisplayAd 
 . 
 getLongHeadline 
 (); 
  
 // The .isLegacy() method can be used to differentiate between responsive 
  
 // display ad types within an iterator over both. 
  
 if 
  
 ( 
 responsiveDisplayAd 
 . 
 isLegacy 
 ()) 
  
 { 
  
 let 
  
 shortHeadline 
  
 = 
  
 responsiveDisplayAd 
 . 
 getShortHeadline 
 (); 
  
 // ... etc. ... 
  
 } 
  
 else 
  
 { 
  
 let 
  
 shortHeadlineAssets 
  
 = 
  
 responsiveDisplayAd 
 . 
 getHeadlines 
 (); 
  
 // ... etc. ... 
  
 } 
  
 } 
 
Design a Mobile Site
View Site in Mobile | Classic
Share by: