Автоматическое расширение формулы, а затем копирование значений вставки

У меня есть функция, которая добавляет авторасширяющую формулу к некоторой ячейке строки заголовка

В следующей строке кода я получаю Display Values а затем отправляю их обратно на лист

Я обеспокоен тем, что получу значения в диапазоне авторасширяющихся формул before того, before они закончат expanding

Будет ли это r.getDisplayValues(); получить значения before завершения автоматического расширения? тем самым получая значения с пустыми данными, которые должны иметь данные

Я проверил различные сценарии, но это не является окончательным

Кроме того, я не смог найти ничего в поиске по этому

Спасибо

function setFormulasAE_n() {
  var ss    =SpreadsheetApp.getActive();
  var sheet =ss.getSheetByName('Elements');
  var LC    = sheet.getLastColumn();
  var LR    = sheet.getLastRow();

  //Auto-expanding Formulas to be added
  //Two dim array with 1 row
  var formulas = [[
"=ArrayFormula({"ig_TagsHistorical";iferror(vlookup(INDIRECT("Elements!A2:A"&counta(Elements!$AJ$1:$AJ)), 'HelperElements_(ignore)'!$A$2:$G, {5}, 0))})",
  "=ArrayFormula({"Additional Networks";iferror(vlookup(INDIRECT("Elements!A2:A"&counta(Elements!$AJ$1:$AJ)), 'Helper_(ignore)'!$A$2:$D, {4}, 0))})",
 ]];

  //Add auto-expanding formulas to Cell(s)
  var cell = sheet.getRange(1,LC+1,1,formulas[0].length);
  cell.setFormulas(formulas);

  //Get range and post back Display Values
  var r = sheet.getRange(1,LC+1,LR,formulas[0].length);
  var v = r.getDisplayValues();
  r.setValues(v)

}

Всего 1 ответ


Функция setFormulas() вы использовали в сценарии, является синхронной, что по сути означает, что код, следующий за инструкцией , не будет выполнен, пока функции не завершат выполнение.

Таким образом, r.getDisplayValues() всегда будет получать значения после r.getDisplayValues() .

Чтобы убедиться, что полученные значения являются ожидаемыми, используйте функцию flush() после строки кода cell.setFormulas(formulas) . Что делает flush() , так это применяет все ожидающие изменения в электронной таблице - точнее, формулы, которые вам нужно установить.

Кроме того, вы можете проверить эти ссылки, поскольку они могут быть вам полезны:


Есть идеи?

10000