让谷歌电子表格给我发电子邮件



我在谷歌电子表格上有一个电子表格;D2";通过所有";D";(因为当我添加更多时,它会随着使用而扩展(,并带有一个用于优先级状态的下拉框。下拉菜单具有";"低、中、高";。我想得到一个脚本,当优先级被编辑为";高";

这是我昨晚凌晨2点半睡着时写的剧本。

{
var ss = SpreadsheetApp.getActive();
var sheet = ss.getSheetByName("TC52 Bugs or Issues and Improvements.");
var valueToCheck = sheet.getRange(D).getValue();
var rangeEdit = e.range.getA1Notation();
if(rangeEdit == "D")
{
if(valueToCheck > High) 
{
MailApp.sendEmail("austin.hendrix@decathlon.com", "High Priority please check now.", "Check spreadsheet" + valueToCheck+ ".");
}
}
}````

本文有一个教程。

在这一点上,类似于(由MetaMan大量编辑(

function sendEmails() {
var sheet = SpreadsheetApp.getActiveSheet();
var dataRange = sheet.getRange(1,4,sh.getLastRow()) or getRange('D1:D'+sh.getLastRow()));
var data = dataRange.getValues();
for (var i in data) {
var row = data[i];
var emailAddress = "youremail@email.com"; // First column
var message = "High priority set with data in A column "+sheet.getRange(("A"+i+1)).getValues()[0]; // Second column
var subject = 'High priority set in D'+i;
if(row[0]=="High"){
MailApp.sendEmail(emailAddress, subject, message);
}
}
}

当D列被编辑为";高";。

您需要填写"您的电子表格名称"、收件人电子邮件地址以及您想要的主题。此外,您还可以编辑正文。当前正文只是告诉您哪一行发出电子邮件。或者,如果你想提供更多信息,我会为你做的。

function onMyEdit(e) {
const sh = e.range.getSheet();
if(sh.getName() == 'Your Sheet Name' && e.range.columnStart == 4 && e.range.rowStart >1 && e.value == 'High') {
GmailApp.sendEmail('recipient','subject',`row ${e.range.rowStart} has been set to high`)
}
}

由于发送电子邮件需要权限,因此您必须为此功能创建一个可安装的触发器。

您可以手动执行,也可以使用下面这样的函数,这样可以防止您创建多个触发器。

function createTrigger() {
const ts = ScriptApp.getProjectTriggers().map(t=>t.getHandlerFunction());
if(!~ts.indexOf('onMyEdit')) {
ScriptApp.newTrigger('onMyEdit').forSpreadsheet(SpreadsheetApp.getActive().getId()).onEdit().create();
}
}

ScriptApp

请注意:您不能从脚本编辑器甚至菜单运行onEdit触发的函数。它们需要onEdit触发器,该触发器用事件对象填充单个参数e。您可以从另一个函数运行它们,只要它提供事件对象即可。

最新更新