首页 > 解决方案 > 异步执行函数 App Script

问题描述

我一直在挖掘,但我找不到关于如何在 Google App Script 中使用异步函数的参考或文档,我发现人们提到它是可能的,但没有提到如何......

有人可以指出我正确的方向或提供一个例子吗?可以帮助我解决这个问题的承诺、回调或其他东西。

我有这个函数,让我们调用它foo需要一段时间才能执行(足够长,它可能会使 HTTP 调用超时)。

我想要做的是重构它,它的工作方式如下:

function doPost(e) {
    // parsing and getting values from e
    var returnable = foo(par1, par2, par3);
      return ContentService
             .createTextOutput(JSON.stringify(returnable))
             .setMimeType(ContentService.MimeType.JSON);
}

function foo(par1, par2, par3) {
    var returnable = something(par1, par2, par3); // get the value I need to return;

    // continue in an Async way, or schedule execution for something else
    // and allow the function to continue its flow
    /* async bar(); */

    return returnable;
}

现在我想意识到这一点,foo因为它需要很长时间而且我不想冒超时的风险,而且那里发生的逻辑完全是客户端独立的,所以没关系,我只需要返回值,我会得到之前。

另外,我认为值得一提的是,它作为网络应用程序部署在 Google Drive 中。

从那以后已经很久了,但是添加了一些上下文,当时我想安排几件事情发生在 Google Drive 上,并且它正在超时执行,所以我正在寻找一种安全安排工作的方法。

标签: asynchronousgoogle-apps-scriptweb-applicationspromisecallback

解决方案


  • 您想通过使用 Google Apps 脚本的异步处理来执行功能。
  • 您希望使用时间触发器运行具有异步处理的函数。

如果我的理解是正确的,不幸的是,没有直接实现它的方法和官方文档。但作为一种解决方法,这可以通过使用 Google Apps Script API 和 fetchAll 方法来实现,该方法可以通过异步处理工作。

此解决方法的流程如下。

  1. 部署 API 可执行文件,启用 Google Apps Script API。
  2. 使用 fetchAll,请求 Google Apps Script API 的端点以运行函数。
    • 当一次请求多个函数时,这些函数与 fetchAll 的异步处理一起工作。

笔记:

  • 我认为 Web Apps 也可以用来代替 Google Apps Script API。
  • 为了简单地使用这个解决方法,我创建了一个GAS 库。我认为你也可以使用它。
  • 在此解决方法中,您还可以使用时间触发器运行具有异步处理的函数。

参考:

如果我误解了你的问题,我很抱歉。


推荐阅读