【问题标题】:Getting google spreadsheets to send me an email让谷歌电子表格向我发送电子邮件
【发布时间】:2021-05-20 23:55:20
【问题描述】:

我有一个关于 Google 电子表格的电子表格,其中包含“D2”到所有“D”(因为它会在使用时扩展,并且当我添加更多时)带有一个用于优先状态的下拉框。下拉菜单有“低、中、高”。当优先级被编辑为“高”时,我想要一个脚本向我发送电子邮件

这是我昨晚半睡半醒时做的脚本。

{
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+ ".");
        }
}
}````


【问题讨论】:

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


    【解决方案1】:

    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);
        }
    
      }
    }
    

    【讨论】:

    • @MetaMan 我已经这样编辑了,我得赶紧写出来
    • @MetaMan 编辑了 +1 到 A 列,你在 0start 数组上工作的时间太长,它开始影响你知道吗? :P 关于 var,我坚持按照spreadsheet.dev/loops-apps-script 的说法是好的做法
    • @MetaMan 祝福你男人/女人。已编辑我的答案并给予应有的荣誉
    【解决方案2】:

    当 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 触发器。只要它提供事件对象,您就可以从另一个函数运行它们。

    【讨论】:

    • 即使其他人进行了编辑,也会触发此操作吗?我的意思是第一名。
    • 如果您与他们共享,那么他们还需要安装触发器并授权脚本。
    猜你喜欢
    • 1970-01-01
    • 2021-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-12
    • 1970-01-01
    相关资源
    最近更新 更多