所以我必须在Google表格中使用工作表/窗格。我的“设置”表格包含许多复选框。
我想要的是,能够根据这些复选框的真/假状态显示/隐藏第二张表中的特定列。
想法是每个复选框将对应于第二个工作表中的特定列。
我知道如何在Excel中执行此操作,但除了今天早上我能够使用Google之外,我几乎没有使用Google Apps脚本的经验。
任何人都可以通过指向我正确的道路来帮助我吗?
作为参考,我在Excel中用于相同功能的Visual Basics脚本包含在下面:
Private Sub CheckBox17_Click()
['Competitive Matrix (EMEA NE)'!S:S].EntireColumn.Hidden = Not CheckBox17
End Sub
它会比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已经很好地介绍了,请查看以下上面使用的函数:
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