Google apps script 谷歌电子表格脚本-如果包含公式的列包含特定文本字符串,则发送电子邮件
这就是我所处的位置:Google apps script 谷歌电子表格脚本-如果包含公式的列包含特定文本字符串,则发送电子邮件,google-apps-script,google-sheets,Google Apps Script,Google Sheets,这就是我所处的位置: 我有一个电子表格,其中a列包含一些纯文本数据。列A中的文本每天早上自动更新一次 在B列中,我有一个公式,用于查找a列中的某个单词。如果找到匹配项,则在相应的单元格中显示“是”。这就是B列中的公式基本上的样子=IF(ISNUMBER(SEARCH(“John Doe”,A1)),“YES”) 我有一个脚本,它看B列,如果一个单元格被上面的公式填充,它会向我发送一封电子邮件。问题是,它仅在使用纯文本值填充列时起作用,而在通过公式填充列时不起作用 是否有任何方法可以更改我使用的脚
function sendEmail(e) {
var thisSheet = e.source.getActiveSheet();
if (thisSheet.getName() !== 'Sheet1' || e.range.columnStart !== 1 || e.range.rowStart == 1 || e.value !== 'YES') return;
var body, headers = thisSheet.getRange(1, 1, 1, 14)
.getValues()[0],
thisRow = thisSheet.getRange(e.range.rowStart, 1, 1, 14)
.getValues()[0],
recipients = "email@gmail.com",
subject = "YES " + e.source.getName(),
body = "",
i = 0;
while (i < 14) {
body += headers[i] + ':\t' + thisRow[i] + '\n';
i++;
}
body += "\n\nVisit " + e.source.getUrl() + " to view the changes."
MailApp.sendEmail(recipients, subject, body);}
功能发送电子邮件(e){
var thisheet=e.source.getActiveSheet();
if(thisSheet.getName()!='Sheet1'|| e.range.columnStart!==1 | | e.range.rowStart==1 | | e.value!='YES')返回;
var body,headers=thisSheet.getRange(1,1,1,14)
.getValues()[0],
thisRow=thisSheet.getRange(e.range.rowStart,1,1,14)
.getValues()[0],
收件人=”email@gmail.com",
subject=“YES”+e.source.getName(),
body=“”,
i=0;
而(i<14){
正文+=标题[i]+':\t'+此行[i]+'\n';
i++;
}
body+=“\n\n查看”+e.source.getUrl()+”以查看更改。”
MailApp.sendmail(收件人、主题、正文);}
您可以使用基于时间的触发器而不是onEdit(我假设您正在使用)定期扫描范围。您可能需要添加一个选项,以便脚本在发生特定事件时自动运行函数,例如onEdit(e)
。这可能也有帮助。我将触发从onEdit更改为每5分钟运行一次,但现在我没有收到任何电子邮件。通过进一步研究,我不相信sendEmail功能在设置为基于时间的触发时可以工作。我需要找到另一种解决方法。您可以使用基于时间的触发器而不是onEdit(我假设您正在使用)定期扫描范围。您可能需要添加一个选项,以便脚本在发生特定事件时自动运行函数,例如onEdit(e)
。这可能也有帮助。我将触发从onEdit更改为每5分钟运行一次,但现在我没有收到任何电子邮件。通过进一步研究,我不相信sendEmail功能在设置为基于时间的触发时可以工作。我需要另找一份工作。