首页 > 解决方案 > sendEmail 功能:如何限制这一点,使单元格值必须满足特定的文本值,例如“是”或“否”

问题描述

我希望谷歌表格在特定列中编辑单元格时发送电子邮件,但是,单元格必须与特定单词匹配。即仅当单元格文本等于“是”或“否”时才会发送电子邮件

我已经能够在谷歌脚本编辑器中获得特定的列和 Onedit 触发器设置,但是,我无法让单元格匹配特定的文本

function sendEmail(event) {
  // Getting the row
  const ss = event.source.getActiveSheet();
  const row = ss.getDataRange().getValues()[event.range.getRow()-1];
 const currentColumn = event.range.columnStart;
  if (ss.getName() !== 'Sheet1' || currentColumn !== 5 )  
return; 
 var emailAddress= test@gmail.com
var emailBody= "Test"
var subject = "Test"
MailApp.sendEmail(emailAddress, subject, emailBody);

我希望谷歌表格在特定列中编辑单元格时发送电子邮件,但是,单元格必须与特定单词匹配。即仅当单元格文本等于“是”或“否”时才会发送电子邮件

标签: javascriptemailgoogle-apps-scriptgoogle-sheetstriggers

解决方案


我在您的函数中添加了一行代码,应该可以解决问题。:)

function sendEmail(event) {
  // Getting the row
  const ss = event.source.getActiveSheet();
  const row = ss.getDataRange().getValues()[event.range.getRow()-1];
  const currentColumn = event.range.columnStart;
  if (ss.getName() !== 'Sheet1' || currentColumn !== 5 )  
return;

  if (!event.value.match(/^(Yes|No)$/)) return;

  var emailAddress= test@gmail.com;
  var emailBody= "Test";
  var subject = "Test";
  MailApp.sendEmail(emailAddress, subject, emailBody);
}

参考

正则表达式101.com

事件对象


这就是我的写作方式。

function sendEmail(event) {

 const sheet = event.source.getActiveSheet();
 const currentColumn = event.range.getColumn();
 if (sheet.getName() !== 'Sheet1' || currentColumn !== 5)  
return;

 if (!event.value.match(/^(Yes|No)$/)) return;

 var emailAddress = test@gmail.com;
 var emailBody = "Test";
 var subject = "Test";
 MailApp.sendEmail(emailAddress, subject, emailBody);
}

推荐阅读