Пользовательская функция электронной таблицы Google: как получать постоянно обновляемую оценку?

Я написал пользовательскую функцию скрипта приложения Google в скрипте, связанном с моей электронной таблицей документов Google. Функция вызывает стороннюю службу для получения данных. Я могу поместить функцию в ячейку:

=myfunction("something")

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

Обновить

Например:

=temperature("90120")

Для получения текущей температуры по заданному почтовому индексу. Кроме того, на моем листе их могут быть десятки или сотни, поэтому я бы предпочел что-то производительное и удобное в обслуживании. На самом деле это не обязательно должно быть непрерывным, опрос один раз в минуту или, в идеале, может работать чаще. Мне интересно, есть ли какой-то способ из сценария установить таймер для запуска для обновления диапазона ячеек?


person User    schedule 05.12.2012    source источник
comment
Это не постоянно: = myfunction (something, GoogleClock ()), где GoogleClock срабатывает один раз в минуту, что должно привести к пересчету вашей пользовательской функции.   -  person ScampMichael    schedule 05.12.2012
comment
@ScampMichael: спасибо, похоже, полезно для разовых расчетов, хотя у меня это будет во многих ячейках, поэтому я бы предпочел что-то попроще для ввода   -  person User    schedule 06.12.2012
comment
Возможно создание другого листа, в котором почтовые индексы собираются функцией ФИЛЬТР. Вы можете подготовить сценарий, который извлекает темп. и установите триггер на скрипте, скажем, каждую минуту. Используя VLOOKUP, вы можете получить актуальную температуру. для данного почтового индекса.   -  person Jacob Jan Tuinstra    schedule 06.12.2012


Ответы (2)


Не уверен, зачем вам десятки или сотни. 1. Используется ли электронная таблица другим процессом? 2. Проверяют ли электронные таблицы реальные пользователи?

Если # 1, вы можете заменить электронную таблицу пользовательским API через службу содержимого, чтобы возвращать результаты JSON для всех температур.

Если № 2, вы можете достичь пределов или проблем с производительностью из-за того, что так много функций запускается так часто. Зачем запускать функции, если никто не просматривает результаты. В качестве альтернативы вы можете сделать его по запросу с настраиваемым параметром меню.

person Dito Steve    schedule 07.12.2012

У меня похожая проблема.

Вот как я это делаю в банкомате, но это не лучшее решение. Ищу лучшую.

Если какое-либо значение в таблице «Цены» и в столбце D изменится. Это означает, что если какое-либо значение ячейки изменяется во всем столбце, оно обновляет значение пользовательской функции.

//Search Price sheet with the given name. Return price. dummy param updates google ss once the "Prices" sheet values changed.
function searchPrice(price,dummy)
{
  var SPREADSHEET_NAME = "Prices";
  var SEARCH_COL_IDX = 2;
  var RETURN_COL_IDX = 3;
  var values = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(SPREADSHEET_NAME).getDataRange().getValues();
  for (var i = 0; i < values.length; i++)
  {
    var row = values[i];
    if (row[SEARCH_COL_IDX] == price)
    {
      return row[RETURN_COL_IDX];
    }
  }
}

Вот как вы это называете = searchPrice (B8, Цены! D: D)

Просто дайте вашей пользовательской функции фиктивный параметр. В пользовательской функции он ничего не делает.

person w2lf    schedule 12.10.2018