He estado migrando un antiguo proyecto de javascript a GAS y estoy golpeando un bloqueador al intentar ejecutar funciones de espacio de nombres desde la aplicación web del lado del cliente. Ejemplo de código rápido:
var foo = function() { function doBar() { //do stuff } function doBang() { //do stuff } return { bar:doBar, bang:doBang } }(); Si bien esto sería fácil de llamar en el lado del servidor a través de foo.bar() , me he topado con una pared al tratar de hablar con estas funciones desde mi aplicación web. Esperaba hacer algo como esto:
<script> google.script.run.withSuccessHandler(callback).foo.bar(); function callback() { //do stuff } </script>Pero, por desgracia, esto no parece funcionar. ¿Hay algo que me falta u otra forma de hacer que esto funcione sin tener algún tipo de función de controlador, no contenida en un espacio de nombres, que pasa a mis espacios de nombres?
Como se trata de una migración de proyecto, tengo un conjunto de espacios de nombres muy bien estructurado pero enorme; Esto requeriría una función de manejador muy larga y robusta, por lo que me gustaría evitar hacerlo si es posible.
Necesitarías esa función de controlador. Apps Script no entiende que está llamando a una función del lado del servidor si agrega el punto, por lo que obtiene este error:
TypeError: no se pueden leer las propiedades de undefined (leyendo 'barra')
Le sugiero que solicite esta función utilizando esta plantilla de seguimiento de problemas , si desea que se implemente.