Я хочу сравнить цену акции со стоп-лоссом и предупредить меня по электронной почте - PullRequest
0 голосов
/ 04 апреля 2020

Я хочу сравнить цену моего списка акций с моим установленным Стоплоссом, который сохраняется и как только условие вызывает оповещение по электронной почте. Ниже мой код

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

}

Это для одной акции. Как я могу сделать его более обобщенным c и скомпилировать весь список акций, которые передают условие в одну почту. Спасибо.

Сен

1 Ответ

0 голосов
/ 08 апреля 2020

Чтобы иметь возможность выбрать все значения , вам понадобится for l oop.

Фрагмент

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 l oop, а затем на основе условий Вы устанавливаете, отправляете электронное письмо и предупреждаете пользователя. Диапазон извлекается с помощью метода getRange() с параметром a1Notation. Параметр a1Notation здесь представлен start и end диапазона, в котором у вас есть значения, необходимые для сценария.

Примечание

Приведенный выше скрипт построен с учетом того факта, что stockName, stockCmp, s1, s2 все связаны, то есть все они имеют одинаковое количество значений, хранящихся в них.

Ссылка

...