#javascript #google-apps-script #google-sheets
#javascript #google-apps-script #google-sheets
Вопрос:
Я просто пытаюсь изучить javascript и Google apps script в течение 2-3 недель.
Я копирую весь диапазон от 11 до 200 с листа A. Затем мне нужно вставить эти скопированные данные в последнюю строку листа B.
Я создал здесь код, в котором есть ошибка.
function CopyandPasteToB() {
var app = SpreadsheetApp;
var spreadsheet = SpreadsheetApp.getActive();
var ss = app.getActiveSpreadsheet();
var mysheet = ss.getSheetByName('B')
//copy data from origin sheet
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('A'), true);
spreadsheet.getRange('11:100').activate();
// Last non-empty row
var rlast = mysheet.getLastRow();
Logger.log("Last row = " rlast);
// Insert into last row in OP
mysheet.insertRows(rlast 1);
var r = rlast 1;
spreadsheet.getRange(''WP1'!11:100').copyTo(mysheet.getLastRow() 1);
};
Я получаю сообщение об ошибке
Исключение: параметры (число) не соответствуют сигнатуре метода для SpreadsheetApp.Range.CopyTo.
Помимо ошибки, которую я получил, как вы думаете, можно ли улучшить мой код и в правильном ли я направлении для достижения своей цели?
ИТАК, я хочу спросить, как мне это сделать, чтобы это работало?
Большое вам спасибо.
Комментарии:
1. developers.google.com/apps-script/reference/spreadsheet/…
Ответ №1:
- Параметр, предоставляемый для CopyTo(range), должен быть диапазоном, а не числом. В этом причина вашей проблемы.
activate
Для работы с ними нет необходимости в таблицах и диапазонах, поэтому ваш код может быть упрощен.
Фрагмент кода:
function CopyandPasteToB() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var mysheet = ss.getSheetByName('B');
var sourceSheet = ss.getSheetByName('A');
var sourceRange = sourceSheet.getRange("11:100");
var rlast = mysheet.getLastRow();
if (rlast === mysheet.getMaxRows()) mysheet.insertRowsAfter(rlast, 1); // Avoid error if last row with content is last row of the sheet
var destRange = mysheet.getRange(rlast 1, 1);
sourceRange.copyTo(destRange);
};
Комментарии:
1. спасибо, только что вернулся из долгого отпуска. Это сработало: D хорошего дня.