mat*_*tbh 9 javascript function google-apps-script coffeescript
我想使用CoffeeScript 为Google Apps脚本编写Javascript脚本,而且我无法以预期的形式生成函数.
Google Apps脚本希望脚本包含顶级命名函数.(我可能使用了错误的术语,所以我将用例子说明我的意思......)
例如,Google Apps脚本可以很好地识别此功能:
function triggerableFunction() {
// ...
}
Run Code Online (Sandbox Code Playgroud)
...虽然这个函数不是(它会解析,但你不会触发它):
var nonTriggerableFunction;
nonTriggerableFunction = function() {
// ...
};
Run Code Online (Sandbox Code Playgroud)
我发现使用CoffeeScript,我能得到的最接近的是nonTriggerableFunction上面的表格.生成triggerableFunction如上所述的命名函数的最佳方法是什么?
我已经在使用'bare'选项(-b开关),在没有顶级功能安全包装的情况下进行编译.
我在网上找到的一个结合了CoffeeScript和Google App Script的项目是Gmail GTD Bot,它似乎是使用反向标记的组合,并要求用户从结果代码中手动删除一些行.(请参阅脚本末尾和README的"安装"部分).我希望有一个更简单,更清洁的解决方案.
And*_*nko 13
CoffeeScript不允许您隐式地在全局命名空间中创建任何内容; 但是,您可以通过直接指定全局命名空间来完成此操作.
window.someFunc = (someParam) ->
alert(someParam)
Run Code Online (Sandbox Code Playgroud)
事实证明,这可以通过为每个函数使用一行嵌入式 Javascript来完成。
例如这个 CoffeeScript:
myNonTriggerableFunction = ->
Logger.log("Hello World!")
`function myTriggerableFunction() { myNonTriggerableFunction(); }`
Run Code Online (Sandbox Code Playgroud)
...当使用“bare”选项(-b 开关)调用咖啡编译器时,将生成此 JavaScript:
var myNonTriggerableFunction;
myNonTriggerableFunction = function() {
return Logger.log("Hello World!");
};
function myTriggerableFunction() { myNonTriggerableFunction(); };
Run Code Online (Sandbox Code Playgroud)
通过上面的例子,Google Apps Script 可以myTriggerableFunction直接触发。
| 归档时间: |
|
| 查看次数: |
5353 次 |
| 最近记录: |