【问题标题】:Google Script to hide rows in Google Sheets谷歌脚本隐藏谷歌表格中的行
【发布时间】:2020-04-02 02:26:51
【问题描述】:

我有 Google 表格,其中包含产品类型列(具有以下下拉值类型 1、类型和类型)和行,如图所示。我正在尝试使用谷歌脚本来实现仅显示基于产品类型值的行(如果我选择类型 1,我想隐藏在同一列中具有类型 2 和类型 3 值的行)。在这里我不能使用过滤器,因为某些行中有一些标题。任何帮助将不胜感激。

【问题讨论】:

  • 欢迎。请您分享您的电子表格副本,并解释您对过滤器的评论“这里我不能使用过滤器,因为某些行中有一些标题。”
  • 我同意 Tedinoz 的观点。您能否分享一些代码并就您的问题向我们提供更多详细信息?这里有一个链接来学习如何做一个好问题stackoverflow.com/help/how-to-ask
  • 请看看这是否回答了您的问题 - yagisanatode.com/2018/05/26/…

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


【解决方案1】:

您想要隐藏或显示行,具体取决于单元格 A1 中的选定类型

这是一个自动运行的简单脚本onEdit,即每次编辑电子表格中的单元格时。它使用showRows()hideRows() 方法,并将A 列中的条目与单元格A1 中的值进行比较。它隐藏条目包含单词“类型”但不是所选类型的所有行。

function onEdit() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("Sheet1"); // adapt to your needs
  var toShow=sheet.getRange("A1").getValue();
  var startRow=10 //adapt to your needs
  var lastRow = sheet.getLastRow();
  Logger.log(lastRow);
  for (i = startRow; i <= 320; i++) {
    var type = sheet.getRange("A" + i).getValue();
    if (type == toShow||toShow=="Product Type") {
      sheet.showRows(i);
      Logger.log('row '+i+' shown');
    }
  }
  for (i = startRow; i <= lastRow; i++) {
    var type = sheet.getRange("A" + i).getValue();
    if (type != toShow && type.indexOf('Type')!=-1) {      
      Logger.log(i+'i hidden');
      sheet.hideRows(i);
    }
  }
}

您需要将脚本绑定到电子表格并手动运行 一次 - 触发授权流程。

【讨论】:

  • 感谢您的脚本。但我想根据我从项目类型值中选择的类型隐藏行。如果我选择类型 2,那么我想隐藏具有类型 1 和类型 3 的行,反之亦然,有什么建议吗?我知道这个脚本。
  • 对不起,我误解了这个问题。我刚刚相应地更新了我的代码。
  • 感谢您帮助我。脚本工作正常,但它隐藏了所有不需要的行。有标题,无论产品类型值如何,我都不想避免,并且这个脚本在我加载时隐藏了所有行,因为它也在为“产品类型”应用脚本(它是下拉标题),它不需要。我试图更新脚本,但它没有按预期工作。任何帮助将不胜感激。
  • 如果您希望脚本从第 11 行开始隐藏/显示行 - 请将 var startRow=2 修改为 var startRow=11。能解决问题吗?
  • 或许您可以提供一份工作表的副本(不含机密数据),以便我更好地理解您的要求?
猜你喜欢
  • 1970-01-01
  • 2022-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 2021-11-24
  • 1970-01-01
相关资源
最近更新 更多