Скопируйте лист A, чтобы вставить в последнюю строку листа B сценарий приложения Google

#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 хорошего дня.