首页 > 解决方案 > 对 Google 脚本中的函数的 HTTP 请求

问题描述

由于我对 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]);
}

另外,我认为我的脚本也是错误的,但我更担心如何实际建立联系。

标签: google-apps-scriptgoogle-sheetsweb-applicationsluahttprequest

解决方案


回答:

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

更多信息:

来自有关网络应用程序的 Google 文档:

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

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

修改你的脚本:

为了允许您的脚本接受 URL 参数,您必须首先修改您的代码,以便对HTTP GET请求进行处理。您可以使用 Apps ScriptdoGet()函数和 event 参数执行此操作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 Appname提供了值为 的参数20。该doGet(e)函数从中读取e.parameter.name它并将其发送到您的callName(name)函数以进行处理和执行。

参考:


推荐阅读