首页 > 解决方案 > 我想比较股票价格和止损并通过电子邮件提醒我

问题描述

我想将我的股票价格列表与我存储的设置止损进行比较,一旦条件通过电子邮件触发警报。下面是我的代码

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
    }
  }

}

这是针对单一股票的。我怎样才能使它更通用,并将所有通过条件的股票清单编译成单个邮件。谢谢。

标签: google-sheets-formulagoogle-sheets-api

解决方案


为了能够选择所有值,您将需要一个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都是关联的,这意味着它们都存储了相同数量的值。

参考


推荐阅读