全局定义UiApp变量? - 效率(Google Apps脚本)

时间:2014-04-08 11:01:10

标签: google-apps-script google-sheets google-drive-api

我有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();

在每个单独的功能中。

我只是想知道,因为我很少看到任何未在每个单独函数中定义的示例,但是这些示例中的大多数仅由几个函数组成。

任何帮助都会受到赞赏,我从来没有用脚本语言写过这样的东西,而且我发现我的主要障碍之一就是执行的速度。我的用户界面运行得太慢,这反过来又会使测试任何更改变得非常耗时。

2 个答案:

答案 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的属性有一个很好的观点