我有一个电子表格,其中 K 列中有电子邮件地址,A 到 D 列中有数据。我正在尝试编写一个脚本,用于向 K 列中的所有电子邮件地址发送电子邮件。主题应该是 Col 中的最后一行C 和电子邮件正文应位于 D 列的最后一行
以下是我所拥有的,但我有两个问题。每当我需要将电子邮件地址添加到列表中时,我都需要调整脚本 var dataRange = sheet.getRange("K4:K9");
在 K10 中包含新的电子邮件地址。有一个更好的方法吗?
我还尝试使用 getLastRow 作为电子邮件主题和正文,它有效,但它只是获取数据范围中的最后一行。我必须更新var dataRange2= sheet.getRange("A4:D6");
每天都会添加一条新线路。我尝试使 dataRange 更大,但随后它捕获空白行作为最后一行。我再次不确定如何使其自动化。
/**
* Sends emails with data from the current spreadsheet.
*/
function sendEmails2() {
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 3; // First row of data to process
var numRows = 2; // Number of rows to process
// Fetch the Email range of cells K4:K6
var dataRange = sheet.getRange("K4:K9");
var emailAddress = dataRange.getValues() // Email Col
var dataRange2= sheet.getRange("A4:D6");
var message = SpreadsheetApp.getActiveSheet().getRange("D" + dataRange2.getLastRow()).getValues(); // Fact Col
var subject = SpreadsheetApp.getActiveSheet().getRange("C" + dataRange2.getLastRow()).getValues(); // Question Col
MailApp.sendEmail(emailAddress, subject, message);
}
最佳答案
使用“for”循环循环遍历每一行数据。如果您想为具有电子邮件地址的每一行发送电子邮件。
运行代码,然后查看日志。在代码编辑器中,单击“查看”菜单,然后单击“日志”。
出于测试目的,您可能需要注释掉发送电子邮件的语句、运行代码并查看日志。
function sendEmails2() {
var data,dataRange,emailAddress,i,L,lastRow,message,sheet,startRow,subject,thisRow;
sheet = SpreadsheetApp.getActiveSheet();
lastRow = sheet.getLastRow();
startRow = 3; // First row of data to process
dataRange = sheet.getRange(startRow, 1, lastRow - startRow, 11);//Start in column 1 and get 11 columns of data
data = dataRange.getValues();//Get a 2D array of data
L = data.length;//The number of inner arrays in the 2D array - which is
//the number of rows in the range
for (i=0;i<L;i++) {
thisRow = data[i];//Get one inner array of data which represents one row
subject = thisRow[2];//The subject is in column 3 which is index 2
message = thisRow[3];//The message is in column 4 which is index 3
emailAddress = thisRow[10];
Logger.log("subject: " + subject)
Logger.log("message: " + message)
Logger.log("subject: " + subject)
if (!emailAddress) {
continue;
}
MailApp.sendEmail(emailAddress, subject, message);
}
}
关于google-apps-script - 从 Google 表格通过电子邮件发送最后一行 - 添加数据时自动查找新的最后一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51597514/