Javascript Sendemail函数:要处理的行数
我有一个发送电子邮件的功能,它与我的谷歌工作表完美配合 但是,我必须在代码中写入要处理的行数。有没有办法只处理已填充的行 这是我的密码:Javascript Sendemail函数:要处理的行数,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我有一个发送电子邮件的功能,它与我的谷歌工作表完美配合 但是,我必须在代码中写入要处理的行数。有没有办法只处理已填充的行 这是我的密码: var EMAIL_SENT='EMAIL SENT'; 函数sendEmails(){ var sheet=SpreadsheetApp.getActiveSheet(); var startRow=2;//要处理的第一行数据 var numRows=4;//要处理的行数 //获取单元格的范围 var dataRange=sheet.getRange(st
var EMAIL_SENT='EMAIL SENT';
函数sendEmails(){
var sheet=SpreadsheetApp.getActiveSheet();
var startRow=2;//要处理的第一行数据
var numRows=4;//要处理的行数
//获取单元格的范围
var dataRange=sheet.getRange(startRow,1,numRows,20);
//获取范围中每行的值。
var data=dataRange.getValues();
对于(变量i=0;i
说明:
您可以使用以下命令查找包含内容的最后一行:
因为您是从第二行开始的,所以应该从numRows
中减去1
:
var dataRange = sheet.getRange(startRow, 1, numRows-1, 20);
如果有空行,则需要将其删除:
var data = data.filter(function (row) {
return row[0] != "";
});
解决方案:
var EMAIL_SENT='EMAIL SENT';
函数sendEmails(){
var sheet=SpreadsheetApp.getActiveSheet();
var startRow=2;//要处理的第一行数据
var numRows=sheet.getLastRow();
//获取单元格的范围
var dataRange=sheet.getRange(2,1,numRows-1,20);
//获取范围中每行的值。
var data=dataRange.getValues();
var data=data.filter(函数(行){
返回行[0]!=“”;
});
对于(变量i=0;i
工作(几乎)完美。我收到一个错误,因为电子邮件地址无效。我所有的空行都有公式。对于脚本,行似乎不是空的。有什么办法可以避免这个错误吗?请尝试var data=dataRange.getDisplayValues()代码>而不是var data=dataRange.getValues()代码>@我刚试过,同样的问题。我已经看到,即使该行是空的,这里也有一个“ghost”值。请您就这个问题发布一个不同的问题。这可能是一个普遍的问题。然后,您可以共享您的工作表示例和正在使用的脚本,以便其他读者可以帮助您(包括我)@勒菲勒
var data = data.filter(function (row) {
return row[0] != "";
});
var EMAIL_SENT = 'EMAIL SENT';
function sendEmails() {
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2; // First row of data to process
var numRows = sheet.getLastRow();
// Fetch the range of cells
var dataRange = sheet.getRange(2, 1,numRows-1,20);
// Fetch values for each row in the Range.
var data = dataRange.getValues();
var data = data.filter(function (row) {
return row[0] != "";
});
for (var i = 0; i < data.length; ++i) {
var row = data[i];
var emailAddress = row[7] + "," + row[9] + "," + row[13];
var message = row[18];
var emailSent = row[19];
if (emailSent != EMAIL_SENT) { // Prevents sending duplicates
var subject = 'Un nouvel adhérent vous a été affecté';
MailApp.sendEmail(emailAddress, subject, message);
sheet.getRange(startRow + i, 20).setValue(EMAIL_SENT);
// Make sure the cell is updated right away in case the script is interrupted
SpreadsheetApp.flush();
}
}
}