Как скопировать строку данных на новый лист с другим количеством столбцов? - PullRequest
0 голосов
/ 27 мая 2020

Я умею копировать данные с одного листа на другой. Я сейчас пытаюсь сделать это для нового рабочего проекта и в тупике.

Я все время получаю сообщение об ошибке «Координаты целевого диапазона выходят за рамки размеров листа»

Те же столбцы существуют между всеми 4 листами, с которыми я работаю, НО некоторые скрыты. Вот почему я получаю сообщение? Это единственное, о чем я могу думать. Если да, то как мне это обойти?

Код:

function onEdit() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var RequestSheet = ss.getSheetByName('Request');
  var InProgressSheet = ss.getSheetByName('In Progress');
  var ReviewSheet = ss.getSheetByName('Ready for Review');
  var CompletedSheet = ss.getSheetByName('Completed');
  var HoldSheet = ss.getSheetByName('On Hold');

  var status = RequestSheet.getActiveCell().getValue();
  var row = RequestSheet.getActiveCell().getRow();
  var column = RequestSheet.getActiveCell().getColumn();

  var a1notation = ("A" + row + ":" + "X" + row);
  var newRange = RequestSheet.getRange(a1notation);

  if(status == 'In Progress') {
     newRange.copyTo(InProgressSheet.getRange(InProgressSheet.getLastRow() 
 + 1, 1))
  } else if (status == 'On Hold') {
      Browser.msgBox('On Hold was selected')
  } else if (status == 'Completed') {
      Browser.msgBox('Completed was selected')
  } else
      return
}

Ответы [ 2 ]

1 голос
/ 28 мая 2020

Вот что у меня сработало. Листы, на которые я копировал данные, имели определенные ячейки со встроенными в них элементами списка. Здесь показано:

screen shot for clarification

Итак, когда был вызван

newRange.copyTo(InProgressSheet.getRange(InProgressSheet.getLastRow() 
 + 1, 1))

, getLastRow () + 1, 1 был за пределами, потому что все строки технически содержали данные. Я очистил все это, и это сработало как шарм.

0 голосов
/ 28 мая 2020

У вас может сработать что-то вроде этого:

function onEdit() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var RequestSheet = ss.getSheetByName('Request');
  var InProgressSheet = ss.getSheetByName('In Progress');
  var ipslr=InProgressSheet.getLastRow();//modified
  var ReviewSheet = ss.getSheetByName('Ready for Review');

  var CompletedSheet = ss.getSheetByName('Completed');
  var HoldSheet = ss.getSheetByName('On Hold');

  var status = RequestSheet.getActiveCell().getValue();
  var row = RequestSheet.getActiveCell().getRow();
  var column = RequestSheet.getActiveCell().getColumn();
  var newRange = RequestSheet.getRange(row,1,1,24);//modified
  if(ipslr==InProgressSheet.getMaxRows()) {
    InProgressSheet.insertRowsAfter(ipslr,100);//modified
  }
  if(status == 'In Progress') {
     newRange.copyTo(InProgressSheet.getRange(InProgressSheet.getLastRow() 
 + 1, 1))
  } else if (status == 'On Hold') {
      Browser.msgBox('On Hold was selected')
  } else if (status == 'Completed') {
      Browser.msgBox('Completed was selected')
  } else {
     return
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...