Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 你能根据谷歌表格中的单元格值隐藏一列吗?_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script 你能根据谷歌表格中的单元格值隐藏一列吗?

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

因此,我对使用谷歌表单,尤其是其中的脚本部分非常陌生

我目前正在制作一个F12021记分板,基本上允许我选择不同的比赛,以便了解如果不包括某些比赛,不同的车手如何赢得冠军,这显然只是一些有趣的事情,而不是什么严肃的事情。这有点像Youtube频道的Chainbear,他一直在做这类事情

如果第三页(D2021Graph)上的C1=False,我需要隐藏C列,当C1=True时,我希望它们不隐藏,当D1=False时隐藏D列,依此类推。C1和D1基于第一张工作表上的复选框(racesults2021)。因此,绘制该工作表上所有值的图形可以避免某些列,以防我要取消选择它们

以下是谷歌工作表的副本:

非常感谢您的帮助,如果您需要更多信息,请告诉我

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);
  }
}