Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 谷歌电子表格脚本-如果包含公式的列包含特定文本字符串,则发送电子邮件_Google Apps Script_Google Sheets - Fatal编程技术网

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列,如果一个单元格被上面的公式填充,它会向我发送一封电子邮件。问题是,它仅在使用纯文本值填充列时起作用,而在通过公式填充列时不起作用 是否有任何方法可以更改我使用的脚

这就是我所处的位置:

  • 我有一个电子表格,其中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功能在设置为基于时间的触发时可以工作。我需要另找一份工作。