J'ai créé une application Web publique avec accès à mes données de feuille de calcul privée. Je peux intercepter et enregistrer des exceptions danstry..catch
, mais:
window.onerror
?Ce sont des questions si simples, donc je suis un peu confus de les poser, mais après des heures de recherche, je n'ai pas pu trouver les réponses.
Merci d'avance.
Ce sont des problèmes qui sont en cours de résolution. Actuellement, dans le programme d'accès anticipé aux scripts d'applications, deux nouveaux ajouts gèrent ces cas. Le premier est l'intégration native avec la journalisation stackdriver et l'ajout de google.script.run.withLogger()
.
Tout d'abord, pour l'instant, vous devez demander le PAE:
https://developers.google.com/apps-script/guides/apps-script-eap
Pour vous connecter à stackdriver, l'objet console
a été ajouté côté serveur.
code.gs
console.log('This will log to stackdriver')
Consultez la documentation pour toutes les méthodes de console
.
https://developers.google.com/apps-script/guides/logging#stackdriver_logging
Exemple de la documentation:
function measuringExecutionTime() {
// A simple INFO log message, using sprintf() formatting.
console.info('Timing the %s function (%d arguments)', 'myFunction', 1);
// Log a JSON object at a DEBUG level. The log is labeled
// with the message string in the log viewer, and the JSON content
// is displayed in the expanded log structure under "structPayload".
var parameters = {
isValid: true,
content: 'some string',
timestamp: new Date()
};
console.log({message: 'Function Input', initialData: parameters});
var label = 'myFunction() time'; // Labels the timing log entry.
console.time(label); // Starts the timer.
try {
myFunction(parameters); // Function to time.
} catch (e) {
// Logs an ERROR message.
console.error('myFunction() yielded an error: ' + e);
}
console.timeEnd(label);
}
De plus, vous pouvez également vérifier Log Exceptions
Dans les propriétés des scripts. Cela générera une entrée stackdriver chaque fois qu'une erreur se produit dans votre script.
Pour récupérer dans une application web après un échec, vous avez accès à la méthode withFailureHandler()
trouvée dans l'objet google.script.run
. Avec cela, vous pouvez enregistrer un rappel dans le cas où votre script frappe une exception.
La documentation complète se trouve à l'adresse suivante:
https://developers.google.com/apps-script/guides/html/reference/run
Si vous effectuez des vérifications côté serveur avec try...catch
, Vous obtenez peut-être une exception mais vous la gérez avec élégance. Dans ce cas, withFailureHandler () ne s'exécutera pas et onSuccessHandler () n'est probablement pas le meilleur endroit pour gérer les erreurs. Dans l'EAP, il existe désormais une méthode withLogger
pour google.script.run
. Pour l'instant il n'y a pas de documentation pour google.script.run.withLogger()
. Je l'ai trouvé en fouillant dans devtools. withLogger()
vous permet d'enregistrer une fonction comme rappel chaque fois qu'une entrée de driver de pile est créée. Ceci est particulièrement utile lorsque vous avez log exceptions
Archivé les propriétés de votre script. En ce sens, c'est un peu comme withFailureHandler()
mais il peut être déclenché par n'importe quelle entrée de stackdriver que vous ajoutez via l'objet console
côté serveur.
index.html
<script>
google.script.run
.withSuccessHandler(function(){console.log('OK')})
.withFailureHandler(function(e){console.error(e)})
.withLogger(function(e){console.warn("The following log was generated:"+e)})
.serverFunctionCall();
</script>
code.gs
function serverFunctionCall(){
console.log("This log will generate a callback");
return true;
}