根据复选框显示/隐藏特定列

问题描述 投票:-1回答:1

所以我必须在Google表格中使用工作表/窗格。我的“设置”表格包含许多复选框。

我想要的是,能够根据这些复选框的真/假状态显示/隐藏第二张表中的特定列。

想法是每个复选框将对应于第二个工作表中的特定列。

我知道如何在Excel中执行此操作,但除了今天早上我能够使用Google之外,我几乎没有使用Google Apps脚本的经验。

任何人都可以通过指向我正确的道路来帮助我吗?

作为参考,我在Excel中用于相同功能的Visual Basics脚本包含在下面:

Private Sub CheckBox17_Click()
['Competitive Matrix (EMEA NE)'!S:S].EntireColumn.Hidden = Not CheckBox17
End Sub
checkbox google-apps-script google-sheets show-hide
1个回答
0
投票

它会比Visual Basic版本更冗长:)

function hideColumns() {
  // takes active spreadsheet (the one the script is bound to) into work
  var ss = SpreadsheetApp.getActiveSpreadsheet(); 
  var settingsSheet = ss.getSheetByName('Settings'); // insert your sheet name here
  var dataSheet = ss.getSheetByName('Data');
  // gets values from all the cells in the settings sheet into a two-dimensional array, like [[1, 2],[3, 4]]
  var values = settingsSheet.getDataRange().getValues(); 
  for (var i in values) {
    // checks every row of data if the value in first column is false or not
    if (values[i][0] == 'false') { 
      // my assumption is that each of your checkboxes is on a new line; 
      // hideColumn will hide those columns that correspond to rows to in the settings sheet
      dataSheet.hideColumn(dataSheet.getRange(1, i)); 
    }
  }
}

Google Apps脚本提供了关于他们几乎所有服务的非常好的文档,SpreadsheetApp已经很好地介绍了,请查看以下上面使用的函数:

hideColumn()

getRange()

getValues()

UPD:使用onEdit函数的版本 - 它查看已编辑的单元格并检查它是否在“设置”表的第一列中,如果新值是true。如果一切正确,它将隐藏与编辑行对应的“数据”中的列。

function onEdit(e) {
  var dataSheet = e.source.getSheetByName('Data');
  var currentSheet = e.range.getSheet().getName();
  var row = e.range.getRow();
  var col = e.range.getColumn();
  if (currentSheet === 'Settings' && col === 1 && e.value.toLowerCase() == 'false') {
    dataSheet.hideColumn(dataSheet.getRange(1, row));
  }
}

更多关于qazxsw poi函数中qazxsw poi对象的内容:qazxsw poi

© www.soinside.com 2019 - 2024. All rights reserved.