Функция Google App - пересчитать / обновить значения - PullRequest
1 голос
/ 05 июня 2019

Я уже некоторое время пытался найти решение этой проблемы.

Это код

function CHECK(INPUT) {
  var url = "GOOGLE SHEET URL" + INPUT;
  var response = UrlFetchApp.fetch(url);
  var json = response.getContentText("UTF-8");
  var data = JSON.parse(json);
  var price = data;
  SpreadsheetApp.flush();
  return price;
}

Эта функция извлекает значения из листа Google и, как результат,показать его в другом листе Google.Проблема в том, что при изменении источника значение назначения не изменяется.

Все, что мне нужно, это то, что заставит пересчитывать значения в листе Google, или функция обновления или что-то еще, но будет сохранять значения до-дата.

PS =CHECK(INPUT, **DATE**) не является решением

1 Ответ

1 голос
/ 06 июня 2019
  • Вы хотите принудительно пересчитать пользовательскую функцию с помощью Google Apps Script.

Если мое понимание верно, как насчет этого примера сценария?Я думаю, что есть несколько ответов для вашей ситуации.Поэтому, пожалуйста, подумайте об этом как об одном из нескольких ответов.

В этом примере сценария, чтобы пересчитать функцию, функция заменяется той же самой функцией.

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

В этом примере сценария, когда =CHECK(INPUT) является ячейкой "A1" для "Sheet1", функция заменяется той же функцией.

var sheetName = "Sheet1"; // Please modify this for your situation.
var cell "A1"; // Please modify this for your situation.

var ss = SpreadsheetApp.getActiveSpreadsheet();
var range = ss.getSheetByName(sheetName).getRange(cell);
var formula = range.getFormula();
range.clearContent();
SpreadsheetApp.flush();
range.setFormula(formula);

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

В этом примере сценария все функции в «Листе 1» заменены одной и той же функцией.

var sheetName = "Sheet1"; // Please modify this for your situation.

var ss = SpreadsheetApp.getActiveSpreadsheet();
var range = ss.getSheetByName(sheetName).getDataRange();
var values = range.getValues();
var formulas = range.getFormulas();
var replacedValues = values.map(function(e, i) {return e.map(function(f, j) {return formulas[i][j] || f})});
range.clearContent();
SpreadsheetApp.flush();
range.setValues(replacedValues);

Примечание:

  • Когда выполняются приведенные выше примеры сценариев,функция пересчитывается.Например, один из примеров сценариев устанавливается как управляемый по времени триггер, функция, которую вы хотите пересчитать, принудительно обновляется с помощью управляемого по времени триггера.

Ссылки:

Если я неправильно понял ваш вопрос, и это не то направление, которое вы хотите, я приношу свои извинения.

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