Как насчет этого ответа? Пожалуйста, подумайте об этом как об одном из нескольких ответов.
Точки модификации:
- В вашем скрипте
ss
объявлено SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
. С другой стороны, диапазон использует a1Notation, включая имя листа. Я думаю, что причина вашей проблемы заключается в следующем. - При
ss.getRange('Odds Completas!O2').setFormula('=C2+J2');
формула помещается в ячейку "O2" листа Odds Completas
. - При
var lr = ss.getLastRow();
извлекается последняя строка активного листа. - В этом случае, например, если активным листом является новый лист,
lr
возвращает 0
. При этом ошибка возникает на ss.getRange('Odds Completas!O2').copyTo(fillDownRange);
. - В вашем скрипте используется
lr-1
. Таким образом, даже когда последняя строка равна 1, возникает ошибка. Пожалуйста, будьте осторожны.
Модифицированный скрипт:
Шаблон 1:
В этом шаблоне ваш скриптне изменяетсяИ прежде чем запускать скрипт, пожалуйста, откройте лист Odds Completas
и запустите скрипт. При этом сценарий запускается как активный лист Odds Completas
, а lr
возвращает последнюю строку Odds Completas
.
Шаблон 2:
В этом шаблоне ваш сценарий
function myFunction() {
var sheetName = "Odds Completas";
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName(sheetName);
sheet.getRange('O2').setFormula('=Q2+J2');
var lr = sheet.getLastRow();
var fillDownRange = sheet.getRange(2, 15, lr-1);
sheet.getRange('O2').copyTo(fillDownRange);
}
Ссылки: