我正在寻求有关 Google Apps 脚本的帮助,我正在尝试设置该脚本以自动从 Google 表格发送电子邮件。我的目标是让脚本在工作表中的
Status
列更新为 Send
时自动发送电子邮件。
这是我到目前为止所做的:
我创建了一个 Google 表格,其中包含
First Name
、Last Name
、Email
和 Status
的列。
我编写了一个脚本,当
Status
列更新为“发送”时,应该发送电子邮件。但是,我遇到了脚本未按预期触发的问题。我不是开发人员,所以我发现自己解决问题很有挑战性。
有人可以检查一下我的脚本并就可能出现的问题提供指导吗?任何帮助或指示将不胜感激。
function sendEmails() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var dataRange = sheet.getDataRange();
var data = dataRange.getValues();
for (var i = 1; i < data.length; i++) {
var row = data[i];
var firstName = row[0];
var lastName = row[1];
var emailAddress = row[2];
var emailSent = row[3];
if (emailSent == 'Gửi') { // Chỉ gửi email khi cột 'Status' là 'Gửi'
var subject = 'Chủ đề Email của Bạn';
var message = createEmailTemplate(firstName, lastName);
MailApp.sendEmail(emailAddress, subject, "", { htmlBody: message });
sheet.getRange(i + 1, 4).setValue('Đã gửi');
SpreadsheetApp.flush();
}
}
}
function createEmailTemplate(firstName, lastName) {
var htmlTemplate = HtmlService.createTemplateFromFile('EmailTemplate');
htmlTemplate.firstName = firstName;
htmlTemplate.lastName = lastName;
return htmlTemplate.evaluate().getContent();
}
您需要将该函数命名为 onEdit,以便每当在电子表格中编辑值时自动触发在此处输入代码。
function onEdit(e) {
var sheet = e.source.getActiveSheet();
var range = e.range;
var column = range.getColumn();
// If the value is edited is in the status column (4th column) in the the sheet which has your data, only thencontinue with further operations.
// Change Sheet1 to whatever is the name of your sheet.
if (sheet.getName() !== 'Sheet1' && column == 4) {
var dataRange = sheet.getDataRange();
var data = dataRange.getValues();
for (var i = 1; i < data.length; i++) {
var row = data[i];
var firstName = row[0];
var lastName = row[1];
var emailAddress = row[2];
var emailSent = row[3];
if (emailSent == 'Gửi') { // Chỉ gửi email khi cột 'Status' là 'Gửi'
var subject = 'Chủ đề Email của Bạn';
var message = createEmailTemplate(firstName, lastName);
MailApp.sendEmail(emailAddress, subject, "", { htmlBody: message });
sheet.getRange(i + 1, 4).setValue('Đã gửi');
SpreadsheetApp.flush();
}
}
}
}
function createEmailTemplate(firstName, lastName) {
var htmlTemplate = HtmlService.createTemplateFromFile('EmailTemplate');
htmlTemplate.firstName = firstName;
htmlTemplate.lastName = lastName;
return htmlTemplate.evaluate().getContent();
}
这应该有效。以防万一您仍然遇到困难,请让我知道日志中的确切问题/错误。