Google Sheets Log строка на другой лист (ту же книгу), когда флажок установлен - PullRequest
0 голосов
/ 07 января 2020

Давайте начнем со всего этого будет в одной книге. У меня есть Sheet1, а Sheet2.

Sheet1 содержит несколько строк. Строки имеют флажки в столбцах D, E, F.

Я пытаюсь написать сценарий, который, когда флажок F установлен, будет копировать всю строку в Sheet2 как текущий журнал. Я работал с appendRow в некоторых сценариях, над которыми я «играю», но продолжаю сталкиваться с проблемами.

Я также видел простые формулы, такие как: (Это не будет работать с тем, что мне нужно сделать) [ Копировать строку на другом листе, когда флажок установлен в Google Sheets

Это НЕ логинится. Это было бы здорово, если бы строки в листе 1 никогда не удалялись. Однако строки могут быть удалены время от времени. Поэтому мне действительно нужно скопировать / войти в Sheet2 при проверке F на Sheet1.

Я уже несколько дней искал в Google и не нашел ни одного журнала Google Sheets, вызванного указанной ячейкой c (или ячейками). в столбце).

PS Я был "глупым взломом" с каким-то кодом, пытаясь заставить функцию onEdit проверить F. Я очень заинтересован в обучении :)

1 Ответ

1 голос
/ 07 января 2020

onEdit - это способ go

. Рекомендую ознакомиться с Скриптом Google Apps , который позволяет обнаруживать onEdit либо флажок был проверен (и если да - какой). Оператор if поможет вам скопировать данных в случае, если установлен флажок в интересующем столбце.

Вы адаптируете следующий пример сценария для своих нужд, потратив некоторое время на изучение Документация по скрипту приложений:

function onEdit(){
  var ss=SpreadsheetApp.getActive();
  var sheet1=ss.getSheetByName("Sheet1");
  var sheet2=ss.getSheetByName("Sheet2");
  var cell=SpreadsheetApp.getActiveRange();
  if(SpreadsheetApp.getActiveSheet().getName()=="Sheet1" && cell.getColumn()==6 && cell.getValue() == true){
    Logger.log('bla');
    var row=cell.getRow();
    var range=sheet1.getRange(row,1,1,sheet1.getLastColumn());
    range.copyTo(sheet2.getRange((sheet2.getLastRow()+1),1));
  }
}
...