【问题标题】:Templated email using Apps Script based on data in Google Sheets使用基于 Google 表格中数据的 Apps 脚本的模板化电子邮件
【发布时间】:2016-01-21 14:08:20
【问题描述】:

我是脚本新手,所以我希望有人可以帮助我创建一个。

我正在尝试为按下自定义菜单时可以发送电子邮件的工作表创建脚本。

这是一个要处理的文件。 https://docs.google.com/spreadsheets/d/1Ea-3eZoclHrAkZLwRmWWFbmbnn4dESNWvK_6pn1DCbE/edit?usp=sharing

此外,它应该仅在列(例如,列 I)具有特定值(例如“已批准”)时发送它

电子邮件内容应如下所示:

主题:离开申请#'ColumnC'

嗨,'ColumnA',

我们收到了您对“ColumnE”的“ColumnB”请求

状态:“列G”

更多细节:'ColumnH'

-管理员

电子邮件应发送到 E 列和 F 列。

脚本还必须更新电子表格以避免重复电子邮件。

【问题讨论】:

    标签: google-apps-script google-sheets gmail


    【解决方案1】:

    这里是working example

    代码如下:

    function sendEmails() {
      var sheet = SpreadsheetApp.getActiveSpreadsheet();
      var startRow = 2;  // First row of data to process
      var lastRow = sheet.getSheetByName('Journal').getLastRow();  // Last row with content
    
      var rangeEmailSent     = sheet.getRangeByName('Journal!EmailSent');
      var dataEmailSent      = rangeEmailSent.getValues();
      var dataRequestedBy    = sheet.getRangeByName('Journal!RequestedBy').getValues();
      var dataRequestType    = sheet.getRangeByName('Journal!RequestType').getValues();
      var dataRefNo          = sheet.getRangeByName('Journal!RefNo')      .getValues();
      var dataStatus         = sheet.getRangeByName('Journal!Status')     .getValues();
      var dataToEmail        = sheet.getRangeByName('Journal!ToEmail')    .getValues();
      var dataSupComment     = sheet.getRangeByName('Journal!SupervisorComment').getValues();
    
      var subjectTemplate = sheet.getRangeByName('SubjectTemplate1').getValue();
      var bodyTemplate =  sheet.getRangeByName('BodyTemplate1').getValue();
      var msgSubject;
      var msgBody;
    
      for (var i = (startRow-1); i <= (lastRow-1); i++) {
    
        // send e-mail if "Email Sent" is not blank and if "Status" is not empty
        if ( !(dataEmailSent[i]=='Yes') && !(dataStatus[i] =='')) {
    
          msgSubject = subjectTemplate.replace('$REF$', dataRefNo[i]);
    
          msgBody = bodyTemplate
            .replace('$REQUESTED_BY$', dataRequestedBy[i])
            .replace('$REQUEST_TYPE$', dataRequestType[i])
            .replace('$EMAIL$', dataToEmail[i])
            .replace('$STATUS$', dataStatus[i])
            .replace('$SupervisorComment$', dataSupComment[i]);
          // Logger.log(msgSubject);
          // Logger.log(msgBody);
    
          MailApp.sendEmail(dataToEmail[i], msgSubject, msgBody);
          // Change "Email sent" to "Yes"
          rangeEmailSent.getCell(i+1,1).setValue('Yes'); // note: getCell(1,1) refers to the 1st cell
        } 
      } 
    }
    

    【讨论】:

    • 嗨丹尼尔,这真的很棒!这正是我需要的:D
    猜你喜欢
    • 1970-01-01
    • 2018-10-21
    • 2014-08-05
    • 1970-01-01
    • 1970-01-01
    • 2020-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多