- Вы хотите скопировать активный диапазон на листе «Новые материалы» в активной электронной таблице в последнюю строку на листе «Архив» в электронной таблице «targetheetIDgoeshere»
Если мое понимание верно, как насчет этой модификации? Я думаю, что есть две модели для вашей ситуации.
Шаблон 1:
В этом шаблоне копируются только значения. Пожалуйста, измените следующим образом. Если вам не нужно копировать формат, вы можете использовать это.
От:
target_sheet.insertRowAfter(last_row);
var target_range = target_sheet.getRange("A"+(last_row+1)+":G"+(last_row+1));
// Take the highlighted rant and put it on the last row of the target sheet.
source_range.copyTo(target_range);
Для того, чтобы:
var values = source_range.getValues();
target_sheet.getRange(last_row + 1, 1, values.length, values[0].length).setValues(values);
Шаблон 2:
В этом шаблоне копируются как значения, так и форматы. Пожалуйста, измените следующим образом. К сожалению, copyTo()
может скопировать диапазон в диапазон только в одной и той же электронной таблице. Эту ситуацию также можно увидеть в сообщении об ошибке вашего вопроса. Таким образом, в этой модификации сначала лист копируется в целевую электронную таблицу. Затем диапазон копируется.
От:
target_sheet.insertRowAfter(last_row);
var target_range = target_sheet.getRange("A"+(last_row+1)+":G"+(last_row+1));
// Take the highlighted rant and put it on the last row of the target sheet.
source_range.copyTo(target_range);
Для того, чтобы:
if (last_row > 0) target_sheet.insertRowAfter(last_row);
var target_range = target_sheet.getRange(last_row + 1, 1);
var copiedsheet = source_sheet.copyTo(target);
copiedsheet.getRange(source_range.getA1Notation()).copyTo(target_range);
target.deleteSheet(copiedsheet);
Ссылки:
Если я неправильно понял ваш вопрос, прошу прощения.