首页 > 解决方案 > 用相同的公式覆盖随机值的公式。价值不变?

问题描述

我有一个脚本,它从工作表中选择一个随机的“模板”范围的公式,将其放入主工作表中,然后模板中的公式从其他工作表中获取随机值。我遇到的问题是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?
}

我让它正常工作,然后我将“结束”从模板表的最后一行更改为基于主表中的单元格。不过,我看不出这会对setFormulas()行为方式产生任何影响。

标签: google-apps-scriptgoogle-sheets

解决方案


推荐阅读