我正在运行一个工作正常的电子邮件脚本,但我只希望它运行到最后一行并包含数据。如果显然没有数据,我不需要它或希望它运行。我如何在下面的示例脚本中反射(reflect)这一点?
例如,假设我的工作表中只有 3 行数据。我只需要为这 3 行运行脚本,但代码将运行 20 行。要处理的条目数量每天都会有所不同,因此我不能只将其设置为固定数量。
基本上我想要替换:
var numRows =20;// Number of rows to process
对 .getlastrow 进行一些迭代...我认为?
供引用的示例脚本:
function sendEmails() {
var sheet =SpreadsheetApp.getActiveSheet();
var startRow =2;// First row of data to process
var numRows =20;// Number of rows to process
// Fetch the range of cells A2:B3
var dataRange = sheet.getRange(startRow,1, numRows,2)
// Fetch values for each row in the Range.
var data = dataRange.getValues();
for(i in data){
var row = data[i];
var emailAddress = row[0];// First column
var message = row[1];// Second column
var subject ="Sending emails from a Spreadsheet";
MailApp.sendEmail(emailAddress, subject, message);
}
}
感谢您的帮助!
最佳答案
您可以使用 getLastRow() 方法获取工作表中最后填充的行的索引。或者使用 getDataRange().getValues ,它只会获取有数据的行。
function sendEmails(){
var sheet = SpreadsheetApp.getActiveSheet();
var startRow =2;// First row of data to process
var data = sheet.getDataRange().getValues();
for(var i=startRow; i<data.length; i++){
var row = data[i];
var emailAddress = row[0];// First column
var message = row[1];// Second column
var subject ="Sending emails from a Spreadsheet";
MailApp.sendEmail(emailAddress, subject, message);
}
}
关于javascript - 仅通过电子表格最后一行运行 Google 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28483749/