2016-01-21 117 views
1

我不熟悉脚本,所以我希望有人能帮助我创建一个脚本。根据Google表格中的数据使用Apps脚本模板化电子邮件

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

这里有一个文件可以使用。 https://docs.google.com/spreadsheets/d/1Ea-3eZoclHrAkZLwRmWWFbmbnn4dESNWvK_6pn1DCbE/edit?usp=sharing

而且,它应该只把它当一列有一个像“批准”

邮件内容应该看起来像一个特定值(例如I列):

主题:请假申请# 'ColumnC'

嗨 'ColumnA',

我们收到你的 'ColumnB' 请求 'ColumnE'

状态: 'ColumnG'

更多详细信息: 'ColumnH'

-admin

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

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

回答

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 
    } 
    } 
} 
+0

喜丹尼尔,这真是太好了!这正是我需要的:D –

相关问题