google-apps-script - 从谷歌表单提交的 API 调用中制作自定义函数更新单元格
问题描述
我创建了一个链接到谷歌表格的谷歌表单。提交后,表单中的数据会更新链接工作表中的 AD 列。现在我想要一个自定义脚本在提交时调用外部 API 并将数据从响应写入 E 列。我正在尝试调用天气 API 以便在用户提交表单时记录天气数据。
下面是我用来从公共 METAR API 获取温度的函数,当我从打开的谷歌工作表文档中的单元格调用它时,它工作正常。我无法从谷歌文档中得到的是如何在表单提交时触发它并将其链接到 E 列和当前表单答案行。据我了解,不可能从单元格调用此函数,我需要以某种方式在脚本中引用单元格位置(触发脚本的行 + 列 E)?
function GetMETAR() {
var url = 'https://avwx.rest/api/metar/KJFK?options=&format=json&onfail=cache';
var response = UrlFetchApp.fetch(url, {'muteHttpExceptions': true});
var json = response.getContentText();
var data = JSON.parse(json);
var tempr = data.temperature.value;
return tempr;
}
解决方案
尝试这个:
function GetMETAR(name,cell) {
var name=name || 'Sheet2';//if you don't want to use the parameters you can set these defaults
var cell=cell || 'B4';
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName(name);
var rg=sh.getRange(cell);
var url = 'https://avwx.rest/api/metar/KJFK?options=&format=json&onfail=cache';
var response = UrlFetchApp.fetch(url, {'muteHttpExceptions': true});
var json = response.getContentText();
var data = JSON.parse(json);
var tempr = data.temperature.value;
rg.setValue(tempr);//cell that you want the data to go to.
}
推荐阅读
- javascript - ReactJS:TypeError:无法读取未定义的属性“项目”
- amazon-web-services - 如何通过 CLI 终止 AWS 中的多个 EC2 实例?
- pine-script - 无法使用参数调用“交叉”(系列 [浮点],hline);可用重载:crossover(series[float], series[float]) => series[bool]
- python - 简化熊猫数据框中的多种数据组合
- node.js - 以firebase为后端的计算时间
- c - c sockets sendmsg MSG_DONTWAIT - 缓冲区重用
- macos - 使用 leveldb 构建 erlang 项目时出错
- python-3.x - RRelief 特征选择,使用来自 skrebate 的 multisurf
- python - 为什么 super(SubPerson, SubPerson).name.__set__(self, value) 在描述符中调用 GETTER。(不是二传手)
- python - 网络服务器只向客户端发送一次数据而不是循环