因此,我有一个电子表格,我在其中获取患者信息,并将行数据发送给临床医生,如果他们还没有看过患者。因此,通过下面的代码,我能够完成向临床医生发送电子邮件的任务,以提醒他们去看望他们的病人。但这里有个问题。这是我不明白的地方。
假设我有以下数据:
当我收到电子邮件时,发送给所有这些患者的1名临床医生。电子邮件未按顺序发送到收件箱。例如,我会先收到Roland的电子邮件,然后是John,然后是Jessica。但约翰是第一个记录。有时,我会收到同一病人的多封电子邮件。但对于复制部分,我认为这是因为我有一个过滤器和一个for each循环,在本例中我需要这两个循环。因为如果J列中没有数据,这段代码就会过滤行。但是,如果满足这个条件,我需要一种方法来提取行的其余数据。但现在我在电子邮件中收到无序的或多个相同的记录。
你能看看我的过滤器,看看有没有什么办法可以解决这个问题?在这个问题上我真的迷失了方向。
谢谢。
function selectRecords() {
const ss = SpreadsheetApp.getActiveSheet();
const dataRange = ss.getDataRange();
const headers = 2;
const dataValues = dataRange
.offset(headers, 0, dataRange.getNumRows() - headers)//offsetting the headers from the whole range
.getValues();
dataValues
.filter(row => row[9] == '') //filtered data where row[9] is empty
.forEach(row => {
//forEach filtered row do>
let message =
row[0] +
'\n' +
row[1] +
'\n' +
row[2] +
'\n' +
row[3] +
'\n' +
row[4] +
'\n' +
row[5];
let email = row[13];
let subject = 'Sending emails from a Spreadsheet';
MailApp.sendEmail(email, subject, message);
Logger.log(`${subject}: ${message} sent to ${email}`);
});
}
发布于 2020-05-21 23:04:20
function selectRecords() {
const ss = SpreadsheetApp.getActiveSheet();
const dataRange = ss.getDataRange();
const headers = 2;
const dataValues=ss.getRange(3,1,ss.getLastRow()-2,ss.getLastColumn()).getValues();
dataValues.forEach(function(row){
if(row[9]=='') {
let message =row[0] + '\n' + row[1] + '\n' + row[2] + '\n' + row[3] + '\n' + row[4] + '\n' + row[5];
let email = row[13];
let subject = 'Sending emails from a Spreadsheet';
MailApp.sendEmail(email, subject, message);
Logger.log(`${subject}: ${message} sent to ${email}`);
}
});
}
https://stackoverflow.com/questions/61927797
复制相似问题