0

我试图让机器人根据工作表上特定单元格中的 FALSE 复选标记向聊天室发送消息。

我有工作的功能

  1. 时间戳和 getEffectiveUser().getEmail - 用于问责
  2. 函数 sendReminder() - 它使用 webhook 向聊天室发送消息(从 Google Dev 窃取了这个消息)

这是我拥有的代码,我尝试了很多很多变体来调用函数 sendReminder if e.value == "FALSE" (我知道这不是理想的方法,当然愿意接受建议)

这是当前的代码,但它的唯一工作方式是手动 - 一旦单元格中包含“FALSE”,再次希望 sendReminder 触发。

function onEdit(e){

  if(e.value == "TRUE"){
    e.source.getSheetByName("Daily").getRange(e.range.rowStart,e.range.columnStart+1).setValue(Session.getEffectiveUser().getEmail());
    e.source.getSheetByName("Daily").getRange(e.range.rowStart,e.range.columnStart+2).setValue(new Date()).setNumberFormat("MM/dd/yyyy hh:mm");}
return e.value;
}

function sendReminder(){
var data = {
text: "Looks like LCH Temp is open right now - Can someone take over?"
};
var payload = JSON.stringify(data);
var options = {
method: 'POST',
contentType: 'application/json',
payload: payload
};
var url = 'https://chat.googleapis.com/v1/spaces/AAAAuBSsspc/messages?key=AIzaSyDdI0hCZtE6vySjMm-WEfRq3CPzqKqqsHI&token=jqvtFaKqM1a_spMOJFByn29jTEL5iF-JZQ9BEFws9u4%3D'
var rsp = UrlFetchApp.fetch(url, options);
}

4

1 回答 1

0

回答:

简单触发器对可以运行的方法类型有限制。您需要将其更改为可安装的触发器。

更多信息:

根据关于简单触发器的文档:

他们无法访问需要授权的服务。例如,简单触发器无法发送电子邮件,因为Gmail 服务需要授权,但简单触发器可以使用匿名的语言服务翻译短语。

由于UrlFetchApp需要授权,您将无法仅通过一个简单的触发器来运行它。

使固定:

您需要在您的内部onEdit(e)为“FALSE”提供检查代码,例如:

function whenEdited(e) {
  // whatever code you already have
  // change "C5" on the next line to whatever specific cell you want to check:
  if (e.range.getA1Notation() == "C5" && e.value == "FALSE") { 
    sendReminder()
  }
}

然后,您需要将whenEdited()函数设置为可安装触发器:

设置触发器:

使用保存图标保存脚本,按运行按钮 (►),并确认运行脚本的身份验证。

从这里,在Edit > Current project's triggers菜单项之后,您将在 G Suite 开发者中心打开一个新页面。点击+ Add Trigger右下角的按钮,设置触发设置如下:

  • 选择要运行的函数:whenEdited
  • 选择应该运行的部署:Head
  • 选择事件源:从电子表格
  • 选择基于时间的触发器类型:编辑时

然后按保存。现在,只要您指定的单元格被编辑,该sendEmails()功能就会运行,并以您的身份进行预授权。

参考:

于 2020-09-11T10:17:09.967 回答