Google Sheet - копирование строк из нескольких листов в один сводный лист - PullRequest
1 голос
/ 10 января 2020

Я пытаюсь сохранить отдельные листы, которые объединяются в один сводный лист в одной электронной таблице Google, сохраняя при этом форматирование. У меня есть код, который будет копировать содержимое отдельных листов в сводку, но второй лист заменяет первый в сводном листе. Вот что у меня есть -

function importTable2() {
  // Source 1
  var sourceSheet1 = SpreadsheetApp.openById("ID").getSheetByName("1");
  var sourceRange1 = sourceSheet1.getDataRange();

  // Source 2
  var sourceSheet2 = SpreadsheetApp.openById("ID").getSheetByName("2");
  var sourceRange2 = sourceSheet2.getDataRange();  

  // Destination
  var destSS = SpreadsheetApp.openById("ID");
  var destSheet = destSS.getSheetByName("Summary");
  var destRange = destSheet.getDataRange();
  destSheet.clear();

  // Copy 1
  var copiedsheet = sourceRange1.getSheet().copyTo(destSS);
  copiedsheet.getRange(sourceRange1.getA1Notation()).copyTo(destRange);
  copiedsheet.getRange(sourceRange1.getA1Notation()).copyTo(destRange, SpreadsheetApp.CopyPasteType.PASTE_COLUMN_WIDTHS, false);
  destSS.deleteSheet(copiedsheet);
  
    // Copy 2
  var copiedsheet2 = sourceRange2.getSheet().copyTo(destSS);
  copiedsheet2.getRange(sourceRange2.getA1Notation()).copyTo(destRange);
  copiedsheet2.getRange(sourceRange2.getA1Notation()).copyTo(destRange, SpreadsheetApp.CopyPasteType.PASTE_COLUMN_WIDTHS, false);
  destSS.deleteSheet(copiedsheet2);

}

Я думаю, это потому, что мой диапазон назначения такой же, но я не могу понять, как получить второй диапазон назначения (для данных листа 2), который будет находиться прямо под начальным целевым диапазоном (из данных листа 1), поскольку данные из листа 1 могут иметь 10 строк сегодня, но 20 строк завтра.

Любые мысли о том, как заставить источник 2 попасть на лист назначения под данные источника 1?

1 Ответ

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

Попробуйте сбросить значение destRange в части скрипта "// Copy 2":

    // Copy 2
  var copiedsheet2 = sourceSheet2.copyTo(destSS);
  destRange = destSheet.getRange(destSheet.getLastRow() + 1, 1, sourceRange2.getLastRow(), sourceRange2.getLastColumn());
  copiedsheet2.getRange(sourceRange2.getA1Notation()).copyTo(destRange);
  copiedsheet2.getRange(sourceRange2.getA1Notation()).copyTo(destRange, SpreadsheetApp.CopyPasteType.PASTE_COLUMN_WIDTHS, false);
  destSS.deleteSheet(copiedsheet2);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...