Il trigger viene creato per me ma non per tutti gli altri che utilizzano lo script
Errore imprevisto con il metodo create sull'oggetto ScriptApp.ClockTriggerBuilder
Ho recentemente realizzato un componente aggiuntivo per Spreadsheet dove è prevista la creazione automatica di un trigger basato sul tempo. Ho testato e ritestato l'add-on prima della pubblicazione nel G Suite Marketplace senza riscontrare alcuna anomalia, il componente funzionava correttamente come previsto.
Tuttavia una volta installato su altri account Google ho avuto una spiacevole sopresa, ovvero l'applicazione si fermava a un certo punto che poi ho rilevato essere il momento della creazione di un trigger in modo programmatico.
IL PROBLEMA
L'errore su Stackdriver Logging citava quanto segue:
Exception: Errore imprevisto durante il recupero del metodo o della proprietà create sull'oggetto ScriptApp.ClockTriggerBuilder
La documentazione non riporta alcuna informazione a riguardo e a niente sono serviti i vari tentativi di adeguamento del codice o approcci diversificati per l'ottenimento dello stesso risultato.
Alla fine il problema era più ostico da trovare di quanto potessi immaginare e allo stesso tempo semplice da risolvere più di qualsiasi altra tipologia di bug potesse trovarsi nel codice.
Il motivo per il quale questo errore si presenta non è documentato, tuttavia a causarlo è stata l'attivazione automatica del nuovo runtime Apps Script basato su Chrome V8. Molto probabilmente un conflitto dovuto a questa nuova funzionalità.
LA SOLUZIONE
È stato sufficiente disattivarla!
Dal menu Esegui --> Disattiva il nuovo runtime Apps Script basato su Chrome V8
Verrà visualizzato il messaggio di conferma "Future executions of this project will run with Apps Script Legacy". A questo punto, aggiornando la versione dello script e ripubblicandolo nello store il problema è magicamente scomparso.
Spero che questo articolo possa risolvere qualche grattacapo a qualcuno perché, in questi casi, è facile perdersi alla ricerca di problemi al codice che in realtà non esistono.
[UPDATE 16/12/2020]
In alternativa, è possibile trasformare un progetto dal runtime V8 a Rhino (ES5_DEPRECATED). Allo scopo ringrazio Marko Colombo, utente del gruppo su Facebook 'Fatti di Apps Script', che ha creato un'applicazione disponibile su GitHub.
Il suo consiglio è avere una copia del progetto in ES6 (V8) e una in ES5 (Rhino), a quel punto lavorare sulla prima versione e mano a mano copiare il codice sulla seconda.
Non ci sono commenti
Nessuno ha ancora commentato questo articolo, fallo tu per primo!
scrivi un commento