问题描述
完全陌生的。我正在尽我所能提供我所知道的一切(这确实很辛苦,我的帽子给所有以谋生为目的的所有人,希望我有一天能到达那里)
我正在尝试让漫游器根据工作表上特定单元格中的FALSE复选标记向聊天室发送消息。
- 时间戳和getEffectiveUser()。getEmail-用于问责制
- function sendReminder()-使用网络挂钩将消息发送到聊天室(从Google Dev窃取了此消息)
这是我拥有的代码,并且尝试了很多变种,如果e.value ==“ FALSE”,则调用sendReminder函数(我知道这不是理想的方法,当然可以接受建议)
这里是代码,但唯一起作用的方法是手动-再次希望sendReminder在单元格中具有“ FALSE”时触发。
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);
}
在此先感谢您的耐心,理解和帮助。我正在尽我所能地阅读和学习,但是要投入很多。
解决方法
答案:
简单触发器对可以运行哪种类型的方法有限制。您需要将其更改为可安装的触发器。
更多信息:
根据有关简单触发器的文档:
他们无法访问需要services的authorization。例如,简单的触发器无法发送电子邮件,因为Gmail service需要授权,但是简单的触发器可以翻译带有Language service的短语,这是匿名的。
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
- 选择应运行哪个部署:标头
- 选择事件来源:从电子表格中
- 选择基于时间的触发器的类型:编辑时
然后按保存。现在,只要您指定的单元格被编辑,sendEmails()
函数便会运行,并且会得到您的预授权。
我希望这对您有帮助!