【发布时间】:2020-01-09 12:06:12
【问题描述】:
我必须在一张纸上垂直和水平地循环,然后将某些值复制到另一张纸上。问题是由于错误“范围的坐标超出了工作表的尺寸”而无法正常工作。它将出现在带有 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;
}
}
}
}
}
}
编辑
感谢 Cooper,我添加了包含更改的代码部分:
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));
【问题讨论】:
标签: google-apps-script google-sheets