【问题标题】:Is 'chaining' functions available in GAS?GAS 中是否提供“链接”功能?
【发布时间】:2012-05-30 17:46:29
【问题描述】:

是否可以“链接”功能?比如说,我有一个 serverclickhandler,然后想在它之后立即调用另一个函数。我该怎么办?

谢谢。

【问题讨论】:

  • 直接调用其他函数就可以了?
  • 我试过了,但我似乎无法得到想要的结果。我可以这样做吗?函数 soso(e) { var app = UiApp.createApplication(); //操纵app var和其他东西 //我可以在这里调用另一个函数吗?这个其他功能也需要操作活动应用程序以及返回应用程序; //或者我应该把函数调用放在这里? }
  • 我们从不对处理程序执行UiApp.createApplication();,您应该澄清您的问题,可能会添加一些代码。
  • 我只是想在想出一堆代码之前先探索一下这个想法。我想要的是在执行处理程序调用的函数后立即启动另一个函数,但我希望在第一个函数的内部或最后调用第二个函数。只是想知道这是否可行。如果“链接”令人困惑或不是正确的术语,我深表歉意。谢谢。

标签: google-apps-script


【解决方案1】:

要在第一个处理程序之后执行第二个处理程序,您只需直接从第一个处理程序调用它,例如

var app = null;
function firstHandler(e) {
  if( app == null )
    app = UiApp.getActiveApplication();
  //do your thing

  //now, instead "return app;" you return the second handler
  return secondHandler(e);
}

function secondHandler(e) {
  if( app == null )
    app = UiApp.getActiveApplication();
  //do your job
  return app;
}

我将app var 放置在全局范围内,因此您只能在必要时获取它(在函数之间共享它而不显式传递它),从而节省可能成本高昂且未知的行为(至少对我而言)一秒钟getActiveApplication() 来电。

【讨论】:

  • 谢谢迈克尔,我现在修好了。
【解决方案2】:

不确定我是否完全理解您的问题,但您所指的服务器处理程序正是为此而设计的......(see doc) 请注意,您可以为 UI 元素分配多个处理程序以触发不同的功能并最终将它们链接起来。

【讨论】:

  • 我了解多个处理程序分配。我的问题是:处理程序/函数是否连续运行? GAS 会在执行下一个函数之前等待第一个函数完成还是同步启动?谢谢你的回答,谢尔盖。
  • 好的。那回答了我的问题。链接,我设想的方式,在这种情况下是不可行的。谢谢恩里克。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-01-05
  • 2011-05-13
  • 1970-01-01
  • 1970-01-01
  • 2016-05-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多