Мне нужно l oop поверх листа по вертикали и горизонтали и скопировать определенные значения на другой лист. Проблема в том, что он не будет работать из-за ошибки «Координаты диапазона находятся за пределами размеров листа». Он появится в строках с методами getLastRow () или getLastColumn (). Попытка исправить с помощью getLastRow () - 1 (ответ в другом посте), но не работает.
Также нет формулы, заполняющей ячейки "" или подобным, просто простой текст.
Код:
function Ordenar_XT() {
var leidas = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Base de datos REPXT");
var relevado= SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Base de datos REPXT").getRange("A:A").getValues();
var idTurma= SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Base de datos REPXT").getRange("B:B").getValues();
var baseTrainers= SpreadsheetApp.getActiveSpreadsheet().getSheetByName("BASEXT");
var baseContenido = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("BASECONTENIDO");
var XT = leidas.getRange(1, 1, leidas.getLastRow() - 1, leidas.getLastColumn()).getValues();
for(var i=1;i<leidas.getLastRow()+1;i++){
if(relevado[i]!="Relevado"){
for(var j=0;j < leidas.getLastColumn()-1;j++){
if(XT[i][j]=="Estou deixando feedback sobre:" || XT[i][j]=="Estoy dejando feedback sobre:"){
var last= baseTrainers.getLastRow()+1;
baseTrainers.getRange(last, 2).setValue(XT[i][j+1]);
baseTrainers.getRange(last, 1).setValue(idTurma[i]);
var formula = baseTrainers.getRange(1,8);
formula.copyTo(baseTrainers.getRange(last, 8));
var ok=true;
var l = 2;
while(ok && l <=10){
switch(XT[i][j+l]){
case "¿Qué tan satisfecho estás con tu XT?":
case "Quão satisfeito você ficou com seu XT?": baseTrainers.getRange(last, 3).setValue(XT[i][j+l+1]);
break;
case "¿El XT tiene dominio del tema?":
case "O XT tinha domínio do tema?": baseTrainers.getRange(last, 4).setValue(XT[i][j+l+1]);
break;
case "¿El XT explicó y comunicó los temas correctamente?":
case "O XT explicou bem os assuntos?": baseTrainers.getRange(last, 5).setValue(XT[i][j+l+1]);
break;
case "¿El XT fue abierto para evacuar dudas?": case "O XT foi aberto para tirar dúvidas?": baseTrainers.getRange(last, 6).setValue(XT[i][j+l+1]);
break;
case "¿La cantidad de práctica aplicada por el XT fue suficiente para aprender los procesos?" :
case"A quantidade de prática aplicada pelo XT foi suficiente para aprender sobre os processos?": baseTrainers.getRange(last, 7).setValue(XT[i][j+l+1]);
break;
default: ok=false;
break;
}
l +=2;
}
}
}
}
}
}
РЕДАКТИРОВАТЬ
Спасибо, Купер, я добавляю раздел кода с изменениями:
var XT = leidas.getRange(1, 1, leidas.getLastRow() - 1, leidas.getLastColumn()).getValues();
for(var i=0;i<XT.length;i++){
if(relevado[i]!="Relevado"){
for(var j=0;j < XT[i].length;j++){
if(XT[i][j]=="Estou deixando feedback sobre:" || XT[i][j]=="Estoy dejando feedback sobre:"){
var last= baseTrainers.getRange();
baseTrainers.getRange(last, 2).setValue(XT[i][j+1]);
baseTrainers.getRange(last, 1).setValue(idTurma[i]);
var formula = baseTrainers.getRange(1,8);
formula.copyTo(baseTrainers.getRange(last, 8));