Скрипт Google Sheets - если значение в ячейке 1 достигает нового максимума или минимума, мне нужно обновить ячейку 2 с новым значением - PullRequest
0 голосов
/ 05 ноября 2019

В моей электронной таблице Google с именем «Портфолио» у меня есть 3 строки:

  1. Строка 1 содержит формулы для текущей цены акций, например =GOOGLEFINANCE("VTI"), для примерно дюжины акций, идущих вниз поряд. Для этого примера это находится в ячейке A2.
  2. Строка 2, ячейка A3, будет содержать данные о том, когда цена в A2 достигнет меньшего значения, чем A3
  3. Строка 3, ячейка A4, будет содержатьданные о том, когда цена в А2 достигает большей суммы, чем А4

enter image description here

Задача, с которой я сталкиваюсь, и я чувствую, что это просто, нопо какой-то причине я ломаю голову над этим, если мне нужно, чтобы значение в ячейках A3 и A4 оставалось неизменным после его попадания. Поэтому, если цена VTI достигает нового минимума в течение торговых часов, я хочу, чтобы этот минимум обновился до ячейки A3 и не изменился, если он не достигнет нового минимума позднее в тот же день или в следующем месяце. То же самое касается максимума в A4.

Вот что у меня есть в редакторе скриптов:

function storeValue() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('Portfolio');
  var A2cell = sheet.getRange('A2').getValues();
  var A3cell = sheet.getRange('A3').getValues();
  var A4cell = sheet.getRange('A4').getValues();

  if (A2cell<=A3cell) 
  {
    A3cell.setValue('A2');
  }
};

Ответы [ 2 ]

1 голос
/ 06 ноября 2019

Ваша проблема может быть решена с помощью формул GOOGLEFINANCE.

Если вы прочитали для нее документацию , вторым параметром будет то значение, которое вы хотите получить.

В вашем случае вы хотите, чтобы ваши клетки были:

  • =GOOGLEFINANCE('VTI','high')
  • =GOOGLEFINANCE('VTI','low')

Надеюсь, это поможет!

1 голос
/ 05 ноября 2019

Я немного поиграл с этим. Я подумал, что поделюсь этим с вами и посмотрю, как быстро вы сможете пробить сквозь него дыры.

Параметр v1 - это ссылка на ячейку, которую вы хотите просмотреть.

Параметр name - это имя, присвоенное этому значению, которое будет использоваться в службе свойств для хранения последнего наименьшего значения, чтобы вы могли использовать формулу в нескольких ячейках, не взаимодействуя с другимислучаи.

Одна из проблем, с которыми я столкнулся, заключалась в том, что я не знаю, возможно ли определить, где находится формула или где расположена ячейка, в которой находится ваш мониторинг, если бы я мог, тогда я мог бы использовать эту ячейку. Обозначение A1 в качестве имени.

function WATCHFORNEWLOWS(v1,name){
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getActiveSheet();
  var ps=PropertiesService.getScriptProperties();
  if(!ps.getProperty(name))ps.setProperty(name,v1);
  if(v1<ps.getProperty(name)) {
    ps.setProperty(name,v1);
    return v1;
  }else{
    return parseInt(ps.getProperty(name));
  }
}

Надеюсь, это поможет, но у меня есть серьезные сомнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...