繁体   English   中英

Google 表格脚本 - onEdit Function - 满足两个条件后发送 Email

[英]Google Sheets Script - onEdit Function - Send Email After Two Conditions Are Met

第一次提问者,StackOverflow 的长期跟踪者。 情况是这样的,我有下面的脚本,只要我在第 18 列和第 20 列中输入正确的值,就会向我发送 email,这些值可以 go 到目标电子表格的任何行中,只要它们在正确的列中,将发送 email。 问题是,我需要一个 email 只有在我将两个正确的值都输入到两个必需的单元格后才能发送。 现在,如果满足任一条件,它会发送 email,我需要弄清楚如何让脚本要求在发送 email 之前满足两个条件。

有任何想法吗?

 function sendMailEdit(e){
        if ((e.range.columnStart != 18 || e.value != "Created") && (e.range.columnStart != 20 || 
    e.value != "Inputted")) return;
    const rData = 
    e.source.getSheetByName('Classified').getRange(e.range.rowStart,1,1,20).getValues();
       let fn = rData[0][5];
       let ln = rData[0][6];
       let ein = rData[0][7];
       let email = rData[0][17];
       let escape = rData[0][19];

    let msg = "Employee " + fn + " " + ln + " has been processed by HR, and can now be further 
    processed by IT";
    Logger.log(msg);
    GmailApp.sendEmail("mhawkins@dnusd.org", "HR Has Processed an Employee", msg)
    }

在您的情况下,以下修改如何?

从:

if ((e.range.columnStart != 18 || e.value != "Created") && (e.range.columnStart != 20 || e.value != "Inputted")) return;

到:

const range = e.range;
if (![18, 20].includes(range.columnStart)) return;
const [r, , t] = range.getSheet().getRange(range.rowStart, 18, 1, 3).getValues()[0];
if (r != "Created" || t != "Inputted") return;
  • 通过此修改,当列“R”和“T”的值分别被CreatedInputted时,将运行 if 语句下方的脚本。

添加:

关于您的以下新问题,

如果我想从第 8 行添加第三个条件,这对你来说是否合适@Tanaike ' const range = e.range; 如果 (,[8, 18. 20].includes(range;columnStart)) 返回, const [ m, , , , , , , , , , r, . t] = range.getSheet().getRange(range,rowStart, 8, 1, 11. 13);getValues()[0]; if (m > "0" || r != "Created" || t != "Inputted") 返回; '

我想更改脚本以在满足 3 个条件后发送 email。 我想包括您帮我解决的前两个条件,但现在添加第三个条件。 我想要的第三个条件是第 8 列中的值大于 0。这有意义吗?

是的,我想添加列 H > 0

是的,这是正确的,你知道我该怎么做吗?

在这种情况下,下面的示例脚本而不是上面的脚本怎么样?

示例脚本:

if (![8, 18, 20].includes(range.columnStart)) return;
const [h,,,,,,,,,,r,,t] = range.getSheet().getRange(range.rowStart, 8, 1, 13).getValues()[0];
if (h <= 0 || r != "Created" || t != "Inputted") return;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM