2014-02-19 29 views
0

我有一個操作項谷歌片與這些列:在片谷歌應用程序腳本分組數據以電子郵件

  • A - ID - 串行#1,2,3等
  • 乙 - 已分配 - 最新的行動項目被分配
  • ç - 產品 - 項目或區域的短文本名稱
  • d - 業主 - - 行動項目 - 行動項目
  • 電子商務文字說明誰是分配給項目,這通常只是一個名字 像鮑勃L,或有時多人鮑勃/泰德
  • 的F - 截止日期
  • 摹 - 狀態 - 等待,在工藝等
  • ^h - 最近更新 - 通過onEdit腳本
  • 更新我 - 最後編輯者 - 通過onEdit腳本更新
  • 的J - 所有者電子郵件 - VLOOKUP數據範圍得到 所有者(S)
  • 的K電子郵件地址(S) - 最後提醒發送 - 發送的最後更新的電子郵件的日期 腳本

我是一個帶GAS的新手,所以我拼湊了片段,讓腳本爲每個操作項發送1封電子郵件給所有者,但我想按列E(所有者)對操作項進行分組,併發送一個電子郵件。我知道我需要一個嵌套循環,但我不知道如何繼續。 生成的電子郵件的格式需要是列A,B,D,F,G(至少)的表格。當前的腳本如下:

SCRIPT

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: "[email protected]", 
     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 
    } 
} 

輸出/結果

主題:操作項提醒 - 項目簡介:項目X

的提醒函做到以下幾點:

項目:Project X
截止日期:3/1/14
已分配:14年2月1日
擁有者:瑞克d
狀態:待定

ACTION項:1
~~~~~~~~~~~~~~~~~~~ ~~~~
爲新的數據庫表上的項目X的數據需求 ~~~~~~~~~~~~~~~~~~~~~~~

請指教如果你不能很快達到到期日。

所有行動項目可以在行動項目表中找到: 結束輸出

尋找在分組幫助和Gmail中產生的表。

+0

看看(https://github.com/Jacobvdb/gdg-event-administration/blob/master/gdg/add_gdg.gs)本[GitHub上的腳本],尤其是respondToAdd功能它顯示如何使用html標記格式化電子郵件。所以你也可以使用一張表。 – Jacobvdb

回答

0

您可以將該表放入郵件正文中,然後通過GmailApp服務而不是MailApp發送郵件。

var body = '<table><tr><td>col</td><td>val</td></tr></table>'; 
GmailApp.sendMail('[email protected]', 'subject', '', 
     { cc: '[email protected]', 
     htmlBody: body 
     }); 
相關問題