Google apps script 你能根据谷歌表格中的单元格值隐藏一列吗?
因此,我对使用谷歌表单,尤其是其中的脚本部分非常陌生 我目前正在制作一个F12021记分板,基本上允许我选择不同的比赛,以便了解如果不包括某些比赛,不同的车手如何赢得冠军,这显然只是一些有趣的事情,而不是什么严肃的事情。这有点像Youtube频道的Chainbear,他一直在做这类事情 如果第三页(D2021Graph)上的C1=False,我需要隐藏C列,当C1=True时,我希望它们不隐藏,当D1=False时隐藏D列,依此类推。C1和D1基于第一张工作表上的复选框(racesults2021)。因此,绘制该工作表上所有值的图形可以避免某些列,以防我要取消选择它们 以下是谷歌工作表的副本: 非常感谢您的帮助,如果您需要更多信息,请告诉我Google apps script 你能根据谷歌表格中的单元格值隐藏一列吗?,google-apps-script,google-sheets,Google Apps Script,Google Sheets,因此,我对使用谷歌表单,尤其是其中的脚本部分非常陌生 我目前正在制作一个F12021记分板,基本上允许我选择不同的比赛,以便了解如果不包括某些比赛,不同的车手如何赢得冠军,这显然只是一些有趣的事情,而不是什么严肃的事情。这有点像Youtube频道的Chainbear,他一直在做这类事情 如果第三页(D2021Graph)上的C1=False,我需要隐藏C列,当C1=True时,我希望它们不隐藏,当D1=False时隐藏D列,依此类推。C1和D1基于第一张工作表上的复选框(racesults202
function onEdit(e) {
//e.source.toast('Entry');
//Logger.log(JSON.stringify(e));
const sh=e.range.getSheet();
const shts=["Sheet1","Sheet2"];//Change the sheet names to whatever you want
const cols=[3,4];
if(shts.indexOf(sh.getName())!=-1 && e.range.rowStart==1) {
if(cols.indexOf(e.range.columnStart)!=-1) {
if(e.value=="TRUE")sh.hideColumns(e.range.columnStart);
//if(e.value=="FALSE")sh.showColumns(e.range.columnStart);
}
}
}
在“提前计划”部分,您的想法有点短,因为如果您隐藏了该列,那么如何取消选中该复选框
在“提前计划”部分,您的想法有点短,因为如果您隐藏了该列,那么如何取消选中该复选框?问题和解决方案:
如果我理解正确,只要选中或取消选中racesults2021
中相应列中的复选框,您就会希望隐藏/取消隐藏D2021Graph
中的列
如果是这种情况,您可以使用一个简单的触发器执行以下操作:
- 使用,检查编辑的单元格是否为复选框之一(检查其是否为正确的图纸、行和列)
- 考虑到大奖赛开始于
表中的第3列和图表
表中的第8列,并且它们在两张表中的顺序相同,请在比赛结果
中找出与编辑的复选框相对应的图表
比赛结果
- 获取相应单元格的值,并根据该值是否为布尔值使用或
racesults2021
中相应列中的复选框,您就会希望隐藏/取消隐藏D2021Graph
中的列
如果是这种情况,您可以使用一个简单的触发器执行以下操作:
- 使用,检查编辑的单元格是否为复选框之一(检查其是否为正确的图纸、行和列)
- 考虑到大奖赛开始于
表中的第3列和图表
表中的第8列,并且它们在两张表中的顺序相同,请在比赛结果
中找出与编辑的复选框相对应的图表
比赛结果
- 获取相应单元格的值,并根据该值是否为布尔值使用或
这正是我所需要的,你的代码只有一个小问题,复选框在第5行而不是第2行,但这是一个简单的修复。这正是我所需要的,你的代码只有一个小问题,复选框在第5行而不是第2行,但这是一个简单的修复。我想你有点误解了,带复选框的列不应该隐藏,相反,它在工作表“D2021graph”上关联的列应该隐藏。哦,那么你希望一个工作表中的列隐藏另一个工作表中的相同列,是吗?有点,但我已经让它工作了,但无论如何,谢谢!我基本上希望C栏隐藏在“D2021Grand”中,当H5上的框“RraceSulsTS2021”未勾选。我很高兴你能自己找出这是最好的解决方案,也许你应该考虑在轨道溢出问题上回答问题,我想你有点误解了。带复选框的列不应该隐藏,相反,它在工作表“D2021graph”上关联的列应该隐藏。哦,那么你希望一个工作表中的列隐藏另一个工作表中的相同列,是吗?有点,但我已经让它工作了,但无论如何,谢谢!我基本上希望C栏隐藏在“D2021GRAPH”中,当H5上的框“RraceSulsTS2021”未勾选。我很高兴你能自己弄明白,这总是最好的解决方案,也许你应该考虑在轨道溢出问题上回答问题。
var firstColResults = 8; // Grand Prix start at column H in RaceResults2021
var rowResults = 2;
var firstColGraph = 3; // Grand Prix start at column C in D2021Graph
var rowGraph = 1;
var resultsSheetName = "RaceResults2021";
var graphSheetName = "D2021Graph";
function onEdit(e) {
var ss = e.source;
var range = e.range;
var activeSheet = range.getSheet();
var editedRow = range.getRow();
var editedColumn = range.getColumn();
if(resultsSheetName == activeSheet.getName() && editedRow === rowResults && editedColumn >= firstColResults) {
var graphSheet = ss.getSheetByName(graphSheetName);
var colGraph = editedColumn + firstColGraph - firstColResults;
var value = graphSheet.getRange(rowGraph, colGraph).getValue();
if (value === false) graphSheet.hideColumns(colGraph);
else graphSheet.showColumns(colGraph);
}
}