Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在google应用程序脚本中使用setValues屏蔽值?_Javascript_Google Apps Script_Google Spreadsheet Api - Fatal编程技术网

Javascript 如何在google应用程序脚本中使用setValues屏蔽值?

Javascript 如何在google应用程序脚本中使用setValues屏蔽值?,javascript,google-apps-script,google-spreadsheet-api,Javascript,Google Apps Script,Google Spreadsheet Api,我正在使用GoogleApps脚本构建一个自定义电子表格。为了提高脚本的渲染速度,我首先构建一个输出值数组,然后使用setValues()一次性构建电子表格 当我尝试使用setFormulas()将公式添加到电子表格时,它也会覆盖我的所有值。现在我有一个例子,setValues()覆盖我的公式,setFormulas()覆盖我的值 是否有一种方法可以为输出数组中的特定元素指定屏蔽值,以便这些元素不会覆盖电子表格中的数据 理想情况下,我会将输出数组的每个元素初始化为该屏蔽值,然后只有未屏蔽的元素才

我正在使用GoogleApps脚本构建一个自定义电子表格。为了提高脚本的渲染速度,我首先构建一个输出值数组,然后使用
setValues()
一次性构建电子表格

当我尝试使用
setFormulas()
将公式添加到电子表格时,它也会覆盖我的所有值。现在我有一个例子,
setValues()
覆盖我的公式,
setFormulas()
覆盖我的值

是否有一种方法可以为输出数组中的特定元素指定屏蔽值,以便这些元素不会覆盖电子表格中的数据


理想情况下,我会将输出数组的每个元素初始化为该屏蔽值,然后只有未屏蔽的元素才会显示在电子表格中。

不幸的是,
setValues()
setFormulas()
方法都不支持屏蔽。如果将公式指定给
setValues()
方法,则应正确设置该公式,这样您就可以在一次调用
setValues()
中同时设置值和公式


对于任何通过谷歌找到这一点的人来说,在新的工作表中使用setValues()公式似乎是可行的

更具体地说,我使用这样的代码在工作表上完成工作后将公式放回:

function setValuesAndFormulas() {
  var sheet = SpreadsheetApp.getActive().getActiveSheet();
  var range = sheet.getDataRange();
  var values = range.getValues();
  var formulas = range.getFormulas();

  for (var i = 0; i < values.length; i++) {
    for (var j = 0; j < values[i].length; j++) {
      if (formulas[i][j].charAt(0) == "=") {
        values[i][j] = formulas[i][j];
      }
    }
  }

  range.setValues(values);
}
函数setValuesAndFormulas(){
var sheet=SpreadsheetApp.getActive().getActiveSheet();
var range=sheet.getDataRange();
var values=range.getValues();
var formulas=range.getFormulas();
对于(变量i=0;i

希望有帮助

这在新的谷歌电子表格中似乎不起作用。还有别的工作吗?把所有东西都写成公式对最终用户来说不是很有用。谢谢,这正是我需要的!有一件事,我认为我们不需要检查
if(公式[I][j]。charAt(0)==“=”
,可以只检查
if(公式[I][j])
,对吗?不确定,我已经很久没有这样做了。如果你能解决这个问题,请随意编辑我的答案:)
function setValuesAndFormulas() {
  var sheet = SpreadsheetApp.getActive().getActiveSheet();
  var range = sheet.getDataRange();
  var values = range.getValues();
  var formulas = range.getFormulas();

  for (var i = 0; i < values.length; i++) {
    for (var j = 0; j < values[i].length; j++) {
      if (formulas[i][j].charAt(0) == "=") {
        values[i][j] = formulas[i][j];
      }
    }
  }

  range.setValues(values);
}