我有一个关于函数的问题,我试图首先看一下多维数组。
解释我的问题:在工作表中,我使用项目管理我的路线图。一个项目由4行组成,我有一些信息(项目名称,估计团队,时间轴......)。 在我的时间轴中,我需要检索多个数组中的第一个空行(第一个非空是startDate)。 问题是,我在这个多维数组中有4个团队,并且(例如),开始日期可以在项目A的第一个团队数组中,但是开始日期也可以在项目B的第3个团队数组中。
在我的功能中,我试图进入开始日期,但我的第一步是检查第一个数组...(projectRange及其后的代码) 所以...我认为最好的方法应该是检查第一列中的每一行,并像这样继续到getLastColumn,对吗? 那么,我该如何以这种方式管理我的循环呢?
function findLastRow(column) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName(roadmapSS);
var startRow = 11;
var startCol = 11;
var dataLength = sheet.getLastRow()-(startRow+2);
var rangeData = sheet.getRange(startRow, 2, sheet.getLastRow(), sheet.getLastColumn());
var dataValues = rangeData.getValues();
var projectsList = rangeData.getValues();
var projectDatas = {};
var projectRange = null;
var projectName = null;
var projectPlan = {};
var realStart = null;
for (var i = 0; i < dataLength; i+=4) {
projectDatas = projectsList[i];
var step = startRow+i;
var realStartRange = startRow+i+1
for (var j = 0; j < 1; j+=4) {
projectName = projectDatas[j];
}
projectRange = ([step, startCol, 4, sheet.getLastColumn()]).toString();
var projectPlan = sheet.getRange(step, startCol, 4, sheet.getLastColumn()).getValues();
for (var k = 0; k < projectPlan.length; ++k) {
realStart = projectPlan[k];
for (var l = 0; l < realStart.length; ++l) {
if (realStart[l] != '') {
break;
}
}
}
//sheet.getRange(realStartRange, 2).setValue(columnToLetter([l]))
console.log(projectName, [l], columnToLetter([l]));
}
}
事实上,我试图在这个例子中得到B的第一列(因为它是第一次非空出现:
var projectTimeline = [
['','','A','A','','A'],
['','B','B','','B',''],
['','','','C','C',''],
['','','','','D','D']
]
答案 0 :(得分:0)
我找到了解决方案: 我先把这个专栏,然后排成一列。它奏效了,我创立了专栏:)
function findFirstDate (timeline) {
for (var col = 0; col < timeline[0].length; col++) {
for (var row = 0; row < 4; row++) {
if (timeline[row][col] != '') {
return [col];
}
}
}
}