Me gustaría escribir scripts Javascript para Google Apps Script usando CoffeeScript, y tengo problemas para generar funciones en la forma esperada.Cómo generar funciones javascript con nombre global, en coffeescript, para Google Apps Script
Google Apps Script espera que un script contenga funciones nombradas de alto nivel. (Puede que sea el uso de la terminología incorrecta, así que voy a ilustrar lo que quiero decir con ejemplos ...)
Por ejemplo, esta función está felizmente reconocido por Google Apps Script:
function triggerableFunction() {
// ...
}
... mientras que esta función no se encuentra (se analiza, pero no que no será capaz de desencadenar):
var nonTriggerableFunction;
nonTriggerableFunction = function() {
// ...
};
he encontrado que con CoffeeScript, el más cercano que soy capaz de conseguir es la nonTriggerableFunction
forma arriba. ¿Cuál es el mejor enfoque para generar una función nombrada como triggerableFunction
anterior?
Ya estoy usando la opción 'bare' (el interruptor -b
), para compilar sin la envoltura de seguridad de la función de nivel superior.
El único proyecto que he encontrado en la web que combina CoffeeScript y Google App Script es Gmail GTD Bot, que parece hacer esto usando una combinación de "back-ticks" y pidiendo al usuario que elimine manualmente algunas líneas del resultado código. (Consulte el final de script y la sección 'Instalación' del README). Estoy esperando una solución más simple y más limpia.
Eso no parece generar una función con nombre global. Esto es lo que produce, cuando se utiliza el parámetro -b: (function() { retorno this.triggerableFunction = (function() { función triggerableFunction (arg1, arg2) {} retorno triggerableFunction; })(); })(); – mattbh
¿Ejecutó el código en un navegador? La función es global porque está vinculada al contexto global. Y se llama: 'triggerableFunction.name ===" triggerableFunction "'.Por supuesto, no genera una declaración de función, pero creo que no es lo que se preguntó. – Adrien
El código se ejecutaba en el motor de Google Apps Script en lugar de en un navegador. De hecho, estaba preguntando cómo generar una declaración de función, que el motor de Google Apps Script parece requerir. La solución utilizada por 'gmail-gtd-bot' (usando back-ticks) funcionó para mí. – mattbh