【问题标题】:Google App Script Grouping data in sheet to emailGoogle App Script 将工作表中的数据分组到电子邮件
【发布时间】:2014-03-19 20:28:45
【问题描述】:

我有一个包含这些列的操作项 Google 工作表:

  • A - ID - 序列号 1、2、3 等。
  • B - 已分配 - 分配操作项的日期
  • C - 产品 - 项目或区域的短文本名称
  • D - 操作项 - 操作项的文本描述
  • E - Owner - 分配给谁的项目,这通常只是一个名称 比如 Bob L,或者有时是多人 Bob/Ted
  • F - 截止日期
  • G - 状态 - 待处理、处理中等
  • H - 上次更新 - 由 onEdit 脚本更新
  • I - 最后编辑者 - 由 onEdit 脚本更新
  • J - 所有者电子邮件 - 查找数据范围以获取电子邮件地址 所有者
  • K - 上次发送提醒 - 上次发送电子邮件的日期更新者 脚本

我是 GAS 的新手,所以我拼凑了 sn-ps 以使脚本为每个操作项向所有者发送 1 封电子邮件,但我想按列 E(所有者)和发送一封电子邮件。我知道我需要一个嵌套循环,但我不确定如何继续。 生成的电子邮件的格式需要是 A、B、D、F、G 列(至少)的表格。当前脚本如下:

脚本

function sendEmails() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 3;  // First row of data to process
  //var numRows = 12;   // Number of rows to process                     *CHANGE AS NEEDED*

  //var numItems = getRowsData(sheet, OpenItems);
   var numItems = SpreadsheetApp.getActiveSheet().getRange("OpenItems").getValues();


  var numRows = numItems[0]

  // Fetch the range of cells A2:B3
  var dataRange = sheet.getRange(startRow, 1, numRows, 11) // must encompass Column K (11) 
  // Fetch values for each row in the Range.

  var data = dataRange.getValues();
  for (var i = 0; i < data.length; ++i) {

    var row = data[i];
    var actionitemid = row[0];
    var assignedon = Utilities.formatDate(new Date(row[1]), "GMT-05:00", "MM/dd/yy");
    var assignedto = row[4];
    var project = row[2];
    var actionitem = row[3];
    var duedate = Utilities.formatDate(new Date(row[5]), "GMT-05:00", "MM/dd/yy");
    if (duedate == "12/31/69") { // no due date
      var duedate = "TBD - please update!!" ;}
    var status = row[6];
    var emailAddress = row[9];  // Column J = 9 (starts at A=0

    var subject = "Action Item Reminder - Project: " + project;
    var sheetURL = SpreadsheetApp.getActiveSpreadsheet().getUrl();
    var body = "A reminder to do the following:\n\n    Project: "+project + "\n        Due: "+duedate+"\nAssigned: "+assignedon+"\n    Owner: "+assignedto+"\n    Status: " + status + "\n\nACTION ITEM: "+actionitemid+"\n=============================\n"+actionitem+"\n=============================\n\nPlease advise if you will not meet the due date ASAP.\n\nAll action items can be found in the Action Item sheet:\n"+sheetURL+"."; 
    var emailSent = row[11];     // Column D = 3


 //   if (oktosend == "Y") {  // Send only for marked rows
    var ok = emailAddress.length

    if ( emailAddress.length > 0) {

// Send email
 //     MailApp.sendEmail(emailAddress, subject, body);
 //     MailApp.sendEmail(emailAddress, "TEST", body);
      MailApp.sendEmail({
        to: emailAddress, 
        cc: "rdeloach@rentpath.com",
        subject: subject, 
        body: body
      });
       // Update EmailSent
           var time = new Date();
           time = Utilities.formatDate(time, "GMT-05:00", "MM/dd/yy, hh:mm");
           sheet.getRange(startRow + i, 11).setValue(time);  // Use column for EmailSent + 1 here getRange(startRow + i, X)
       // Update oktosend to N
 //          sheet.getRange(startRow + i, 5).setValue('N');  // Use column for oktosend + 1 here getRange(startRow + i, X)
      // Make sure the cell is updated right away in case the script is interrupted
      SpreadsheetApp.flush();
    } //oktosend<>N
  }
}

输出/结果

​主题:行动项目提醒 - 项目:Project X

提醒您执行以下操作:

项目:X 项目
截止日期:2014 年 3 月 1 日
已分配:2014 年 2 月 1 日
所有者:Rick D
状态:待定

动作项目:1
~~~~~~~~~~~~~~~~~~~~~~~
提供项目 X 上新数据库表的数据需求。 ~~~~~~~~~~~~~~~~~~~~~~~~~~

如果您不能尽快满足截止日期,请告知。

所有操作项都可以在操作项表中找到: 结束输出

寻求有关在 Gmail 中分组和生成表格的帮助。

【问题讨论】:

  • 看看这个script on github,尤其是respondToAdd 函数,它展示了如何使用html 标记格式化电子邮件。所以你也可以使用一张桌子。

标签: email google-apps-script grouping


【解决方案1】:

您可以将表格放在邮件正文中,然后通过 GmailApp 服务而不是 MailApp 发送。

var body = '<table><tr><td>col</td><td>val</td></tr></table>';
GmailApp.sendMail('to@example.com', 'subject', '', 
      { cc: 'cc@example.com',
        htmlBody: body 
      });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-12
    • 1970-01-01
    • 1970-01-01
    • 2020-10-20
    • 2021-09-05
    • 1970-01-01
    相关资源
    最近更新 更多