我有一个我正在使用的谷歌脚本,我想将我正在使用的当前行插入一个值,该值将被重新添加到我在电子表格中设置的公式中。我想这样做以防有人重新提交相同的数据,因此他们会通过电子邮件收到更改。目前这个脚本对我来说只是一个概念证明,所以我可以继续编写整个过程。
我在脚本中遇到的问题是 currentRow 的值。它似乎获得了第一次传递的值,然后没有改变它,当您有多个条目要处理时,这是有问题的。
我在变量 RESEND_EMAIL 中使用 currentRow 值,因此它可以生成一个公式来查看两列是否相似(我将使用日期时间戳并将其复制到第 D 列(也称为作为var重新发送[4])。
这样,我可以将脚本设置为自动运行并检查该列是否设置为“是”,在这种情况下,它将再次发送和发送电子邮件,然后更改 a 值(此处显示为电子邮件地址 - 但我将使用时间戳而是),以便公式 RESEND_EMAIL 更改重新发送回“否”。
如何始终在值 currentRow 中获取正确的行号?
// This constant is written in column C for rows for which an email
// has been sent successfully.
var EMAIL_SENT = "EMAIL_SENT";
function sendEmails2() {
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2; // First row of data to process
var numRows = 2; // Number of rows to process
// Fetch the range of cells A2:B3
var dataRange = sheet.getRange(startRow, 1, numRows, 6)
// Fetch values for each row in the Range.
var data = dataRange.getValues();
for (var i = 0; i < data.length; ++i) {
var row = data[i];
var emailAddress = row[0]; // First column
var message = row[1]; // Second column
var emailSent = row[2]; // Third column
var resend = row[4];
var extension = row [5];
var currentRow = sheet.getActiveRange().getRow();
var RESEND_EMAIL = "=IF(A"+ currentRow +"=D" + currentRow +",\"No\",\"Yes\")";
if (emailSent != EMAIL_SENT) { // Prevents sending duplicates
var subject = "Sending emails from a Spreadsheet";
MailApp.sendEmail(emailAddress, subject, message);
sheet.getRange(startRow + i, 3).setValue(EMAIL_SENT);
sheet.getRange(startRow + i, 5).setFormula(RESEND_EMAIL);
// Make sure the cell is updated right away in case the script is interrupted
SpreadsheetApp.flush();
}
if (resend == "Yes") { // Prevents sending duplicates
var subject = "Sending emails from a Spreadsheet";
message = message + " " + extension;
MailApp.sendEmail(emailAddress, subject, message);
sheet.getRange(startRow + i, 4).setValue(emailAddress);
// Make sure the cell is updated right away in case the script is interrupted
SpreadsheetApp.flush();
}
}
}