google-apps-script - 谷歌应用脚本从电子表格值构造 URL 并执行它
问题描述
我基本上是在电子表格上创建一个 CRM,该电子表格由谷歌表单填充。每次有新条目时,我想通过调用回发 URL 来通知外部服务器。因此必须从新条目(最后一行)的电子表格单元格中获取 URL 参数,然后执行。像这样的东西: http://www.myserver.com/script.php?value1=[lastrow.cell1]&value2=[lastrow.cell2] ....
然后我需要调用 URL。
你会如何编码?
我猜这个脚本可以在电子表格上创建新行时触发。
解决方案
您可以使用Installable Triggers和UrlFetchApp.fetch()自动将表单提交到电子表格,然后向服务器发送包含表单值的 HTTP 请求。
这是您将如何做的一个示例(根据您自己的表格问题调整它):
// Installable trigger function
function formSubmit(e) {
// Take values from the form submitted
var channelResp = e.namedValues["Channel"];
var question1 = e.namedValues["Question 1"];
// Get values form Parameters sheet
var ss = SpreadsheetApp.getActiveSpreadsheet();
var parametersSheet = ss.getSheetByName("Parameters");
var parametersArray = parametersSheet.getRange("A2:B4").getValues();
try {
// Verify if the value in channel was well submitted and search for it
var [channel, variable] = parametersArray.find(element => element[0] == channelResp);
// Build the params with your form's answers
var params = `value1=${question1}&value2=${variable}`;
// Add the params to your url
var url = `http://www.myserver.com/script.php?${params}`;
// Make the request
UrlFetchApp.fetch(url);
} catch(e) {
// Throw an exception if the value in channel was not well-submitted
// Or there was an HTTP error
Logger.log(e);
}
}
请注意,它e
表示Event Object Form Submit。现在,要设置可安装触发器,请执行以下操作:
1) 转到您的 Apps 脚本项目
2)点击编辑->当前项目的触发器
3)点击“+添加触发器”
4) 选择:
选择要运行的函数 ->函数名称
选择事件源-> 从电子表格
选择事件类型 -> 提交表单
5) 点击保存
限制
请记住可安装触发器的限制
如果您将服务器作为本地服务器执行,则UrlFetchApp 类将不起作用,因为它将无法访问它。
推荐阅读
- mips - Mips 程序未打印正确的字符串
- r - 在R中按名称选择多个列
- excel - Excel VBA - 如果列中的时间/日期超过 6 小时,则移动行
- go - 如何创建由另一个组成的结构
- haskell - How to filter Hakyll posts with a custom metadata
- cordova - Cordova 应用程序在启动时会打开一个外部 URL
- php - 从外部访问 php 文件时出现 404 错误
- javascript - 导入很多东西是否被认为是特定于 React 的东西?
- pandas - 按数据类型选择 pandas 列
- c++ - 如何创建 operator*(double) 以在左侧和右侧进行乘法运算?