【问题标题】:I want to compare the price of stock with stoploss and alert me by email我想比较股票价格和止损并通过电子邮件提醒我
【发布时间】:2020-04-04 11:44:20
【问题描述】:

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

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

}

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

【问题讨论】:

  • 你好@Sen,那么你到底想达到什么目的?请提供有关此问题的更多详细信息。你的股票是如何分组的?干杯!
  • 您好@ale13,我想将股票的当前市场价格与我估计的止损价格进行比较。如果当前市场价格低于我估计的止损价格,我应该收到电子邮件提醒。上面的代码是针对单一股票的,但我在 A 列中有股票清单,在 AL 列中有股票的估计止损价格。谢谢

标签: google-sheets-formula google-sheets-api


【解决方案1】:

为了能够选择所有值,您将需要一个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 循环遍历列中的所有值,然后根据您设置的条件发送电子邮件并提醒用户。使用带有a1Notation 参数的getRange() 方法检索范围。此处的a1Notation 参数由startend 表示,您可以在其中获得脚本所需的值。

注意

上面的脚本是考虑到stockNamestockCmps1s2都是关联的,这意味着它们都存储了相同数量的值。

参考

【讨论】:

  • 非常感谢!这就是我想要的。现在我们为每个比较发送邮件。是否可以从 if 循环中附加成功事件并在单个邮件中发送所有真实事件。
  • 您好@Sen,您只需将邮件发送到for 循环之外并进行所需的比较,并使用循环中的比较构建消息。干杯!
  • 非常感谢@ale13
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-09
  • 1970-01-01
  • 1970-01-01
  • 2018-12-14
  • 1970-01-01
相关资源
最近更新 更多