【发布时间】:2018-09-02 19:30:54
【问题描述】:
我正在尝试设置一个简单的谷歌应用程序脚本,以在各种组件的库存达到定义的阈值时发送电子邮件。在阅读和搜索之后,我编写了一个脚本,该脚本似乎可以工作,但当我增加从电子表格中提取的范围时,它开始发送错误的电子邮件。
这是我的代码,更多详细信息如下。
var ss = SpreadsheetApp.getActive();
var sheet = ss.getSheetByName("Inventory Report");
var howFar = 5 //sheet.getMaxRows(); // how many rows of data
var onHand = sheet.getRange(2,14,howFar,1).getValues();
var minimum = sheet.getRange(2,16,howFar,1).getValues();
var itemNum = sheet.getRange(2,1,howFar,1).getValues();
var itemName = sheet.getRange(2,2,howFar,1).getValues();
var sendTo = "test@gmail.com";
var overStock = 1.5; // warning factor over minimum
function stockAlert() {
for (var i = 0; i < onHand.length; i++) {
if (onHand[i] < minimum[i] * overStock && onHand[i] > minimum[i]) {
MailApp.sendEmail( sendTo , "Testing Stock Reorder Notifications", itemNum[i] + " " + itemName[i] +" - Stock is low! Current stock is " + onHand[i] + ". Minimum is " + minimum[i] + ".");
}
else if (minimum[i] > 0 && onHand[i] < minimum[i]) {
MailApp.sendEmail( sendTo , "Testing Stock Cirtical Notifications", itemNum[i] + " " + itemName[i] +" - Stock is Critical and will be depleted! Current stock is " + onHand[i] + ". Minimum is " + minimum[i] + ".");
}
}
}
在我的工作表中,最小值为 200、400、200、300、600
在我的工作表中,onHand 的值为 270、270、920、920、1830
这意味着我应该看到第一组值的一封低库存电子邮件,第二组值的一封重要库存电子邮件,最后 3 组值的电子邮件没有。
如果是var howfar = 3,脚本会发送两封相应的电子邮件。
如果var howfar = 5,我会收到第三封关于不应该发送的第五组值的关键股票电子邮件。有趣的是,电子邮件正文显示它引用了正确的值集,但 else if 应该是错误的。
错误电子邮件的正文为:
itemNumitemName- 库存很严重,即将耗尽!当前库存为 1830。最低为 600。
鉴于我在不编码方面的广泛背景,我希望并假设这将是一个简单的修复,但非常感谢任何所有帮助!
【问题讨论】:
-
如果你愿意,你能分享一个测试电子表格吗?我会在电子表格的聊天中看到你的情况。
-
顺便说一句,你的代码看起来还不错,真的很奇怪
-
@JSmith 我设置了一张测试表。我刚刚粘贴了原始工作表中的结果值。测试脚本时我得到相同的结果。 docs.google.com/spreadsheets/d/…
标签: google-apps-script google-sheets