google-sheets-formula - 我想比较股票价格和止损并通过电子邮件提醒我
问题描述
我想将我的股票价格列表与我存储的设置止损进行比较,一旦条件通过电子邮件触发警报。下面是我的代码
function emailAlert()
{
var stock1nameRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Watchlist").getRange("A5");
var stock1name = stock1nameRange.getValues();
var stock1cmpRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Watchlist").getRange("B5");
var stock1cmp = stock1cmpRange.getValues();
var stock1s1Range = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Watchlist").getRange("AK5");
var s1 = stock1s1Range.getValues();
var stock1s2Range = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Watchlist").getRange("AL5");
var s2 = stock1s2Range.getValues();
var ui = SpreadsheetApp.getUi();
if(stock1cmp<s1)
{
if(stock1cmp<s2)
{
ui.alert( stock1name + stock1cmp + 'is less than' +s2 );
var message = stock1name + stock1cmp + 'is less than' +s2 ;
MailApp.sendEmail("@gmail.com", "Stock Watchlist alert", message)
return s2
}
else
{
ui.alert( stock1name + stock1cmp + 'is less than' +s1 );
var message = stock1name + stock1cmp + 'is less than' +s1 ;
MailApp.sendEmail("@gmail.com", "Stock Watchlist alert", message )
return s1
}
}
}
这是针对单一股票的。我怎样才能使它更通用,并将所有通过条件的股票清单编译成单个邮件。谢谢。
森
解决方案
为了能够选择所有值,您将需要一个for
循环。
片段
function emailAlert() {
var ui = SpreadsheetApp.getUi();
var sheet = SpreadsheetApp.getActive().getSheetByName("Watchlist");
var stockName = sheet.getRange("A5:FINAL_RANGE").getValues();
var stockCmp = sheet.getRange("B5:FINAL_RANGE").getValues();
var s1 = sheet.getRange("AK5:FINAL_RANGE").getValues();
var s2 = sheet.getRange("AL5:FINAL_RANGE").getValues();
for (var i = 0; i < stockName.length; i++) {
if (stockCmp[i][0] < s1[i][0]) {
if (stockCmp[i][0] < s2[i][0]) {
ui.alert(stockName[i][0] + stockCmp[i][0] + ' is less than ' + s2[i][0]);
var message = stockName[i][0] + stockCmp[i][0] + ' is less than ' + s2[i][0];
MailApp.sendEmail("@gmail.com", "Stock Watchlist Alert", message);
return s2[i][0];
} else {
ui.alert(stockName[i][0] + stockCmp[i][0] + ' is less than ' + s1[i][0]);
var message = stockName[i][0] + stockCmp[i][0] + ' is less than ' + s1[i][0];
MailApp.sendEmail("@gmail.com", "Stock Watchlist Alert", message);
return s1[i][0];
}
}
}
}
解释
上面的代码使用循环遍历列中的所有值for
,然后根据您设置的条件发送电子邮件并提醒用户。使用带参数的getRange()
方法检索范围。a1Notation
此处的a1Notation
参数由您拥有脚本所需值的范围的开始和结束表示。
笔记
构建上述脚本时考虑到stockName
, stockCmp
, s1
,s2
都是关联的,这意味着它们都存储了相同数量的值。
参考
推荐阅读
- ubuntu-18.04 - 如何解决新的 Angular cli 应用程序中的“无法匹配任何路线”错误
- email - cPanel 电子邮件路由...如果在本地找不到,请尝试远程
- c# - Xamarin Android AnimationDrawable
- javascript - 用 span 元素排序句子?
- java - 从 Instant 获取每月的第一天和最后一天
- c++ - 如果语句不排除文本行?
- python - 计算python中特定列中数字的出现次数
- c++ - 如何在自定义对象的 << 运算符中添加自定义前缀
- python - 在 sklearn 预测器(ParallelPostFit 包装器)上使用 dask Parallel post fit
- swift - 如何通过 NSUserUnixTask 传递参数,然后通过脚本访问?