首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用于发送电子邮件的Google脚本包含多行数据

用于发送电子邮件的Google脚本包含多行数据
EN

Stack Overflow用户
提问于 2021-07-27 03:11:48
回答 1查看 340关注 0票数 0

我有一个和这个相似的数据

数据截图

我想从应用程序发送电子邮件。

发送电子邮件的逻辑如下。

只发送1封电子邮件到A列(共名)中的每个唯一值,电子邮件的内容将包括所有行中的数据。仅在N列值为"Y“的情况下发送电子邮件。例如,

该脚本只发送3封电子邮件:

电子邮件1:这是为了提醒您,以下房屋租赁合同"HCMC 1“已经到期。

  • 房屋租契于2021年7月11日届满
  • B屋租约将于2021年7月11日届满。

电子邮件2:这是为了提醒您,以下房屋租赁合同"HCMC 4“已经到期。

  • C屋租约于2021年7月11日届满。

电子邮件3:这是为了提醒您,以下房屋租赁合同"HCMC 5“已经到期。

  • 丁屋租约将于2021年7月11日届满。

我用这个剧本。但是,它不能发送包含多行数据的电子邮件。它发了4封电子邮件而不是3封,请帮帮我。谢谢。

代码语言:javascript
运行
复制
function HLReminderAtYE(){
var SS = SpreadsheetApp.getActiveSpreadsheet();  //declare the spreadsheet
var Sheet = SS.getSheetByName("Tax_Master");  //declare sheet name
var Range = Sheet.getDataRange(); //to set the range as array
var Values = Range.getDisplayValues(); //to get the value in the array  

let fvs = Values.filter(function (item) { return item[13] == "Y" }); // filter only housecontract to remind at year end
  
var templateText = SS.getSheetByName("Template").getRange(1,1).getValue();

fvs.forEach(function(row){
    
  var AssigneeNames = row[1];
  var ClientNames = row[0];
  var HLEndDates = row[7];
  var messageBody = templateText.replace("{ClientNames}",ClientNames).replace("{AssigneeNames}",AssigneeNames).replace("{HouseleaseEndDates}",HLEndDates);
    
  MailApp.sendEmail(
    row[12],          // email address
    row[0] + "- House lease contract expire", // Subject line
    messageBody);
  });
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-28 12:44:10

我制作了以下租约示例表,其中的标题是:

“所有者”、“租赁者”、“所有者的电子邮件地址”、"Y/N“

给你看这个主意。

下面的示例演示如何将"Y“租约按”所有者“分组,并且只向”所有者的电子邮件地址“发送一封电子邮件,其中包含所有过期的"leaser”(那些行包含"Y")。

示例:

代码语言:javascript
运行
复制
function HLReminderAtYE() {
    let SS = SpreadsheetApp.getActiveSpreadsheet(); //declare the spreadsheet
    let Sheet = SS.getSheetByName("Sheet1"); //declare sheet name
    let Range = Sheet.getDataRange(); //to set the range as array
    let Values = Range.getDisplayValues(); //to get the value in the array  

    // Get all rows with a "Y" to send email
    let fvs = Values.filter((item) => {
        if (item[3] == "Y") return item
    });
    // Create an object grouped by owner
    fvs = fvs.map(
        (row) => {
            return {
                'name': row[0],
                'data': row.slice(1, 3)
            }
        }
    );
    console.log(fvs);
    fvs = fvs.reduce((r, a) => {
        r[a.name] = r[a.name] || [];
        r[a.name].push(a.data);
        return r;
    }, Object.create(null));
    let templateText = "{ClientNames} House lease contract expired.\n";

    Object.keys(fvs).forEach((key) => {
        let messageBody = ''
        fvs[key].forEach((row) => {
            let ClientNames = row[0];
            messageBody += templateText.replace("{ClientNames}", ClientNames);
        });


        // Send email
        MailApp.sendEmail(
            fvs[key][0][1], // owner's email address
            "House leases contract expired", // Subject line
            messageBody);

    });
}

参考文献:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68538488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档