我有8个左右不同的.gs文件组成了#34; Google Sheet"
我一直想知道的是,我在这些不同的.gs文件中可能有50-100个不同的功能。
将UiApp定义为Global Scoped似乎要容易得多。所以我的代码的前两行是:
var ss = SpreadsheetApp.getActiveSpreadsheet();
myapp = UiApp.createApplication().setTitle('HMC UI Demo').setHeight(600).setWidth(950);
定义' myapp'曾在全球范围内反对定义
var myapp = UiApp.createApplication().setTitle('HMC UI Demo').setHeight(600).setWidth(950);
在主要的doGet函数中然后
var myapp = UiApp.getActiveApplication();
在每个单独的功能中。
我只是想知道,因为我很少看到任何未在每个单独函数中定义的示例,但是这些示例中的大多数仅由几个函数组成。
任何帮助都会受到赞赏,我从来没有用脚本语言写过这样的东西,而且我发现我的主要障碍之一就是执行的速度。我的用户界面运行得太慢,这反过来又会使测试任何更改变得非常耗时。
答案 0 :(得分:0)
我会继续全球定义(这就是我的工作)。运行这两行的时间很短,可以防止代码重复。当我调用函数时,这也省去了传递这些变量的麻烦。
如果您以后需要更改标题,则不必为HMC UI Demo
的所有文件进行搜索。
编辑:我实际上只在全局范围内编写var app;
。然后我在app = UiApp.createApplication();
函数中使用doGet(e)
。在服务器处理程序中,我将使用app = UiApp.getActiveApplication();
。我可能会过度使用全局变量,但它会使配置更改变得更加容易。
答案 1 :(得分:0)
我认为无论程序有多大,GAS都会运行缓慢。对于我的应用程序脚本,我需要在本地范围内使用我的UiApp,因为我正在创建多个GUI。
如果您只有一个GUI(并且您认为它会保持这种状态),那么全局定义它。
否则,如果您认为自己正在创建其他框(可能是另一个Dialog或Console?),那么请保留所有本地作用域并返回myapp
编辑:我认为Fred对改变你的UiApp的属性有一个很好的观点