google-apps-script - 如何在谷歌脚本中使用for循环发送电子邮件?
问题描述
function sendEmails() {
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2; // First row of data to process
var numRows = 2000; // 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, {noReply:true});
}
}
在这里,我想将 C2、D2、E2、F2 逐行数据发送到 A2,将 C3、D3、E3、F3 逐行数据发送到 A3,并且循环应该针对工作表中的所有行运行。
我有一个脚本将共同主题主体发送给每个人。
有人可以帮我以上述模式发送数据吗
解决方案
尝试使用这个:
function sendEmails() {
var sheet = SpreadsheetApp.getActiveSheet();
// Get all values in the spreadsheet
var data = sheet.getDataRange().getValues();
// Loop through all rows with data:
for(var i = 1; i < data.length; i++) {
var row = data[i];
var emailAddress = row[0]; // Get email address
// Build message body (you could also do this with a loop):
var message = row[2] + "\n" + row[3] + "\n" + row[4] + "\n" + row[5]
var subject = "Sending emails from a Spreadsheet";
MailApp.sendEmail(emailAddress, subject, message, {noReply:true});
}
}
此代码获取工作表中的所有值并循环遍历它们,因此您无需指明要循环遍历的行数。您必须指明从哪一行开始(在本例中为第二行,因此是var i = 1
)。
此外,在构建消息正文时,可以使用循环,但我不确定它是否值得。如果有更多的列,那将是有意义的。
此外,您尝试使用for...in,不建议将其用于遍历数组,并且您没有使用正确的语法。
告诉我这是否适合你。
推荐阅读
- angularjs - 带有异步响应拦截器的 ngResource
- python - wxPython : 改变 DataViewListCtrl 项的颜色
- python - Tkinter 对齐文本
- javascript - 指定插件 0,提供了“默认”的无效属性(Jest React Native)
- c# - WPF C# 如何在两个 ViewModel 中使用通用的 ObservableCollection?
- excel - 更新 Excel VBA 参考
- c# - 自适应卡片提交操作
- html - 避免关键帧动画溢出导航中的子菜单
- python - 过采样二进制
- django - 在 Django 中上传、处理然后下载文件