Установка флажка на одной вкладке листа обновит другой флажок на вкладке другого листа - PullRequest
1 голос
/ 25 октября 2019

У меня есть список инвентаря на одной вкладке со всеми предметами, включая штрих-коды для каждого предмета. В правой части листа у меня есть код, который, когда установлен флажок, информация о строке элемента копируется на другую вкладку, которая является нашей страницей оформления заказа. Флажок включен на этой странице, и он остается выбранным. Я действительно хочу иметь возможность снять флажок, который будет удалять строку на вкладке оформления заказа, и снять флажок с вкладки инвентаризации. Есть ли способ сделать это? По крайней мере, я хотел бы иметь возможность снять флажок на вкладке оформления заказа, который автоматически снимает этот же флажок на вкладке инвентаря, а затем вручную удалить строку. Возможно ли это? Вот мой текущий код:

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

function onEdit(event) {
  // assumes source data in sheet named main
  // target sheet of move to named Completed
  // getColumn with check-boxes is currently set to colu 4 or D
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = event.source.getActiveSheet();
  var r = event.source.getActiveRange();
  if(s.getName() == "Tech Lending" && r.getColumn() == 5 && r.getValue() == true) {
    var row = r.getRow();
    var numColumns = s.getLastColumn();
    var targetSheet = ss.getSheetByName("Check-out");
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
    s.getRange(row, 1, 1, numColumns).copyTo(target);

  }
}

1 Ответ

1 голос
/ 25 октября 2019

Попробуйте:

function onEdit(e) {
  Logger.log(JSON.stringify(e));
  //e.source.toast('Flag1');
  var sh=e.range.getSheet();
  if(sh.getName()=="Tech Lending" && e.range.columnStart==5 && e.value=="TRUE" && e.oldValue=="false") {
    //e.source.toast('Flag2');
    var tsh=e.source.getSheetByName("Check-out");
    var tnr=tsh.getLastRow()+1;
    var target=tsh.getRange(tnr, 1);
    sh.getRange(e.range.rowStart,1,1, sh.getLastColumn()).copyTo(target);
    tsh.getRange(tnr,10).setValue(e.range.rowStart);
  }
  if(sh.getName()=='Check-out' && e.range.columnStart==5 && e.value=="FALSE" && e.oldValue=="true") {
    //e.source.toast('Flag3');
    e.source.getSheetByName('Tech Lending').getRange(sh.getRange(e.range.rowStart,10).getValue(),5).setValue("FALSE");
    sh.deleteRow(e.range.rowStart);
  }
}

Если бы я знал больше о ваших данных, я бы, вероятно, также снял флажок на странице Технического кредитования. Хотя, я думаю, мы могли бы добавить столбец со сращиванием на страницу извлечения, в котором был бы указан номер строки на странице технического кредитования. Мы не хотим выполнять поиск внутри onEdit (), потому что по мере роста страницы Tech Lending мы не сможем завершить сценарий вовремя.

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