javascript - 如果编辑的列值与特定文本(如发送或是)匹配,则从 Google 电子表格发送 Slack 消息 onEdit 触发器
问题描述
我有以下应用程序脚本,用于通过 Google 电子表格在编辑触发器上发送 Slack 消息。我对编码完全陌生,但有一点理解,所以,我研究并想出了这段代码。该脚本正在运行,我正在接收松弛消息,但故障是我无法将行值存储在数组中并将它们传递到 Slack 有效负载中。
我的要求是,如果我编辑特定列,假设我从下拉列表中选择或键入“发送”或“是”,我想将该编辑行的所有或部分列值传递到我的 Slack 消息中。
我知道下面的代码中缺少一些东西,根据我的理解,我不需要 i++ 的东西。但是,我无法修复它。此外,如果我们可以在消息发送到 Slack 后添加一些内容,将编辑的单元格值重置为“否”或“刷新”。如果你能帮助我处理这段代码,这是我对你们的谦卑要求。
只是为了让自己更清楚 - 我想知道如何将编辑单元格 onedit 的行数据发送到松弛。即我们如何在同一行的特定单元格编辑上发布行数据。我希望这可以澄清。
function sendApplicationDetails() {
// select the range from the Summary sheet
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Database");
var lastRow = sheet.getLastRow();
var range = sheet.getRange(2,1,lastRow-1,61).getValues();
// loop over range and send communication if "Yes" option chosen
for (var i = 0; i < range.length; i++) {
if (range[i][59] == "Yes") {
// post message to slack
sendToSlack(range[i]);
break;
}
};
}
// function to send message to Slack
function sendToSlack(range) {
var timestamp = new Date();
var url = "Slack Webhook";
var payload = {
"text": "Hi " + range[31] +
"\n Here are the details. Let us know if you have any questions! \n" +
"\n Student Name: " + range[15] +
"\n Nationality: " + range[16] +
"\n Chosen Country: " + range[21] +
"\n Preferred Course: " + range[22] +
"\n Date: " + timestamp
};
var options = {
"method": "post",
"contentType": "application/json",
"payload": JSON.stringify(payload)
};
return UrlFetchApp.fetch(url,options);
}
解决方案
试试这个并删除您手动创建的触发器。
function onEdit (e) {
var sheetToWatch = 'Database';
var colToWatch = 60;
if (e.range.getSheet().getName() == sheetToWatch
&& e.range.getColumn() == colToWatch) {
sendApplicationDetails()
}
}
function sendApplicationDetails() {
// select the range from the Summary sheet
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Database");
var lastRow = sheet.getLastRow();
var range = sheet.getRange(2,1,lastRow-1,61);
var values = range.getValues();
// loop over range and send communication if "Yes" option chosen
for (var i = 0; i < values.length; i++) {
if (values[i][59] == "Yes") {
// post message to slack
sendToSlack(values[i]);
sheet.getRange(i+2,60).setValue('No')
}
}
}
// function to send message to Slack
function sendToSlack(range) {
var timestamp = new Date();
var url = "Slack Webhook";
var payload = {
"text": "Hi " + range[31] +
"\n Here are the details. Let us know if you have any questions! \n" +
"\n Student Name: " + range[15] +
"\n Nationality: " + range[16] +
"\n Chosen Country: " + range[21] +
"\n Preferred Course: " + range[22] +
"\n Date: " + timestamp
};
var options = {
"method": "post",
"contentType": "application/json",
"payload": JSON.stringify(payload)
};
return UrlFetchApp.fetch(url,options);
}
推荐阅读
- python - Python:Graph、DFS、set、defaultdict - 更改字典大小时出错
- mongodb - how to get a mongo collection with a restful api
- scala - 在 intelliJ 2018.1.4 中创建一个 sbt 项目
- yaml - Flink config 自定义 jar 报告器到 yaml,并通过 JMX 控制台连接主机
- r - 如何在 R 中创建包含表格单元格中的 pch 样式符号的表格图形?
- scala - 为什么以及何时需要“隐含”
- redis - Redis 排序集可变参数排行榜
- go - 仅二进制库不包括依赖项
- python - 查找原始特征对用作内核 PCA 输入的主成分的影响
- r - 将R列表作为宏带入Stata?