Ads Manager Scripts

Get all accounts

 function 
  
 getAllAccounts 
 () 
  
 { 
  
 const 
  
 accountIterator 
  
 = 
  
 AdsManagerApp 
 . 
 accounts 
 () 
 . 
 get 
 (); 
  
 for 
  
 ( 
 const 
  
 account 
  
 of 
  
 accountIterator 
 ) 
  
 { 
  
 const 
  
 accountName 
  
 = 
  
 account 
 . 
 getName 
 () 
  
 ? 
  
 account 
 . 
 getName 
 () 
  
 : 
  
 '--' 
 ; 
  
 console 
 . 
 log 
 ( 
 ' 
 %s 
 , 
 %s 
 , 
 %s 
 , 
 %s 
 ' 
 , 
  
 account 
 . 
 getCustomerId 
 (), 
  
 accountName 
 , 
  
 account 
 . 
 getTimeZone 
 (), 
  
 account 
 . 
 getCurrencyCode 
 ()); 
  
 } 
 } 

Get accounts from customer IDs

 function 
  
 getAccountsFromCustomerIds 
 () 
  
 { 
  
 // 
  
 This 
  
 is 
  
 useful 
  
 when 
  
 you 
  
 are 
  
 reading 
  
 customer 
  
 IDs 
  
 from 
  
 an 
  
 external 
  
 data 
  
 // 
  
 source 
 , 
  
 such 
  
 as 
  
 a 
  
 Google 
  
 Spreadsheet 
 . 
  
 // 
  
 You 
  
 can 
  
 also 
  
 use 
  
 the 
  
 condition 
  
 "CustomerId in ['123-456-7890', 
  
 // 
  
 '345-678-9000' 
 , 
  
 '890-123-6000' 
 ] 
 ". 
  
 const 
  
 accountIterator 
  
 = 
  
 AdsManagerApp 
 . 
 accounts 
 () 
  
 . 
 withIds 
 ([ 
 '123-456-7890' 
 , 
  
 '345-678-9000' 
 , 
  
 '890-123-6000' 
 ]) 
  
 . 
 get 
 (); 
  
 for 
  
 ( 
 const 
  
 account 
  
 of 
  
 accountIterator 
 ) 
  
 { 
  
 const 
  
 accountName 
  
 = 
  
 account 
 . 
 getName 
 () 
  
 ? 
  
 account 
 . 
 getName 
 () 
  
 : 
  
 '--' 
 ; 
  
 console 
 . 
 log 
 ( 
 ' 
 %s 
 , 
 %s 
 , 
 %s 
 , 
 %s 
 ' 
 , 
  
 account 
 . 
 getCustomerId 
 (), 
  
 accountName 
 , 
  
 account 
 . 
 getTimeZone 
 (), 
  
 account 
 . 
 getCurrencyCode 
 ()); 
  
 } 
 } 

Get accounts by label

 function 
  
 getAccountsByLabel 
 () 
  
 { 
  
 // 
  
 Only 
  
 CONTAINS 
  
 and 
  
 DOES_NOT_CONTAIN 
  
 operators 
  
 are 
  
 supported 
 . 
  
 const 
  
 accountIterator 
  
 = 
  
 AdsManagerApp 
 . 
 accounts 
 () 
  
 . 
 withCondition 
 ( 
 "LabelNames CONTAINS 'High spend accounts'" 
 ) 
  
 . 
 get 
 (); 
  
 for 
  
 ( 
 const 
  
 account 
  
 of 
  
 accountIterator 
 ) 
  
 { 
  
 const 
  
 accountName 
  
 = 
  
 account 
 . 
 getName 
 () 
  
 ? 
  
 account 
 . 
 getName 
 () 
  
 : 
  
 '--' 
 ; 
  
 console 
 . 
 log 
 ( 
 ' 
 %s 
 , 
 %s 
 , 
 %s 
 , 
 %s 
 ' 
 , 
  
 account 
 . 
 getCustomerId 
 (), 
  
 accountName 
 , 
  
 account 
 . 
 getTimeZone 
 (), 
  
 account 
 . 
 getCurrencyCode 
 ()); 
  
 } 
 } 

