【问题标题】:HTTP Request to a function in Google Scripts对 Google Script 中函数的 HTTP 请求
【发布时间】:2020-04-14 22:47:43
【问题描述】:

由于我完全没有使用 HTTP 请求和 Google 脚本的经验,所以我很难理解它。

所以,我的问题如下:

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

所以,我的问题是:我的 lua 脚本(此时仅允许我访问 HTTP 请求)如何连接到如下所示的特定函数?

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 应用或可执行 API?
  • @Cooper,就像我说的,我真的不知道 Google 脚本是如何工作的,所以我认为没有?我用函数制作了脚本,就是这样
  • 你想从哪里运行这个脚本
  • 我可以从电子表格正常运行它,但我希望它可以从谷歌界面之外访问,更具体地说是通过 Lua 脚本

标签: google-apps-script google-sheets web-applications lua httprequest


【解决方案1】:

答案:

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

更多信息:

来自关于网络应用的 Google 文档:

如果您为脚本构建用户界面,您可以将脚本发布为 Web 应用程序。例如,让用户安排与支持团队成员约会的脚本最好以 Web 应用程序的形式呈现,以便用户可以直接从浏览器访问它。

但是,即使不构建用户界面,您也可以使用此功能通过 HTTP 请求在工作表上运行脚本。

修改你的脚本:

为了让您的脚本能够接受 URL 参数,您必须首先修改您的代码,以便对 HTTP GET 请求进行处理。您可以使用 Apps 脚本 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]);
}

设置网络应用程序:

在 Apps 脚本用户界面中,按照 Publish > Deploy as web app... 菜单项,在新打开的模式窗口中,您需要选择以下设置:

  • 项目版本:New
  • 执行应用程序为:我 (your-email@address.here)
  • 谁有权访问该应用:任何人,甚至是匿名的

然后点击Deploy。在这里,您将获得一个采用以下形式的新的较小模式的 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 App 提供了参数name,其值为20doGet(e) 函数从 e.parameter.name 读取此信息并将其发送到您的 callName(name) 函数以进行处理和执行。

参考资料:

【讨论】:

  • Ty Rafa,我的主要问题是没有意识到脚本不能同时作为 API 和 WebApp 工作,只要我这样发布它,据我所见,我正在访问电子表格,而不是脚本本身。泰!但是,是否可以在从外部调用时仅在 WebApp 内执行某个功能,还是必须将逻辑从 Lua 脚本移至脚本的 doGet 函数?
猜你喜欢
  • 1970-01-01
  • 2018-09-15
  • 1970-01-01
  • 1970-01-01
  • 2016-10-14
  • 2021-06-05
  • 2021-10-16
  • 2017-11-09
  • 2021-04-11
相关资源
最近更新 更多