Ошибка в сценарии связана с getlastrow - я думаю - PullRequest
1 голос
/ 19 февраля 2020

Я вижу, что об этом спрашивали в другом месте, однако решения не сработали для меня, или я их не понял.

Я использовал этот бит кода в течение нескольких лет без проблем в нескольких листах Google. , Внезапно этот лист выдает ошибку «Координаты целевого диапазона находятся за пределами размеров листа».

Может кто-нибудь помочь мне разобраться?

У меня следующий код :

function submit() {
   var ss = SpreadsheetApp.getActiveSpreadsheet();
   var sheet1 = ss.getSheetByName("Check Sheet");
   var sheet2 = ss.getSheetByName("Data"); 
   sheet1.getRange("A1:AA1").copyTo(sheet2.getRange(sheet2.getLastRow()+1,1,1,7), {contentsOnly:true});
}

Заранее благодарим за ваше время и помощь.

1 Ответ

2 голосов
/ 19 февраля 2020

Скорее всего, вы получаете эту ошибку, потому что последняя строка с содержимым на листе Data (то есть sheet2.getLastRow()) также является последней строкой листа, независимо от содержимого. То есть вы пытаетесь скопировать диапазон в несуществующую строку (sheet2.getLastRow() + 1).

Чтобы избежать этой ошибки, необходимо вставить новую пустую строку перед копированием диапазона, если последняя строка с Содержание - это последняя строка в листе. Вы можете использовать getMaxRows , чтобы проверить это.

Таким образом, вы можете добавить это непосредственно перед использованием copyTo, чтобы вставить строку, если последняя строка с содержимым является последней последней строкой на листе. :

if (sheet2.getLastRow() === sheet2.getMaxRows()) {
  sheet2.insertRowAfter(sheet2.getLastRow());
}

Ссылка:

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