Лист редактирования Google Sheets на основе флажков - PullRequest
0 голосов
/ 14 ноября 2018

Образец листа

У меня есть настройка листа 2 с полным списком рабочих заданий в столбце А. В столбце В у меня есть простой маркер «ИСТИНА», указывающий, что работа выполнена. В sheet1 у меня есть фильтр для отображения только тех заказов, которые не помечены как TRUE в столбце B из sheet2. Рядом со списком заказов на листе 1 стоят флажки. Я хотел бы сценарий, который может читать, когда флажок помечен, прочитать, что элемент рядом с флажком, пометьте флажок «ЛОЖЬ», чтобы очистить его, а затем пометьте соответствующую строку в столбце B из листа 2 как «ИСТИНА», так что элемент покидает список на листе 1.

Я настрою сценарий с помощью триггера «При редактировании», но мне нужна помощь в создании сценария, который может выполнять эти функции.

1 Ответ

0 голосов
/ 15 ноября 2018

после долгих поисков и самостоятельной отладки я придумал это. Это выглядит хорошо? Я собираюсь поместить это в электронную таблицу со многими тысячами записей. Я не хочу, чтобы это было ужасно неэффективно.

function MarkComplete() {
  var ss = SpreadsheetApp.getActive();                //Loading Current spreadsheet
  var Display = ss.getSheetByName("Display");         //Loading Display sheet
  var Complete = ss.getSheetByName("Complete");       //Loading Complete sheet
  var data1 = Display.getDataRange().getValues();     //Loading data from sheet 1
  var data2 = Complete.getDataRange().getValues();    //Loading data from sheet 2

  for(var i = 0; i<data1.length;i++){
    Logger.log('List item : ' + data1[i][0]);
    Logger.log('Checked : ' + data1[i][1]);         

    if(data1[i][1] == true){                        //Looking for rows in Display that are checked.
      Logger.log('TRUE : ' + data1[i][0]);

      for(var n = 0; n<data2.length;n++){ 
        if(data2[n][0] == data1[i][0]){               //Looking for rows in Complete that match checked rows in Display
          Complete.getRange(n+1,2).setValue("=true");    //set row x column 2 to true in complete
          Display.getRange(i+1,2).setValue("false");    //set row i column 2 to false in display
        }
      }
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...