我有这个onEdit函数,它首先检查所做的编辑是否在定义的区域内。然后,它获取已编辑的行,将其记录下来,并应该通过Webhook将相同的日志消息发送到Discord通道。我似乎无法使其正常工作。当我从我拥有的其他函数内部调用postMessageToDiscord函数时,该函数工作正常,但在onEdit内部却无法正常运行。关于它为什么起作用的任何想法?
onEdit函数:
function onEdit(edit){
if (
edit.range.columnStart >= 3 &&
edit.range.columnEnd <= 9 &&
edit.range.rowStart >= 13 &&
edit.range.rowEnd <= 101
)
{
Logger.log("Edit in range");
var editRow = (edit.range.rowStart, edit.range.rowEnd)
}
Logger.log("Row " + String(editRow) + " has been edited on Cadet Log " + edit.range.getSheet().getSheetName());
postMessageToDiscord("Row " + String(editRow) + " has been edited on Cadet Log " + edit.range.getSheet().getSheetName());
}
postMessageToDiscord函数:
function postMessageToDiscord(message) {
message = message || "Hunter fucked up, disregard."
var discordUrl = LINK REDACTED FOR SECURITY;
var payload = JSON.stringify({content: message});
var params = {
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
method: "POST",
payload: payload,
muteHttpExceptions: true
};
var response = UrlFetchApp.fetch(discordUrl, params);
Logger.log(response.getContentText());
}
答案 0 :(得分:0)
对于简单的触发器(例如onEdit(e)
),您无法调用需要用户授权的服务(在您的情况下为UrlFetchApp.fetch()
);参见restrictions。您必须创建一个可安装的触发器,并让用户在使用脚本之前对您的脚本进行授权。有关可安装的触发器,请参见documentation。