这是我尝试运行的代码:
function Validation () {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetPlanif = ss.getSheetByName('Planification');
var sheetTdB = ss.getSheetByName('TdB');
var sheetLiv = ss.getSheetByName('Livraisons');
var planifIndex = sheetPlanif.getLastRow();
var columnIndex = sheetLiv.getLastColumn();
for (var j=2; j<=rowIndex; j++) {
var codeD = sheetLiv.getRange(j,1).getValue();
if (codeD == "") {
sheetLiv.deleteRow(j);
};
};
var day1length = sheetPlanif.getRange(3,1,planifIndex,1).getValues();
Logger.log(day1length[0][0]);
for (var k=0; k<=planifIndex; k++) {
if (day1length[k][0] != "") {
var rowIndex = sheetLiv.getLastRow();
sheetPlanif.getRange(k+3,1,1,6).copyValuesToRange(sheetLiv, 1, 6, rowIndex, rowIndex);
};
};
sheetPlanif.clear().hideSheet();
sheetLiv.getRange(2,1,rowIndex-1,22).sort(3);
}
当我这样做时,我一直有同样的错误:“由于day1length [k] [0],”无法从undefined“运行读取属性”0“。但是,当我打印任何day1length值时,我得到一个合适的值。
你知道为什么我不能运行循环吗?谢谢你的帮助。
答案 0 :(得分:0)
您的for
循环正在循环行长度的迭代次数:
var planifIndex = sheetPlanif.getLastRow();
for (var k=0; k<=planifIndex; k++) {
更改此行:
for (var k=0; k<=planifIndex; k++) {
要:
for (var k=0; k<=day1length.length; k++) {
想象一下,如果您的电子表格中有10行,planifIndex
将为10.因此,您的for
循环将循环10次(k
从零开始并转到9)。
但是您获得的数据行数仅为7:
var day1length = sheetPlanif.getRange(3,1,planifIndex,1).getValues();
从第3行开始,到10 - 长度为7.因此,当您的for
循环计数为8时,没有剩余数据,您将收到错误