Update multiple accounts in series

 function 
  
 updateAccountsInSeries 
 () 
  
 { 
  
 // 
  
 You 
  
 can 
  
 use 
  
 this 
  
 approach 
  
 when 
  
 you 
  
 have 
  
 only 
  
 minimal 
  
 processing 
  
 to 
  
 // 
  
 perform 
  
 in 
  
 each 
  
 of 
  
 your 
  
 client 
  
 accounts 
 . 
  
 // 
  
 Select 
  
 the 
  
 accounts 
  
 to 
  
 be 
  
 processed 
 . 
  
 const 
  
 accountIterator 
  
 = 
  
 AdsManagerApp 
 . 
 accounts 
 () 
  
 . 
 withCondition 
 ( 
 "LabelNames CONTAINS 'Cars'" 
 ) 
  
 . 
 get 
 (); 
  
 for 
  
 ( 
 const 
  
 account 
  
 of 
  
 accountIterator 
 ) 
  
 { 
  
 // 
  
 Switch 
  
 to 
  
 the 
  
 account 
  
 you 
  
 want 
  
 to 
  
 process 
 . 
  
 AdsManagerApp 
 . 
 select 
 ( 
 account 
 ); 
  
 // 
  
 Retrieve 
  
 all 
  
 Search 
  
 and 
  
 Display 
  
 campaigns 
  
 to 
  
 be 
  
 paused 
 . 
  
 const 
  
 campaignIterator 
  
 = 
  
 AdsApp 
 . 
 campaigns 
 () 
  
 . 
 withCondition 
 ( 
 "LabelNames = 'Christmas promotion'" 
 ) 
  
 . 
 get 
 (); 
  
 for 
  
 ( 
 const 
  
 campaign 
  
 of 
  
 campaignIterator 
 ) 
  
 { 
  
 console 
 . 
 log 
 ( 
 ` 
 Pausing 
  
 campaign 
  
 $ 
 { 
 campaign 
 . 
 getName 
 ()} 
  
 in 
  
 ` 
  
 + 
  
 ` 
 account 
  
 $ 
 { 
 account 
 . 
 getCustomerId 
 ()} 
 ` 
 ); 
  
 campaign 
 . 
 pause 
 (); 
  
 } 
  
 } 
 } 

