使用命名空间函数调用 google.script.run
Calling google.script.run with Namespace Functions
我一直在将一个旧的 javascript 项目迁移到 GAS,但在尝试从客户端 Web 应用程序 运行 命名空间函数时遇到障碍。快速代码示例:
var foo = function() {
function doBar() {
//do stuff
}
function doBang() {
//do stuff
}
return {
bar:doBar,
bang:doBang
}
}();
虽然这很容易通过 foo.bar()
在服务器端调用,但我在尝试从我的 Web 应用程序调用这些功能时遇到了困难。我希望做这样的事情:
<script>
google.script.run.withSuccessHandler(callback).foo.bar();
function callback() {
//do stuff
}
</script>
但是,唉,这似乎行不通。是否有我遗漏的东西,或者另一种方法可以在没有某种形式的处理函数的情况下使它工作,不包含在命名空间中,它传递到我的命名空间?
由于这是一个项目迁移,我有一个结构良好但庞大的命名空间集;这将需要一个非常长且健壮的处理器函数,所以我想尽可能避免这样做。
您需要该处理函数。如果您添加点,Apps 脚本无法理解您正在调用 server-side 函数,因此您会收到此错误:
TypeError: Cannot read properties of undefined (reading 'bar')
功能请求:
如果您希望实现此功能,我建议您使用 this Issue Tracker template 请求此功能。
我一直在将一个旧的 javascript 项目迁移到 GAS,但在尝试从客户端 Web 应用程序 运行 命名空间函数时遇到障碍。快速代码示例:
var foo = function() {
function doBar() {
//do stuff
}
function doBang() {
//do stuff
}
return {
bar:doBar,
bang:doBang
}
}();
虽然这很容易通过 foo.bar()
在服务器端调用,但我在尝试从我的 Web 应用程序调用这些功能时遇到了困难。我希望做这样的事情:
<script>
google.script.run.withSuccessHandler(callback).foo.bar();
function callback() {
//do stuff
}
</script>
但是,唉,这似乎行不通。是否有我遗漏的东西,或者另一种方法可以在没有某种形式的处理函数的情况下使它工作,不包含在命名空间中,它传递到我的命名空间?
由于这是一个项目迁移,我有一个结构良好但庞大的命名空间集;这将需要一个非常长且健壮的处理器函数,所以我想尽可能避免这样做。
您需要该处理函数。如果您添加点,Apps 脚本无法理解您正在调用 server-side 函数,因此您会收到此错误:
TypeError: Cannot read properties of undefined (reading 'bar')
功能请求:
如果您希望实现此功能,我建议您使用 this Issue Tracker template 请求此功能。