Как (Google Scripts) После выбора раскрывающегося списка запустить сценарий, когда формула изменяет значение ячейки, и отфильтровывать эти строки? - PullRequest
0 голосов
/ 24 сентября 2019

В общем, у меня есть листы Google, где у меня есть выпадающий список в ячейке C2, который имеет несколько вариантов.Возможны варианты 30 дней, 60 дней, 90 дней.Когда выбрано 30 дней, мне нужно отфильтровать определенные строки данных из одной и той же электронной таблицы.IE: пользователь выбирает «30 дней» в выпадающем списке (ячейка C2).В той же электронной таблице, строки с 59 по 64, столбец 1, я имею формулу = C2 и меняю на «30 дней» при выборе выпадающего списка, и они должны быть отфильтрованы.Если пользователь выберет «60 дней» в раскрывающемся списке, снова появятся строки с 59 по 64.

Я исследовал и попробовал эти 2 метода, но не могу заставить их работать именно для моего варианта использования.

Приведенное ниже значение не считывает значения из формулы: https://yagisanatode.com/2018/05/26/how-to-hide-a-row-based-on-a-cell-value-in-google-sheets-with-filter-or-google-apps-script/

Я не могу заставить приведенное ниже работать для моего варианта использования: Запустить сценарий, когда формула изменяет значение ячейки

var SHEET = "check in template";
// The value that will cause the row to hide. 
var VALUE = "30 Day Check In";
// The column we will be using 
var COLUMN_NUMBER = 3

function onEdit(e) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var activeSheet = ss.getActiveSheet();

//Ensure on correct sheet.
  if(SHEET == activeSheet.getName()){
    var activeCell = ss.getRange("C2");

    //Ensure we are looking at the correct column.
    if(activeCell.getColumn() == COLUMN_NUMBER){
      //If the cell matched the value we require,hide the row. 
      if(activeCell == VALUE){
        activeSheet.hideRows(59,5);
      };
    };
  };
}

Я ожидаю, что строки с 59 по 64 будут отфильтрованы, но ничего не сработает.

1 Ответ

0 голосов
/ 25 сентября 2019

Попробуйте это:

function onEdit(e) {
  var sh=e.range.getSheet();
  if(sh.getName()=='check in template' && e.range.columnStart==3 && e.range.rowStart==2){
    if(e.value=="30 Day Check In"){
      sh.hideRows(59,5);
    }
  }
}

Невозможно проверить это, запустив его без объекта события.Поэтому не пытайтесь запустить его из редактора сценариев.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...