Скрипт листов Google: номер диапазона не работает - PullRequest
0 голосов
/ 17 апреля 2020

Почему диапазон, написанный таким образом, не работает?

function Copiarisultati() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange(18,3,0,1).activate();
  spreadsheet.getRange(15,3,0,1).copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
};

1 Ответ

0 голосов
/ 17 апреля 2020

В этом коде есть две проблемы:

  1. Вы не получаете объект Sheet.
  2. при использовании getRange(row, column, numRows, numColumns), numRows не может быть нулевым. Если numRows равен нулю, вы ничего не ссылаетесь. Минимальное значение должно быть 1.

Объяснение: SpreadsheetApp.getActive () возвращает объект Spreadsheet, но не объект Sheet. Проверьте это: https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app#getActive ()

Итак, в вашем случае вместо SpreadsheetApp.getActive() используйте SpreadsheetApp.getActiveSheet(). (Если вы ссылаетесь на свой активный лист)

function Copiarisultati() {
  var spreadsheet = SpreadsheetApp.getActiveSheet();
  var val = spreadsheet.getRange('C1').getValue();
  spreadsheet.getRange(18,3,0,1).activate();
  spreadsheet.getRange(15,3,0,1).copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
};

Обратите внимание, что существует множество способов ссылки на лист без использования «Актив».

Если я хочу сослаться на вызов листа » Sheet2 "в электронной таблице, одним примером будет:

  var spreadsheet = SpreadsheetApp.openByUrl("the Spreadsheet url").getSheetByName("Sheet2")
...

Пожалуйста, изучите эту документацию для получения дополнительной информации: https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app https://developers.google.com/apps-script/reference/spreadsheet/sheet#getRange (Integer, Integer, Integer, Integer)

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