Builders

Builders are the standard way to create entities in Google Ads scripts. Builders allow you to build a Google Ads entity either synchronously or asynchronously. You can also check whether the operation was successful or not, and take appropriate actions depending on the operation's outcome. The following code snippet shows how to create a keyword using a builder.

  // Retrieve your ad group. 
 let 
  
 adGroup 
  
 = 
  
 AdsApp 
 . 
 adGroups 
 (). 
 get 
 (). 
 next 
 (); 
 // Create a keyword operation. 
 let 
  
 keywordOperation 
  
 = 
  
 adGroup 
 . 
 newKeywordBuilder 
 () 
  
 . 
 withCpc 
 ( 
 1.2 
 ) 
  
 . 
 withText 
 ( 
 "shoes" 
 ) 
  
 . 
 withFinalUrl 
 ( 
 "http://www.example.com/shoes" 
 ) 
  
 . 
 build 
 (); 
 // Optional: examine the outcome. The call to isSuccessful() 
 // will block until the operation completes. 
 if 
  
 ( 
 keywordOperation 
 . 
 isSuccessful 
 ()) 
  
 { 
  
 // Get the result. 
  
 let 
  
 keyword 
  
 = 
  
 keywordOperation 
 . 
 getResult 
 (); 
 } 
  
 else 
  
 { 
  
 // Handle the errors. 
  
 let 
  
 errors 
  
 = 
  
 keywordOperation 
 . 
 getErrors 
 (); 
 } 
 

Any entity that can be created using Google Ads scripts does so using this builder pattern.

Performance considerations

By default, Google Ads scripts executes its operations asynchronously. This allows scripts to group your operations as batches, and achieve high performance. However, calling the Operation methods like isSuccessful() and getResult() forces Google Ads scripts to flush its pending operations list, and thus may lead to poor performance. Instead, create an array to hold the operations, then iterate through that array to retrieve the results.

Poor performance Good performance
 for 
  
 ( 
 let 
  
 i 
  
 = 
  
 0 
 ; 
  
 i 
 < 
 keywords 
 . 
 length 
 ; 
  
 i 
 ++ 
 ) 
  
 let 
  
 keywordOperation 
  
 = 
  
 adGroup 
  
 . 
 newKeywordBuilder 
 () 
  
 . 
 withText 
 ( 
 keywords 
 [ 
 i 
 ] 
 ) 
  
 . 
 build 
 (); 
  
 // 
  
 Bad 
 : 
  
 retrieving 
  
 the 
  
 result 
  
 in 
  
 the 
  
 same 
  
 // 
  
 loop 
  
 that 
  
 creates 
  
 the 
  
 operation 
  
 // 
  
 leads 
  
 to 
  
 poor 
  
 performance 
 . 
  
 let 
  
 newKeyword 
  
 = 
  
 keywordOperation 
 . 
 getResult 
 (); 
  
 newKeyword 
 . 
 applyLabel 
 ( 
 "New keywords" 
 ); 
 } 
 // 
  
 Create 
  
 an 
  
 array 
  
 to 
  
 hold 
  
 the 
  
 operations 
 let 
  
 operations 
  
 = 
  
 [] 
 ; 
 for 
  
 ( 
 let 
  
 i 
  
 = 
  
 0 
 ; 
  
 i 
 < 
 keywords 
 . 
 length 
 ; 
  
 i 
 ++ 
 ) 
  
 { 
  
 let 
  
 keywordOperation 
  
 = 
  
 adGroup 
  
 . 
 newKeywordBuilder 
 () 
  
 . 
 withText 
 ( 
 keywords 
 [ 
 i 
 ] 
 ) 
  
 . 
 build 
 (); 
  
 operations 
 . 
 push 
 ( 
 keywordOperation 
 ); 
 } 
 // 
  
 Process 
  
 the 
  
 operations 
  
 separately 
 . 
  
 Allows 
 // 
  
 Google 
  
 Ads 
  
 scripts 
  
 to 
  
 group 
  
 operations 
  
 into 
 // 
  
 batches 
 . 
 for 
  
 ( 
 let 
  
 i 
  
 = 
  
 0 
 ; 
  
 i 
 < 
 operations 
 . 
 length 
 ; 
  
 i 
 ++ 
 ) 
  
 { 
  
 let 
  
 newKeyword 
  
 = 
  
 operations 
 [ 
 i 
 ] 
 . 
 getResult 
 (); 
  
 newKeyword 
 . 
 applyLabel 
 ( 
 "New keywords" 
 ); 
 } 
Create a Mobile Website
View Site in Mobile | Classic
Share by: