Google Scripts中对函数的HTTP请求

由于我对HTTP请求和Google脚本实际上没有经验,所以我有些困惑。

那么,我的问题如下:

我目前在尝试从我的lua脚本中获取信息并将它发送到google电子表格中。但是,Google电子表格保存信息的方式将取决于我调用和传递信息的Google脚本中的哪个函数。

所以,我的问题是:我的lua脚本(目前仅能访问HTTP请求)如何连接到下面这个特定的函数呢?

function callName(name) {

  // 获取最后一行并添加提供的名称
  var sheet = SpreadsheetApp.getActiveSheet();
  sheet.getRange(sheet.getLastRow() + 1,1).setValue([name]);
}

此外,我认为我的脚本也有错误,但我更担心如何实际进行连接。

点赞
用户11551468
用户11551468

回答:

您可以将脚本发布为 Web 应用程序,并使用 URL 参数将所需的信息传递给此脚本。

更多信息:

从有关 Web 应用程序的 Google 文档中:

如果为脚本构建用户界面,则可以将脚本发布为 Web 应用程序。例如,脚本让用户与支持团队成员预约会议的最佳方式是将其呈现为 Web 应用程序,以便用户可以直接从其浏览器中访问它。

但是,即使没有构建用户界面,您仍然可以利用 HTTP 请求使用此功能在工作表上运行脚本。

修改脚本:

为了允许您的脚本接受 URL 参数,您必须首先修改代码,以便在 HTTP GET 请求上执行处理。您可以使用 Apps Script doGet() 函数和事件参数 e 来完成这项工作:

function doGet(e) {
  callName(e.parameter.name);
}

function callName(name) {
  // Get the last Row and add the name provided
  var sheet = SpreadsheetApp.getActiveSheet();
  sheet.getRange(sheet.getLastRow() + 1,1).setValue([name]);
}

设置 Web 应用程序:

从 Apps Script 用户界面上,打开 发布 > 部署为 Web 应用程序... 菜单项,在新打开的模态窗口中,您将要选择以下设置:

  • 项目版本:新增
  • 执行应用程序:Me (your-email@address.here)
  • 谁可以访问应用程序:任何人,甚至匿名访问者

然后点击 部署。在此,您将获得一个 URL,格式为以下所示:

https://script.google.com/a/your-domain.com/macros/s/some-script-id/exec

进行请求:

剩余的部分现在非常简单 - 您可以向前面一步骤中的脚本 URL 进行 HTTP 请求,但必须提供所需的 URL 参数,以便为此应用程序提供要设置的值的信息。

例如,如果您想将值设置为数字 20,请如下发出您的 GET 请求:

GET https://script.google.com/a/your-domain.com/macros/s/some-script-id/exec?name=20

请注意,末尾的 ?name=20 给 Web 应用程序提供参数 name,并将其值设为 20doGet(e) 函数从 e.parameter.name 中读取此值,并将其发送到 callName(name) 函数进行处理和执行。

参考资料:

2020-04-15 07:56:30