[google-apps-script] Come posso testare una funzione trigger in GAS?


Answers

Aggiornamento 2017: esegui il debug degli oggetti Event con Stackdriver Logging per Google Apps Script. Dalla barra dei menu dell'editor di script, View > Stackdriver Logging : View > Stackdriver Logging per visualizzare o eseguire lo streaming dei log.

console.log() scriverà messaggi di livello DEBUG

Esempio su Edit () :

function onEdit (e) {
  var debug_e = {
    authMode:  e.authMode,  
    range:  e.range.getA1Notation(),    
    source:  e.source.getId(),
    user:  e.user,   
    value:  e.value,
    oldValue: e. oldValue
  }

  console.log({message: 'onEdit() Event Object', eventObject: debug_e});
}

Esempio onFormSubmit () :

function onFormSubmit (e) {
  var debug_e = {
    authMode:  e.authMode,  
    namedValues: e.namedValues,
    range:  e.range.getA1Notation(),
    value:  e.value
  }

  console.log({message: 'onFormSubmit() Event Object', eventObject: debug_e});
}

Esempio onChange () :

function onChange (e) {
  var debug_e = {
    authMode:  e.authMode,  
    changeType: changeType,
    user:  e.user
  }

  console.log({message: 'onChange() Event Object', eventObject: debug_e});
}

Quindi controlla i log nell'interfaccia utente di Stackdriver etichettati come stringa del message per vedere l'output

Question

Google-apps-script supporta i Triggers che passano gli Events per attivare le funzioni. Sfortunatamente, l'ambiente di sviluppo ti permetterà di testare le funzioni senza passare dei parametri, quindi non puoi simulare un evento in questo modo. Se ci provi, ottieni un errore del tipo:

ReferenceError: 'e' is not defined.

Si potrebbe trattare l'evento come un parametro facoltativo e inserire un valore predefinito nella funzione di trigger usando una delle tecniche da " Esiste un modo migliore per eseguire parametri di funzione facoltativi in ​​Javascript? ". Ma questo introduce il rischio che un programmatore pigro (mani in alto se sei tu!) Lascerà quel codice dietro, con effetti collaterali non voluti.

Sicuramente ci sono modi migliori?






Related