【问题标题】:Is there a other way to reset fields有没有其他方法可以重置字段
【发布时间】:2020-12-11 09:47:05
【问题描述】:

我正在尝试创建重置电子表格功能以清除电子表格。 现在我使用循环来定义每一列的值。 'Dikte' 需要设置为6。第一列必须是假的。 clearContent 清除所有内容。有没有更好的方法?

  var values = [];
  for (i = 0; i < 12; i++) {
    values.push([false,'','','','','6','0'])
  }
  var oldoak_data = SS.getRangeByName('oldoak_data').setValues(values);

【问题讨论】:

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


    【解决方案1】:

    解释:

    解决方案 1:

    • 您可以使用map 摆脱for 循环。这将给您带来一些性能提升,因为map 比常规循环更快。

    • 一般来说,由于这种方法会覆盖以前的值,因此最好在设置新值之前清除内容。

    解决方案 2:

    • 另一个想法是通过名称定义工作表对象。在我的情况下Sheet1。仅清除所需范围'A2:E13',并将其他两列的值分别设置为6 和0。不确定这种方法是否更快,但它可能更有效。

    解决方案:

    解决方案 1:

    function resetFields() {
      const SS = SpreadsheetApp.getActive();
      const rng = SS.getRangeByName('oldoak_data');
      const values = rng.getValues().map(r=>[false,'','','','','6','0'])
      rng.clearContent();
      rng.setValues(values);
    }
    

    解决方案 2:

    function resetFields() {
      const SS = SpreadsheetApp.getActive();
      const SH = SS.getSheetByName('Sheet1');
      const rngClear = SH.getRange('A2:E13');
      rngClear.clearContent();
      SH.getRange('F2:F13').setValue(6);
      SH.getRange('G2:G13').setValue(0);
    }
    

    解决方案 2 的示例表:

    【讨论】:

    • 解决方案 1,对我来说是最好的方法。解决方案 2,当我在标题列之前添加新行时。更改了相对参考,例如 (A1:A10)。这就是我使用命名范围的原因。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 2021-09-06
    相关资源
    最近更新 更多