Замена формулы для случайного значения той же формулой. Стоимость не меняется? - PullRequest
0 голосов
/ 16 июня 2020

У меня есть сценарий, который выбирает случайный "шаблонный" диапазон формул из листа, помещает его на основной лист, а затем формулы в шаблоне получают случайные значения из других листов. Проблема, с которой я сталкиваюсь, заключается в том, что setFormulas() иногда «меняет» формулу ячейки на ту же формулу и не получает новый случайный результат. В настоящее время я пытаюсь сначала запустить clearContent(), но, похоже, это не имеет никакого значения.

function generate(row)
{
  row = row * 3;

  var templates = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("templates");
  var generator = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("generator");

  var range = templates.getRange(1, 1, templates.getLastRow(), 1).getValues(); //get a 2d array of the first column in the templates sheet (is there a way to get this as a 1d array?)
  var cells = [];
  for(i = 0; i < range.length; i++)
  {
    cells[i] = range[i][0]; // turn the 2d array into a 1d array
  }

  var end = cells.lastIndexOf(generator.getRange(2, 2).getValue()) + 3; // upper bound when getting a random template
  var rand = (Math.floor(Math.random() * Math.floor(end / 3)) * 3) + 1; // random row number
  var formulas = templates.getRange(rand, 1, 3, 6).getFormulas(); // get formulas from random template

  generator.getRange(row, 2, 3, 6).clearContent(); // it's all gone right?
  generator.getRange(row, 2, 3, 6).setFormulas(formulas); // so why is it still here?
}

У меня он работал правильно, затем я изменил 'end' с последней строки шаблонный лист должен быть основан на ячейке на основном листе. Я не понимаю, как это могло повлиять на поведение setFormulas().

...