Авторасширяющаяся формула, а затем копировать значения вставки - PullRequest
0 голосов
/ 13 января 2020

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

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

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

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

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

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

Спасибо

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 Ответ

2 голосов
/ 14 января 2020

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

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

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

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

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