Как я могу изменить свой диапазон, чтобы включить объединенные ячейки? - PullRequest
0 голосов
/ 07 января 2020

Я пытаюсь скопировать и вставить «A4: J4» и «A5: H5», но получаю ошибку, потому что A5 объединен. Также «ЭТАП 3» вставляется только в «G4» на листе 2. Как я могу скопировать и вставить эти данные в Sheet2 с объединенными ячейками?

function hi()
{
   var sheet = SpreadsheetApp.getActive().getSheetByName('Sheet1');
   var yourRange = sheet.getRange("A4");
   var ss = SpreadsheetApp.getActiveSpreadsheet();
   var destSheet = ss.getSheetByName('Sheet2');
   var yourLastColumn=sheet.getRange("A4:4").getLastColumn();
   var range = ss.getRangeByName("A4");
   var yourLastRange=sheet.getRange("A4").offset(0, yourLastColumn-1);
   var rsltRange1 = yourLastRange.getNextDataCell(SpreadsheetApp.Direction.PREVIOUS);
   var rsltRange2 = sheet.getRange("A4:" + rsltRange1.getA1Notation()); 
  if (rsltRange2.isPartOfMerge()) {
    var rangeTest = rsltRange2.getMergedRanges()[0];
  } else {
  }
   Logger.log(rangeTest.getA1Notation());
   var destRange = destSheet.getRange("A4");
   rsltRange2.copyTo(destRange, {contentsOnly: false});
 }

enter image description here

1 Ответ

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

Вот упрощенная версия вашего кода, которая должна правильно копировать ваш диапазон, независимо от того, объединен он или нет:

function hi(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('Sheet1');
  var destSheet = ss.getSheetByName('Sheet2');
  var startColumn=1;
  var startRow=4;
  var numRows=2;
  var numColumns=sheet.getLastColumn()-startColumn+1;
  var range=sheet.getRange(startRow, startColumn, numRows, numColumns);
  var destRange = destSheet.getRange("A4");
  range.copyTo(destRange);
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...