【发布时间】:2021-02-10 17:49:24
【问题描述】:
我有一个 Google 表单,允许用户编辑之前提交的回复。第一次提交表单时,我将时间戳、序列号和技术捕获为变量,并将它们作为聊天通知推送到松弛通道,同时将所有响应写入电子表格。我正在为该函数使用 onFormSubmit 触发器。这部分效果很好。
有些字段不是必需的,但稍后通过编辑表单响应来填写。编辑和提交表单时,序列号和技术字段不会更改。电子表格会相应更新,但对于松弛通道通知,唯一具有数据的变量是时间戳。由于表单上的这些字段未更改,因此序列号和技术为空白。如何使用我的 slack 通知的预先存在的表单响应为序列和技术创建变量?
我当前的代码检查技术值是否为空,如果不为空,它会发送一个松弛通知。如果它是空白的,它什么也不做。如果它是空白的,我希望它将现有的表单响应捕获为一个数组,我可以使用这些值来创建一个显示相同数据的松弛通知,但包括原始表单已使用预先存在的值重新提交.
我是编码新手,已经研究和测试了一个多星期,但没有任何结果。
var timestamp = 'Timestamp' //type exact column header as shown in workbook
var tech = 'Troubleshooting Tech' //type exact column header as shown in workbook
var parts = 'Part(s)# Ordered' //type exact column header as shown in workbook
var serial = 'Serial #' //type exact column header as shown in workbook
var slackWebHook = '' //Paste Slack webhook here
function SendSlackMessageEvent(e) {
const ss = SpreadsheetApp.getActive();
let data = e.namedValues
let payload = buildAlert(data);
if (data[tech] == '') {
}
if (data[tech] != '') {
sendAlert(payload);
}
}
function buildAlert(data) {
let timestampe = data[timestamp];
let teche = data[tech];
let seriale = data[serial];
let partse = data[parts];
let payload = {
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": ":bell: *Breakfix Ticket Submitted* :bell:"
}
},
{
"type": "divider"
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": teche + " submitted a ticket on " + timestampe
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "Serial #: " + seriale
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "Parts Needed: " + partse
}
}
]
};
return payload;
}
function sendAlert(payload) {
// const webhook = ""; //Paste your webhook URL here
const webhook = slackWebHook; //slack webhook URL
var options = {
"method": "post",
"contentType": "application/json",
"muteHttpExceptions": true,
"payload": JSON.stringify(payload)
};
try {
UrlFetchApp.fetch(webhook, options);
} catch(e) {
Logger.log(e);
}
}
【问题讨论】:
-
欢迎来到Stack Overflow。您的代码是否完整(
tech未声明)? -
我在代码中添加了声明。我没有使用数据 [1] 之类的时间戳作为索引,而是使用电子表格中的标题。
标签: javascript arrays google-apps-script google-sheets google-forms