Сценарий приложений Google таблицы: как мне отредактировать приведенный ниже сценарий приложений, чтобы копировать только данные из столбца A в L и P в S?

#google-apps-script #google-sheets

#google-apps-script #google-sheets

Вопрос:

Как мне отредактировать приведенный ниже сценарий приложений, чтобы копировать только данные из столбца A в L и P в S? (По сути, я хочу, чтобы он пропускал столбцы M, N, O и все столбцы после S.

 function onEdit(event) {
  // assumes source data in sheet named Tab 1
  // target sheet of move to named Tab 2
  // test column with yes/no is col 20 or T
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = event.source.getActiveSheet();
  var r = event.source.getActiveRange();

  if(s.getName() == "Tab 1" amp;amp; r.getColumn() == 20 amp;amp; r.getValue() == "yes") {
    var row = r.getRow();
    var numColumns = s.getLastColumn();
    var targetSheet = ss.getSheetByName("Tab 2");
    var target = targetSheet.getRange(targetSheet.getLastRow()   1, 1);
    s.getRange(row, 1, 1, numColumns).moveTo(target);
    s.deleteRow(row);
  }
}
  

Заранее благодарю вас,
с наилучшими пожеланиями,
Роберт

Ответ №1:

Скопируйте оба диапазона ( A-L , P-S ) отдельно в разные целевые диапазоны, как показано здесь:

 function onEdit(e) {
  //e.source.toast("Entry");
  //console.log(JSON.stringify(e));
  const sh=e.range.getSheet();
  if(sh.getName()=="Sheet1" amp;amp; e.range.columnStart==20 amp;amp; e.value=="TRUE") {
    const tsh=e.source.getSheetByName('Sheet2');
    const nr=tsh.getLastRow() 1;
    sh.getRange(e.range.rowStart,1,1,12).moveTo(tsh.getRange(nr,1,1,12));
    sh.getRange(e.range.rowStart,16,1,4).moveTo(tsh.getRange(nr,16,1,4));
    sh.deleteRow(e.range.rowStart);
  }
}
  

Примечание: я использовал ‘Sheet1’ и ‘Sheet2’, а также использовал стандартные значения для флажков вместо ‘yes’ и ‘no’. Я также использовал ‘e’ вместо ‘event’ и использовал данные, доступные в объекте event.

Комментарии:

1. Не могли бы вы добавить объяснение того, что вы сделали? Что-то вроде «Извлекать и использовать оба исходных и оба целевых диапазона отдельно».