Update multiple accounts in parallel

 function 
  
 updateAccountsInParallel 
 () 
  
 { 
  
 // 
  
 You 
  
 can 
  
 use 
  
 this 
  
 approach 
  
 when 
  
 you 
  
 have 
  
 a 
  
 large 
  
 amount 
  
 of 
  
 processing 
  
 // 
  
 to 
  
 do 
  
 in 
  
 each 
  
 of 
  
 your 
  
 client 
  
 accounts 
 . 
  
 // 
  
 Select 
  
 the 
  
 accounts 
  
 to 
  
 be 
  
 processed 
 . 
  
 You 
  
 can 
  
 process 
  
 up 
  
 to 
  
 50 
  
 accounts 
 . 
  
 const 
  
 accountSelector 
  
 = 
  
 AdsManagerApp 
 . 
 accounts 
 () 
  
 . 
 withCondition 
 ( 
 "LabelNames CONTAINS 'High spend accounts'" 
 ) 
  
 . 
 withLimit 
 ( 
 50 
 ); 
  
 // 
  
 Process 
  
 the 
  
 account 
  
 in 
  
 parallel 
 . 
  
 The 
  
 'processAccount' 
  
 function 
  
 will 
  
 // 
  
 be 
  
 called 
  
 in 
  
 the 
  
 context 
  
 of 
  
 each 
  
 account 
  
 in 
  
 the 
  
 selector 
 . 
  
 The 
  
 'allFinished' 
  
 function 
  
 // 
  
 will 
  
 be 
  
 called 
  
 in 
  
 this 
  
 script 
  
 once 
  
 processing 
  
 is 
  
 complete 
 , 
  
 and 
  
 is 
  
 optional 
 . 
  
 accountSelector 
 . 
 executeInParallel 
 ( 
 'processAccount' 
 , 
  
 'allFinished' 
 ); 
 } 
 /** 
  
 * 
  
 Process 
  
 one 
  
 account 
  
 at 
  
 a 
  
 time 
 . 
  
 This 
  
 method 
  
 is 
  
 called 
  
 by 
  
 the 
  
 executeInParallel 
  
 * 
  
 method 
  
 call 
  
 in 
  
 updateAccountsInParallel 
  
 function 
  
 for 
  
 every 
  
 account 
  
 that 
  
 * 
  
 it 
  
 processes 
 . 
  
 * 
  
 * 
  
 @ 
 return 
  
 { 
 Number 
 } 
  
 the 
  
 number 
  
 of 
  
 campaigns 
  
 paused 
  
 by 
  
 this 
  
 method 
 . 
  
 */ 
 function 
  
 processAccount 
 () 
  
 { 
  
 // 
  
 executeInParallel 
  
 will 
  
 automatically 
  
 switch 
  
 context 
  
 to 
  
 the 
  
 account 
  
 being 
  
 // 
  
 processed 
 , 
  
 so 
  
 all 
  
 calls 
  
 to 
  
 AdsApp 
  
 will 
  
 apply 
  
 to 
  
 the 
  
 selected 
  
 account 
 . 
  
 const 
  
 campaignIterator 
  
 = 
  
 AdsApp 
 . 
 campaigns 
 () 
  
 . 
 withCondition 
 ( 
 "LabelNames = 'Christmas promotion'" 
 ) 
  
 . 
 get 
 (); 
  
 for 
  
 ( 
 const 
  
 campaign 
  
 of 
  
 campaignIterator 
 ) 
  
 { 
  
 console 
 . 
 log 
 ( 
 ` 
 Pausing 
  
 campaign 
  
 $ 
 { 
 campaign 
 . 
 getName 
 ()} 
  
 in 
  
 ` 
  
 + 
  
 ` 
 account 
  
 $ 
 { 
 account 
 . 
 getCustomerId 
 ()} 
 ` 
 ); 
  
 campaign 
 . 
 pause 
 (); 
  
 } 
  
 // 
  
 Optional 
 : 
  
 return 
  
 a 
  
 string 
  
 value 
 . 
  
 If 
  
 you 
  
 have 
  
 a 
  
 more 
  
 complex 
  
 JavaScript 
  
 // 
  
 object 
  
 to 
  
 return 
  
 from 
  
 this 
  
 method 
 , 
  
 use 
  
 JSON 
 . 
 stringify 
 ( 
 value 
 ) 
 . 
  
 This 
  
 value 
  
 // 
  
 will 
  
 be 
  
 passed 
  
 on 
  
 to 
  
 the 
  
 callback 
  
 method 
 , 
  
 if 
  
 specified 
 , 
  
 in 
  
 the 
  
 // 
  
 executeInParallel 
  
 method 
  
 call 
 . 
  
 return 
  
 campaignIterator 
 . 
 totalNumEntities 
 () 
 . 
 toFixed 
 ( 
 0 
 ); 
 } 
 /** 
  
 * 
  
 Post 
 - 
 process 
  
 the 
  
 results 
  
 from 
  
 processAccount 
 . 
  
 This 
  
 method 
  
 will 
  
 be 
  
 called 
  
 * 
  
 once 
  
 all 
  
 the 
  
 accounts 
  
 have 
  
 been 
  
 processed 
  
 by 
  
 the 
  
 executeInParallel 
  
 method 
  
 * 
  
 call 
 . 
  
 * 
  
 * 
  
 @ 
 param 
  
 { 
 Array 
 . 
< ExecutionResult 
> } 
  
 results 
  
 An 
  
 array 
  
 of 
  
 ExecutionResult 
  
 objects 
 , 
  
 * 
  
 one 
  
 for 
  
 each 
  
 account 
  
 that 
  
 was 
  
 processed 
  
 by 
  
 the 
  
 executeInParallel 
  
 method 
 . 
  
 */ 
 function 
  
 allFinished 
 ( 
 results 
 ) 
  
 { 
  
 for 
  
 ( 
 const 
  
 result 
  
 of 
  
 results 
 ) 
  
 { 
  
 console 
 . 
 log 
 ( 
 ` 
 Customer 
  
 ID 
 : 
  
 $ 
 { 
 result 
 . 
 getCustomerId 
 }; 
  
 ` 
  
 + 
  
 ` 
 status 
  
 = 
  
 $ 
 { 
 result 
 . 
 getStatus 
 } 
 . 
 ` 
 ); 
  
 // 
  
 Check 
  
 the 
  
 execution 
  
 status 
 . 
  
 This 
  
 can 
  
 be 
  
 one 
  
 of 
  
 ERROR 
 , 
  
 OK 
 , 
  
 or 
  
 TIMEOUT 
 . 
  
 if 
  
 ( 
 result 
 . 
 getStatus 
 () 
  
 == 
  
 'ERROR' 
 ) 
  
 { 
  
 console 
 . 
 log 
 ( 
 ` 
 -- 
  
 Failed 
  
 with 
  
 error 
 : 
  
 '${result.getError()}' 
 . 
 ` 
 ); 
  
 } 
  
 else 
  
 if 
  
 ( 
 result 
 . 
 getStatus 
 () 
  
 == 
  
 'OK' 
 ) 
  
 { 
  
 // 
  
 This 
  
 is 
  
 the 
  
 value 
  
 you 
  
 returned 
  
 from 
  
 processAccount 
  
 method 
 . 
  
 If 
  
 you 
  
 // 
  
 used 
  
 JSON 
 . 
 stringify 
 ( 
 value 
 ) 
  
 in 
  
 processAccount 
 , 
  
 you 
  
 can 
  
 use 
  
 // 
  
 JSON 
 . 
 parse 
 ( 
 text 
 ) 
  
 to 
  
 reconstruct 
  
 the 
  
 JavaScript 
  
 object 
 . 
  
 const 
  
 retval 
  
 = 
  
 result 
 . 
 getReturnValue 
 (); 
  
 console 
 . 
 log 
 ( 
 ` 
 -- 
 Processed 
  
 $ 
 { 
 retval 
 } 
  
 campaigns 
 . 
 ` 
 ); 
  
 } 
  
 else 
  
 { 
  
 // 
  
 Handle 
  
 timeouts 
  
 here 
 . 
  
 } 
  
 } 
 } 
Create a Mobile Website
View Site in Mobile | Classic
Share by: