【问题标题】:Clear Row Data Based on Value in Google Sheet ( Specific Data ) appscript根据谷歌表中的值清除行数据(特定数据)appscript
【发布时间】:2021-04-03 11:30:28
【问题描述】:

我正在寻找基于值的清除特定行内容/数据,然后隐藏行。

在 { F Col } 中键入值“Done” 清除 { E , C Col } 的值

当一切都完成后,隐藏行。

function ClearContentThenHideRow() {
  var s = SpreadsheetApp.getActive().getSheetByName('Main');
  s.showRows(1, s.getMaxRows());
  
  s.getRange('F:F')
    .getValues()
    .forEach( function (r, i) {
    if (r[0] == 'Done') 
      //sheet.getRange(["C:C","E:E"]).clearContent(); // clear content not working 
      s.hideRows(i + 1);
    });
}

【问题讨论】:

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


    【解决方案1】:

    修改点:

    • 关于sheet.getRange(["C:C","E:E"]).clearContent();,
      • sheet 未声明。
      • 如果要使用范围列表,请使用getRangeList()
    • 当使用s.getRange('F1:F' + s.getLastRow())代替s.getRange('F:F')时,我认为流程成本可以降低一点。

    当以上几点反映到你的脚本中时,它变成如下。

    修改脚本:

    function ClearContentThenHideRow() {
      var s = SpreadsheetApp.getActive().getSheetByName('Main');
      // s.showRows(1, s.getMaxRows()); <--- removed
      s.getRange('F1:F' + s.getLastRow())
        .getValues()
        .forEach(function (r, i) {
          if (r[0] == 'Done') {
            s.getRangeList(["C" + (i + 1), "E" + (i + 1)]).clearContent();
            s.hideRows(i + 1);
          }
        });
    }
    

    参考:

    【讨论】:

    • 代码运行良好。但是出了点问题,当我在“F COL”中写入完成时,它运行脚本并取消隐藏之前的所有行,然后隐藏所有当前行。我的意思是它闪烁所有隐藏行,然后一次又一次地隐藏所有行。
    • @Manish S 感谢您的回复。我带来的不便表示歉意。在您的脚本中,使用了s.showRows(1, s.getMaxRows())。从您的脚本中,我认为您需要使用。但我认为这可能是您当前问题的原因。例如,是否按照您期望的相同方向删除它?为此,我更新了我的答案。你能确认一下吗?如果这不是您期望的方向,我再次道歉。
    猜你喜欢
    • 1970-01-01
    • 2015-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多