【问题标题】:How can I mask values using setValues in google apps scripts?如何在谷歌应用脚​​本中使用 setValues 屏蔽值?
【发布时间】:2013-01-15 13:16:47
【问题描述】:

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

当我尝试使用 setFormulas() 将公式添加到电子表格中时,它也会覆盖我的所有值。所以现在我遇到了setValues() 覆盖我的公式和setFormulas() 覆盖我的值的情况。

有没有一种方法可以为输出数组中的特定元素指定掩码值,这样这些元素就不会覆盖电子表格中已有的数据?

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

【问题讨论】:

    标签: javascript google-apps-script google-spreadsheet-api


    【解决方案1】:

    对于通过 Google 找到此内容的任何人,现在对公式使用 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);
    }
    

    希望有帮助!

    【讨论】:

    • 谢谢,这正是我所需要的!有一件事,我认为我们不需要检查if (formulas[i][j].charAt(0) == "="),可以检查if (formulas[i][j]),对吧?
    • 不确定,我已经很久没有这样做了。如果你解决了,请随时编辑我的答案:)
    【解决方案2】:

    很遗憾,setValues()setFormulas() 方法都不支持屏蔽。如果给setValues() 方法提供了一个公式,那么它应该正确设置它,因此您可以在一次调用setValues() 中设置值和公式。

    range.setValues([['foo', '=LEN("bar")']]);
    

    【讨论】:

    • 这似乎不适用于新的 Google 电子表格。还有其他解决方法吗?将所有内容都写成公式对最终用户来说不是很有用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-03
    相关资源
    最近更新 更多