让谷歌电子表格向我发送电子邮件

时间:2021-05-20 23:55:20

标签: google-apps-script google-sheets scripting spreadsheet

我在 Google 电子表格上有一个电子表格,其中包含“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+ ".");
        }
}
}````


2 个答案:

答案 0 :(得分:0)

This 文章有教程。

在那一点上,一些东西(由 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);
    }

  }
}

答案 1 :(得分:0)

当 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 触发的函数。它们需要使用事件对象填充单个参数 e 的 onEdit 触发器。只要提供事件对象,您就可以从另一个函数运行它们。