google-apps-script - Apps 脚本不使用 MailApp.sendEmail() 发送电子邮件
问题描述
我有代码,当我在“N”列中选择一个复选框时,它应该发送一封电子邮件。它通过 pass1、pass2 和 pass3 警报,但在那之后,什么也没有。当我尝试通过用硬编码的数值替换 selRow 和 selCol 变量来在脚本编辑器中运行脚本时,它起作用了。
function onEdit(e) {
var selRow = e.range.getRow();
var selCol = e.range.getColumn();
var activeWS = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Active');
var closeWS = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Closed');
if(activeWS.getRange(selRow, selCol).getValue() == true && selCol == 14){
SpreadsheetApp.getUi().alert('pass 1');
// Fetch the email address
var emailAddress = 'sample@gmail.com';
var subjPart = activeWS.getRange(selRow, 2).getValue();
SpreadsheetApp.getUi().alert('pass2');
// Send Alert Email.
var message = 'Please visit www.sample.com to view the latest project ready for Cap Out';
var subject = 'Roofing Project ' + subjPart + 'is ready for Cap Out';
SpreadsheetApp.getUi().alert('pass3');
MailApp.sendEmail(emailAddress , subject, message);
SpreadsheetApp.getUi().alert('Email sent');
}
}
有任何想法吗?
解决方案
为了解决您的问题,我想建议使用可安装的 OnEdit 事件触发器。当您onEdit
作为简单触发器运行的功能时,会出现错误MailApp.sendEmail
,因为在这种情况下,需要授权。
作为重要的一点,请将函数名称重命名onEdit
为其他人。这样,可以避免函数的重复执行。例如,当onEdit
作为可安装的 OnEdit 事件触发器安装时,当编辑单元格时,onEdit
由简单触发器和可安装触发器两者运行。所以在这种情况下,需要将函数名从onEdit
其他人重命名。这可以在这份报告中看到。
参考:
推荐阅读
- recursion - 联合所有递归 CTE postgresql 中的语法错误
- javascript - 如果在输入字段内按下向上和向下,则聚焦项目
- jquery - Jquery 表附加一个 href 电话
- c - C中的翻译环境和执行环境是什么,它们之间有什么区别?
- ios - RxDataSources 不更新节标题标题
- java - 可以将jsp代码作为参数传递吗?
- python - 熊猫数据框连接非连接轴未对齐
- android - 将存储为字符串的日期转换为日期并仅提取其中的年份
- java - 使用 % sybol 括号内的模式匹配
- asp.net-core - 如何为 SignInManager 设置模拟模式
在 .net 核心中