我有一个和这个相似的数据
我想从应用程序发送电子邮件。
发送电子邮件的逻辑如下。
只发送1封电子邮件到A列(共名)中的每个唯一值,电子邮件的内容将包括所有行中的数据。仅在N列值为"Y“的情况下发送电子邮件。例如,
该脚本只发送3封电子邮件:
电子邮件1:这是为了提醒您,以下房屋租赁合同"HCMC 1“已经到期。
电子邮件2:这是为了提醒您,以下房屋租赁合同"HCMC 4“已经到期。
电子邮件3:这是为了提醒您,以下房屋租赁合同"HCMC 5“已经到期。
我用这个剧本。但是,它不能发送包含多行数据的电子邮件。它发了4封电子邮件而不是3封,请帮帮我。谢谢。
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);
});
}
发布于 2021-07-28 12:44:10
我制作了以下租约示例表,其中的标题是:
“所有者”、“租赁者”、“所有者的电子邮件地址”、"Y/N“
给你看这个主意。
下面的示例演示如何将"Y“租约按”所有者“分组,并且只向”所有者的电子邮件地址“发送一封电子邮件,其中包含所有过期的"leaser”(那些行包含"Y")。
示例:
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);
});
}
参考文献:
https://stackoverflow.com/questions/68538488
复制相似问题