У меня есть сценарий, который выбирает случайный "шаблонный" диапазон формул из листа, помещает его на основной лист, а затем формулы в шаблоне получают случайные значения из других листов. Проблема, с которой я сталкиваюсь, заключается в том, что 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()
.