簡體   English   中英

如何使用javascript對來自Google工作表的電子郵件進行分組

[英]How to group emails from google sheets with javascript

情況:這是一個大約40人的小型辦公室的休假(或休假)批准/監控系統。 他們通過谷歌表格提出請假,這些表格最終被送入谷歌表格。 每月一次,我們需要向每個請假的人發送一封電子郵件,其中包含他們為該月制作的每個條目。 我更改了谷歌的標准JavaScript,它會從電子表格發送電子郵件,但每行發送一封電子郵件。 我需要向每個人發送一份綜合電子郵件。 在運行腳本之前,電子表格將只包含具有適用日期的記錄,並將按[電子郵件]和[開始日期]列進行排序,因此無需在此腳本中執行任何此類工作。

以下是按順序排列的所有列:時間戳,電子郵件,請求的請假類型,開始日期,上次日期,小時數,可選注釋,批准決定,可選說明。

我已經嘗試過創建一個2D陣列,但我以前在這樣一個陣列上的嘗試只能在幾秒鍾內使用我的100 /天谷歌交易。 :/幫助表示贊賞。

function onOpen() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();

  var menu = [{
    name: "Send Email",
    functionName: "uiSendEmail"
  }];

  ss.addMenu("Send Email Test", menu);
}

function uiSendEmail() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var range = sheet.getDataRange();

  range= range.offset(1, 0, range.getNumRows()-1);
  range.getValues().forEach( function( cell, key, data ){


    var body = "Type of Leave - " + cell[2] + "\n\nStarting - " + cell[3] + "\n\nEnding - " + cell[4] + "\n\nHours - " + cell[5] + "\n\nNote Provided - " + cell[6] + "\n\n\n";
    //   "Type of Leave " + cell[2] \n\n;+ "Starting " + cell[3] \n\n + "Ending " + cell[4] \n\n + "Hours " + cell[5] \n\n + "Note provided " + cell[6] 
    GmailApp.sendEmail(cell[1], "Recent Requests for Time Off", body);
    });
  }

您可以創建一個對象,遍歷這些值並將它們添加到相應的電子郵件中。

function uiSendEmail() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var range = sheet.getDataRange();
var emails = {};

range= range.offset(1, 0, range.getNumRows()-1);
range.getValues().forEach( function( cell, key, data ){

    var body = "Type of Leave - " + cell[2] + "\n\nStarting - " + cell[3] + "\n\nEnding - " + cell[4] + "\n\nHours - " + cell[5] + "\n\nNote Provided - " + cell[6] + "\n\n\n";

    if(typeof emails[cell[1]] === 'undefined'){ 
      emails[cell[1]] = body;
    } else {
      emails[cell[1]] += body;
    }
   });

//Now loop through the email object and send each completed one
for(var address in emails) {
   GmailApp.sendEmail(address, "Recent Requests for Time Off", emails[address]);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM