将UiApp函数包装在库中

时间:2012-09-08 19:24:50

标签: google-apps-script

我正在使用各种包装函数向UiApp添加小部件,如下面的示例

function newButton(text, handler, callBack) {
  var app = UiApp.getActiveApplication();
  return app.createButton(text).addClickHandler(app.createServerClickHandler(handler).addCallbackElement(callBack));
}
  • 在同一个脚本(如下面的

    )中使用时效果很好

    panel.add(newButton(“提交”,“myHandler”,面板));

  • 但是当在库中包含newButton函数(例如myLib)并且它被称为myLib.newButton时,我会收到一个错误: “遇到错误:未知的宏myLib.myHandler”

    panel.add(myLib.newButton(“提交”,“myHandler”,面板));

任何避免此问题的方法,同时将myHandler保留在当前脚本中(而不是在myLib中)? 谢谢,福斯托

1 个答案:

答案 0 :(得分:1)

是的,它可以。 在当前脚本中(其中您导入了对库的引用) 创建

function myLib.myHandler(){
}

当你的处理程序(字符串)继续传递名称'myHandler'时。上面的函数将由库脚本中创建的按钮调用。

似乎应用程序脚本正在使用此命名空间结构来避免名称冲突。

你应该记住,谷歌可能故意不记录这个原因。也许这种现有结构将来可能会改变。或者也许我只是偏执狂; - )