google-apps-script - 对 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]);
}
另外,我认为我的脚本也是错误的,但我更担心如何实际建立联系。
解决方案
回答:
您可以将脚本发布为 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)
函数以进行处理和执行。
参考:
推荐阅读
- python - 正则表达式在多个多行字符串python中查找列表值
- c++11 - 显式实例化,但在构建模板类使用的模板函数时没有可用的定义
- pandas - 我无法弄清楚我的代码有什么问题
- python - 通过使用 foreach 方法处理旧数据帧创建新的 pyspark 数据帧时出现 Pickle 错误
- mysql - Update json values by their key name
- spring - Spring Boot 微服务通信使用 Rest Template
- c# - 试图在单独的用户控件中将数据从一个变量传递到另一个变量
- javascript - 如何确保对象在猫鼬模式中没有相同的两个元素?
- plc - 如何将硬件输出分配给codesys中的变量?
- python - Pandas(Python)在按 MultiIndex 分组后得到一个 DataFrame 行