JavaScript, HTML, CSS e... !
0 commenti

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.

Tags

Michele Pisani

Michele Pisani

Sviluppatore Javascript ed esperto in Digital Analytics

L'esperienza nel settore Digital Analytics unita ad anni di sviluppo in Javascript ha trovato la massima espressione in Google Apps Script che mi ha permesso, con estrema facilità e poche righe di codice, di realizzare potenti applicazioni interattive e processi automatizzati integrati con i prodotti della G Suite.

Come contattarmi
scrivi un commento

0 Commenti

Non ci sono commenti

Nessuno ha ancora commentato questo articolo, fallo tu per primo!

scrivi un commento

Scrivi un commento

Il tuo indirizzo email non sarà pubblicato.I campi contrassegnati da un * sono obbligatori
Puoi utilizzare i seguenti tag nei commenti:
[bold]testo[/bold] se vuoi evidenziare un testo con il grassetto[code]function helloworld() { }[/code] se vuoi pubblicare una porzione di codice[url]https://www.appsscript.it[/url] se devi riferirti ad un indirizzo web