Как автоматически обновить sh результатов пользовательских формул в Google Sheets? - PullRequest
0 голосов
/ 11 февраля 2020

У меня есть простая пользовательская функция margin() в Google Sheet (с помощью Apps Script), которая принимает значение от ячейка H55 на листе с именем "Курсы валют" и просто возвращает то же значение, что и в ячейке.

function margin()
{     
  var price = 0;
  price = SpreadsheetApp.getActiveSpreadsheet().getRange("Exchange Rates!H55").getValue();
  return price;
};

Если я добавлю = margin () в любую ячейку (например, H56) - это работает. Но когда я обновляю значение в ячейке H55 , скажем ... от числа 1,05 до 1,55 - со значением * ничего не происходит 1017 * ячейка H56 . (Где формула равна margin() функция).

Когда я помещаю формулу =margin() в любую ячейку, она вычисляется правильно в первый раз, возвращая 1,55 . (Опять же - когда я меняю значение ячейка H55 на другое число, ячейки, в которых моя формула равна , не обновляются ).

Пожалуйста, мне нужно как-нибудь снова запустить скрипт? Или что я могу сделать? (Я просто попытался обновить sh страницы, но ничего не произошло, и я определенно не хочу переписывать каждую ячейку с моей функцией.) Спасибо!

1 Ответ

0 голосов
/ 12 февраля 2020

Хорошо, есть пара полезных ответов здесь и здесь согласно комментариям.


Но в принципе, если я понимаю правильно, вы хотите, чтобы ваша пользовательская функция margin() получила значение данной ячейки (H55 в вашем коде), в идеале что-то с ней сделайте и верните результат. (В существующем состоянии вы просто возвращаете значение H55).

Почему бы вашей пользовательской функции не использовать H55 в качестве параметра? Таким образом, когда значение H55 изменится, все ваши экземпляры вашей пользовательской функции будут обновлены.

Пример:

enter image description here

Пример сценария:

function margin(price){

  // Return the margin (10%)
  var margin = price*0.1;
  return margin;
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...