当我的一些报告通过Gscript上的复选框触发器上传时,我一直试图自动发送消息。(Idea正在报告更新->用户选中复选框->消息被发送到松弛)
到目前为止,我已经能够创建脚本来发送消息,甚至在晚上重新设置我的复选框。我唯一的问题是扳机。
我在我的三个复选框(A1、B1、C1)上使用了A1作为触发器:
function onEdit(e) {
const as = e.source.getActiveSheet();
const cell = e.range.getA1Notation();
if(as.getName() == 'Sheet1' && cell.getRange('A1').ischecked() === true) {
SendSlackMessage1();
}
else if (as.getName() == 'Sheet1' && cell.getRange('B1').ischecked() === true) {
SendSlackMessage2();
}
else if (as.getName() == 'Sheet1' && cell.getRange('C1').ischecked() === true) {
SendSlackMessage3();
}}
作为参考,下面是发送消息的函数:
function SendSlackMessage1() {
const url = "https://hooks.slack.com/services/XXXXXXXXXXXXX";
const params = {
method: "post",
contentType: "application/json",
payload: JSON.stringify({
"text":"Report A has been uploaded"
})
}
const sendMsg = UrlFetchApp.fetch(url, params)
var respCode = sendMsg.getResponseCode()
Logger.log(sendMsg)
Logger.log(respCode)
}
(除了文本(Report A/B/C)之外,所有的SendSlackmessages函数都是相同的,我已经授权这些函数在google上运行。
所以很明显,我做错了什么,但是什么?我的第一个猜测是,我没有正确地定义e范围,但我不知道下一步该做什么。
如果有人能给我一个先发制人的机会或者指点我去哪里看看,我会很感激的。
发布于 2022-04-24 18:39:26
onEdit()
不能用于执行需要授权的操作。可能一个已安装的触发器变体可以。这可能是问题的原因之一。,
cell
是一个字符串。因此,您不能这样获得范围:cell.getRange('A1')
。也许您想以这种方式更改它的定义(如果您需要常量):const cell = e.range;
cell.getRange('A1')
可能应该是:as.getRange('A1')
,
ischecked()
是否能工作。应该是isChecked()
https://developers.google.com/apps-script/reference/spreadsheet/range#ischecked
等等。
https://stackoverflow.com/questions/71989588
复制相似问题