[英]Inventory Reminders with Google Apps Scripts
刚开始学习Javascript/Google Apps Script,请耐心等待。
我的目标是创建一个自动电子邮件脚本,当库存低于某个水平时,它会通过电子邮件发送提醒。
首先,我有一个包含 3 个选项卡的 Google 表格:ContactSheet、ReorderSheet 和 EmailSheet。 这些选项卡分别有列:人员姓名和电子邮件地址; 项目名称、编号、制造商、当前库存和重新订购的阈值; 主题行和消息。
代码如下。 没有运行时错误,但电子邮件要么不发送,要么只发送电子表格中的第一项或最后一项。 (应该为 5 个不同的项目发送 5 封电子邮件。)我认为问题在于 if 语句——我假设变量无法调用它们各自的索引,如果这有意义的话。 我尝试将变量转换为数组但没有成功。 根据记录器,此版本效果最佳,并且仅在最后一个块处崩溃。
提前致谢。
function sendEmail() {
var Spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var ContactSheet = Spreadsheet.getSheetByName('ContactSheet');
var ReorderSheet = Spreadsheet.getSheetByName('ReorderSheet');
var EmailSheet = Spreadsheet.getSheetByName('EmailSheet');
var SubjectLine = EmailSheet.getRange(2,1).getValue();
var Message = EmailSheet.getRange(2,2).getValue();
var N = ReorderSheet.getLastRow();
for(var i = 2; i < N+1; i++) {
var ItemName = ReorderSheet.getRange(i,1).getValue();
var ItemNumber = ReorderSheet.getRange(i,2).getValue();
var ItemManufacturer = ReorderSheet.getRange(i,3).getValue();
var ItemStock = ReorderSheet.getRange(i,4).getValue();
var ItemReorder = ReorderSheet.getRange(i,5).getValue();}
var M = ContactSheet.getLastRow();
for(var j = 2; j < M+1; j++) {
var Name = ContactSheet.getRange(j,1).getValue();
var EmailAddress = ContactSheet.getRange(j,2).getValue();}
if (ItemStock < ItemReorder) {
SubjectLine = SubjectLine.replace("<item>",ItemName);
Message = Message.replace("<name>",Name).replace("<item>",ItemName).replace("<itemnumber>",ItemNumber).replace("<manufacturer>",ItemManufacturer);
MailApp.sendEmail(EmailAddress, SubjectLine, Message);}
}
这个 for 循环不包含 sendEmail 方法:
for (var i = 2; i < N + 1; i++) {
var ItemName = rsh.getRange(i, 1).getValue();
var ItemNumber = rsh.getRange(i, 2).getValue();
var ItemManufacturer = rsh.getRange(i, 3).getValue();
var ItemStock = rsh.getRange(i, 4).getValue();
var ItemReorder = rsh.getRange(i, 5).getValue();
}
所以你总是只处理最后一行的数据
和这个一样:
for (var j = 2; j < M + 1; j++) {
var Name = csh.getRange(j, 1).getValue();
var EmailAddress = csh.getRange(j, 2).getValue();
}
此结构将向每个电子邮件地址发送电子邮件:
function sendEmail() {
var ss = SpreadsheetApp.getActive();
var csh = ss.getSheetByName('ContactSheet');
var rsh = ss.getSheetByName('ReorderSheet');
var esh = ss.getSheetByName('EmailSheet');
var subject = esh.getRange(2, 1).getValue();
var message = esh.getRange(2, 2).getValue();
var N = rsh.getLastRow();
var M = csh.getLastRow();
for (var j = 2; j < M + 1; j++) {
var Name = csh.getRange(j, 1).getValue();
var EmailAddress = csh.getRange(j, 2).getValue();
for (var i = 2; i < N + 1; i++) {
var ItemName = rsh.getRange(i, 1).getValue();
var ItemNumber = rsh.getRange(i, 2).getValue();
var ItemManufacturer = rsh.getRange(i, 3).getValue();
var ItemStock = rsh.getRange(i, 4).getValue();
var ItemReorder = rsh.getRange(i, 5).getValue();
if (ItemStock < ItemReorder) {
subject = subject.replace("<item>", ItemName);
message = message.replace("<name>", Name).replace("<item>", ItemName).replace("<itemnumber>", ItemNumber).replace("<manufacturer>", ItemManufacturer);
MailApp.sendEmail(EmailAddress, subject, message);
}
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.