我修改了 Google 的邮件合并示例,以创建一个 Google 电子表格/脚本,我希望在客户租赁到期日之前 3 天发送电子邮件。我设置了一个单元格,用于获取用户输入的租金到期日并减去今天的日期。
然后,我运行一个 if 语句来检查该单元格是否等于 3,如果是,则使用 MailApp 发送电子邮件。但由于某种原因,它似乎不起作用,当我尝试 Logger.log 时,变量返回未定义。我对 Google 脚本和表格还很陌生,所以如果我的表述含糊不清或不理解一些基本内容,我深表歉意。
这里是a link to the sheet ,您只需转到工具/脚本编辑器即可查看脚本。
function sendEmails() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var dataSheet = ss.getSheets()[0];
var dataRange = dataSheet.getRange(2, 1, dataSheet.getMaxRows() - 1, 7);
var templateSheet = ss.getSheets()[1];
var emailTemplate = templateSheet.getRange("A1").getValue();
// Create one JavaScript object per row of data.
var objects = getRowsData(dataSheet, dataRange);
// For every row object, create a personalized email from a template and send
// it to the appropriate person.
for (var i = 0; i < objects.length; ++i) {
// Get a row object
var rowData = objects[i];
// Generate a personalized email.
// Given a template string, replace markers (for instance ${"First Name"}) with
// the corresponding value in a row object (for instance rowData.firstName).
var emailText = fillInTemplateFromObject(emailTemplate, rowData);
var emailSubject = "Your Renty Rental is Due Soon!";
var timeTill = objects[i][6];
Logger.log(timeTill);
if (timeTill == 3) {
MailApp.sendEmail(rowData.emailAddress, emailSubject, emailText);
}
}
}
最佳答案
基于此link
假设您只是想向收件人发送简单的电子邮件,我为您制作了一个更简单的电子邮件功能;
function sendMail(){
var ss = SpreadsheetApp.getActiveSpreadsheet(); //Get the active Spreadsheet
var sheet = ss.getSheetByName('Sheet1'); //Get the sheet by name, Sheet1 as example
var startRow = 2; //We start process things from row 2
var lastRow = sheet.getLastRow(); //Get the last row of data to be processed
var lastCol = sheet.getLastColumn(); // Get the last column of data to be processed
var range = sheet.getRange(2,1,lastRow,lastCol); //Fetch the range
var data = range.getValues(); //Get the values inside the range
for (var i = 0;i<data.length;i++) //Iterate values
var row = data[i]; //Set up variable for easier retrieve data to be processed and more understandable by human
var FirstName = row[1]; //Column B
var LastName = row[2]; //Column C
var emailAddress = row[3]; //Column D
var dueDate = Utilities.formatDate(new Date(row[4]),'GMT+0800','MM/dd/yyyy'); //Column E. Utilities format so the date won't be in long values
var timer = row[6]; //Column G
var msg = 'Hello '+FirstName+' '+LastName+'<br><br>' // Your templates
+'This is a test mail '+dueDate+'<br><br>'
+'Bla bla bla<br>'
+'Another lines of texts<br><br>'
+'Another lines of texts<br><br>'
+'Thank You<br><br>'
+'OH!! I like Banana.';
if(timer == 3){ //Set up the condition
GmailApp.sendEmail(emailAddress,'Your Renty Rental is Due Soon!',msg,{htmlBody:msg}); //Send the email to the recipient
sheet.getRange(startRow+i,7).setNote('Email Sent'); //Set note on column 'G'
}
}
要让触发器每天运行,请转到“资源”,单击“当前项目触发器”。使用“函数 sendMail”、“时间驱动”、“日计时器”、“您希望脚本运行的时间”设置新项目触发器。
如果有任何疑问,请在此处评论。
<小时/>已修复: 我忘记了“For”循环后面的 {};
function sendMail(){
var ss = SpreadsheetApp.getActiveSpreadsheet(); //Get the active Spreadsheet
var sheet = ss.getSheetByName('Sheet1'); //Get the sheet by name, Sheet1 as example
var startRow = 2; //We start process things from row 2
var lastRow = sheet.getLastRow(); //Get the last row of data to be processed
var lastCol = sheet.getLastColumn(); // Get the last column of data to be processed
var range = sheet.getRange(2,1,lastRow,lastCol); //Fetch the range
var data = range.getValues(); //Get the values inside the range
for (var i = 0;i<data.length;i++){ //Iterate values
var row = data[i]; //Set up variable for easier retrieve data to be processed and more understandable by human
var FirstName = row[1]; //Column B
var LastName = row[2]; //Column C
var emailAddress = row[3]; //Column D
var dueDate = Utilities.formatDate(new Date(row[4]),'GMT+0800','dd/MM/yyyy'); //Column E. Utilities format so the date won't be in long values
var timer = row[6]; //Column G
var msg = 'Hello '+FirstName+' '+LastName+'<br><br>' // Your templates
+'This is a test mail '+dueDate+'<br><br>'
+'Bla bla bla<br>'
+'Another lines of texts<br><br>'
+'Another lines of texts<br><br>'
+'Thank You<br><br>'
+'OH!! I like Banana.';
if(timer ==3){ //Set up the condition
GmailApp.sendEmail(emailAddress,'Your Renty Rental is Due Soon!',msg,{htmlBody:msg}) //Send the email to the recipient
sheet.getRange(startRow+i,7).setNote('Email Sent'); //Set note on column 'G'
SpreadsheetApp.flush
}
}
};
关于java - 如何使用 Google 脚本和 Google 表格在指定日期前 3 天发送电子邮件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38000386/