无法从onEdit内部调用我的函数

时间:2019-11-10 15:44:53

标签: google-apps-script google-sheets discord

我有这个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());

}

1 个答案:

答案 0 :(得分:0)

@Dimu Designs

提供

对于简单的触发器(例如onEdit(e)),您无法调用需要用户授权的服务(在您的情况下为UrlFetchApp.fetch());参见restrictions。您必须创建一个可安装的触发器,并让用户在使用脚本之前对您的脚本进行授权。有关可安装的触发器,请参见documentation