Обновите пользовательскую функцию автоматически - PullRequest
1 голос
/ 19 ноября 2010

У меня есть пользовательская функция в виде скрипта Google Spreadsheet, которая зависит от значений некоторых других ячеек.Он работает нормально, когда я помещаю его в ячейку в первый раз, но когда я меняю данные в других ячейках, он остается прежним.Как я могу сделать так, чтобы первая ячейка обновляла свое значение автоматически при изменении других ячеек?

Ответы [ 2 ]

4 голосов
/ 26 ноября 2010

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

function onEdit(event) {
  if (SpreadsheetApp.getActiveSheet().getName().substr(0,5) == "thing")
    SpreadsheetApp.getActiveSheet().getRange("I1").setValue(myCustomFunction());
}

Это делает листы, чье имя начинается с thing, получает результат myCustomFunction в ячейку I1.

0 голосов
/ 12 октября 2018

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

Вот как я это делаю, но это не лучшее решение. Я ищу лучший.

Если какое-либо значение в листе Цены и столбце 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)

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

...