Можно ли активировать выбор ячеек в скрипте листов Google? - PullRequest
1 голос
/ 01 ноября 2019

Я пытаюсь получить электронную таблицу с большим количеством столбцов, чтобы скрыть некоторые из них на основе текущей выбранной ячейки / столбца.

Пример: скажем, столбцы CR сгруппированы в 3 (CDE, FGH,. ...). Я хочу видеть только первый столбец в каждой группе, если не выбрана ячейка в группе. Если в столбце 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 голосов
/ 04 ноября 2019

В настоящее время нет триггера для выбора или щелчка по ячейке (что-то вроде функции onClicked или onSelected), в качестве обходного пути, которое можно добавить к уже имеющимся группам, по одному флажку в первой строке каждого первого столбца. из ваших групп, затем, когда они нажаты, вы можете вызвать onEvent(e), чтобы показать скрытые столбцы.

, чтобы добавить новую первую строку, щелкните правой кнопкой мыши «1» в столбце чисел слева и выберите «вставить один над»

, чтобы добавить флажок, выберите ячейку/ ячеек, которые вы хотите, затем нажмите Вставить -> Tick Box

Теперь вы можете использовать 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
  */
}
0 голосов
/ 02 ноября 2019

Это только в качестве альтернативы, сначала триггер, вы копируете и вставляете в ту же ячейку в столбце c, затем следующий, вы должны использовать аналогичный метод, вы должны копировать и вставлять в ту же ячейку в столбце, который вы будете редактировать:

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