获取multidimensionnal数组

时间:2018-01-23 17:42:00

标签: javascript multidimensional-array google-apps-script google-sheets

我有一个关于函数的问题,我试图首先看一下多维数组。

解释我的问题:在工作表中,我使用项目管理我的路线图。一个项目由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']
]

1 个答案:

答案 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];
        }
      }
    }
}