因此,我有一个电子表格,用于收集患者信息并将行数据发送给临床医生(如果尚未见过患者)。因此,通过下面的代码,我能够完成向临床医生发送电子邮件的提示,以提防他们去拜访患者。但这是问题所在。这就是我不明白的地方。
假设我有以下数据:
当我收到所有这些患者的电子邮件后,将其发送给1位临床医生。电子邮件无顺序地进入收件箱。例如,我会先收到罗兰的电子邮件,然后是约翰的电子邮件,然后是杰西卡的电子邮件。但是约翰是第一张唱片。有时,我还会收到同一位患者的多封电子邮件。但是对于重复部分,我认为是因为我有一个过滤器和一个for每个循环,在这种情况下,我都需要它们。因为如果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}`);
});
}
答案 0 :(得分:1)
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}`);
}
});
}