是否可以在Google表格脚本中触发单元格选择?

时间:2019-11-01 16:45:03

标签: google-apps-script triggers

我试图获取一个包含很多列的电子表格,以根据当前选定的单元格/列隐藏其中的一些列。

示例:说C-R列按3分组(C-D-E,F-G-H等)。我只想查看每个组中的第一列,除非选择了该组中的一个单元格。如果选择了F,G或H列中的单元格,我想查看这些列。

|__A__|__B__|__C__|__F__|__G__|__H__|__I__|__L__|__M__|__P__|

现在,我有了一个可以隐藏和显示组的脚本,但是我需要找到一种触发函数的方法。我发现管理最接近的是触发onChange,但这需要在单元格中进行更改,我希望选择足够。

function onSelect(){
  code for cell check and showing and hiding columns here.  
}

关于如何完成触发的任何想法?

2 个答案:

答案 0 :(得分:0)

这仅是一种替代方法,首先触发,您将复制并粘贴到c列的同一单元格中,然后接下来,您必须使用类似的方法,必须将其复制并粘贴到将要编辑的列中的同一单元格中: / p>

function onEdit()
{
  var spreadsheet = SpreadsheetApp.getActive();
  var mysheet=spreadsheet.getSheetByName('MainSheet');

  var ctRangeCount=(mysheet.getRange("T1").getColumn()-mysheet.getRange("C1").getColumn()+1)/3;
  for (a=0;a<ctRangeCount;a++)
  {
    mysheet.hideColumns(a*3+3+1,2);

    if(mysheet.getCurrentCell().getColumn()==a*3+3)
    {
      mysheet.showColumns(a*3+3+1,2);//hideColumns(a*3+3+1,2);
    }
  }
}

答案 1 :(得分:0)

当前,当选择或单击某个单元格(类似于onClicked或onSelected函数)时,没有触发器可作为一种解决方法,您可以将其添加到已有的组中,并在每个第一列的第一行中添加一个复选框组中的某个组,然后在按下它们时可以触发onEvent(e)以显示隐藏的列。

要添加新的第一行,请右键单击左侧数字列中的“ 1”,然后选择“在上方插入一个”

要添加一个复选框,请选择所需的一个或多个单元格,然后单击“插入”->“勾号框”

现在您可以像这样使用 onEvent(e)

function onEdit(e){
  // get the number of the column. E.g: C = 3
  Logger.log(e.range.getColumn());
  /* 
     Then you would be ready to apply the logic you made 
     about hiding and showing columns
  */
}