Google Scripts Safety Pattern

Je Google Ads accounts automatiseren is top maar is niet zonder risico's. Wanneer je biedingen en budgetten aanpast wil je ASAP op de hoogte gebracht worden wanneer er iets misgaat. Gelukkig is daar iets aan te doen.

Start nu!
Google Get started!

Geen enkel script is perfect of geheel future-proof. Google Ads heeft geen ingebouwd notificatie systeem die je een mail stuurt wanneer er iets misgaat. Daarom is dit patroon gecreëerd zodat je zonder extra moeite een veilig script kunt maken.

Instructies:

Plaats je script logica in master() in plaats van in de main() functie. De main functie wordt gebruikt voor een try/catch die alle onverwachtse errors opvangt en vervolgens de email notificatie functie runt. Je kunt dus eenvoudig je huidige script kopiëren en plakken in de nieuwe master functie. Je kunt eigen errors in de err() functie stoppen, dan worden deze automatisch gegroepeerd en naar je gemaild. Als extra opties kun je dit ook met update messages doen, dit kan handig zijn in sommige gevallen maar voor andere script kan dit teveel worden. Overige instructies staan bovenin het script:

  • add your logic to master() instead of main()
  • add your logs to msg() instead of console.log()
  • add your (custom) error messages to err()
  • messages, errors and execution errors will be automatically emailed
  • enter email address in config variable
  • set sendMessages true if you want to receive update mails, errs always be sent
The script
/*
 * @name Google Scripts Safety Pattern
 *
 * @author Bas Baudoin
 *
 * @version v1 2022-09-24
 *
 * @instructions
 *  - add your logic to master() instead of main()
 *  - add your logs to msg() instead of console.log()
 *  - add your (custom) error messages to err()
 *  - messages, errors and execution errors will be automatically emailed
 *  - enter email address in config variable
 *  - set sendMessages true if you want to receive update mails, errs always be sent
 */

const config = {
  email: 'bas@example.com',
  sendMessages: false,
}

function master() {
  // add your script logic here
}

// --- start safety logic ---
let msgs = []
let errs = []

function main() {
  try {
    master()
  } catch(e) {
    err(`Main catch: ${e}`)
  }
  handleMessages()
}

function handleMessages() {
  const accountName = AdsApp.currentAccount().getName()
  const errBody = errs.join('\n- ')
  const errSubject = `Errors in script: ${accountName}`
  console.log(`⏩ Sending error mail to ${config.email}`)
  MailApp.sendEmail(config.email, errSubject, errBody)
  
  if (!config.sendMessages || msgs.length === 0) return console.log('⏩ Skipping sending msgs')
  const msgBody = msgs.join('\n- ')
  const msgSubject = `Script updates: ${accountName}`
  console.log(`⏩ Sending update message mail to ${config.email}`)
  MailApp.sendEmail(config.email, msgSubject, msgBody)
}

function err(errMsg) {
  console.log('❌', errMsg)
  errs.push(errMsg)
}

function msg(msg) {
  console.log('⏩', msg)
  msgs.push(msg)
}
// --- end safety logic ---
Show whole script!
Loading Comments
The Experts
Tibbe van Asten Team Lead Performance Marketing
Nils Rooijmans Water Cooler Topics
Martijn Kraan Freelance PPC Specialist
Bas Baudoin Teamlead SEA @ Happy Leads
Jermaya Leijen Digital Marketing Strategist
Krzysztof Bycina PPC Specialist from Poland
How about you? JOIN US!
Sharing Knowledge
Caring

Adsscripts.com staat voor het delen van kennis. In de huidige markt houden SEA-specialisten de kennis en ervaring graag voor zich. Wij zijn er van overtuigd dat het delen van kennis ervoor kan zorgen dat iedereen beter wordt in haar of zijn werk. Daarom lopen wij hier graag in voorop, door onze kennis over scripts te delen met iedereen.

Wil jij ook graag een bijdrage leveren? Wij staan open voor nieuwe ideeën en feedback op alles wat je op Adsscripts.com vindt.

Neem contact op

Training &
Workshop
Neem contact op!
Adsscripts Training & Workshop