Javascript - 通过电子表格合并单元格循环

时间:2017-07-07 14:29:27

标签: javascript excel google-apps-script

我正在使用JavaScript循环浏览Google电子表格中的一系列数据。

我遇到的问题是我有一些具有相同值的合并单元格,例如C:6到E:6都具有与合并这3个单元格相同的值。

因此,在我的循环中,它会显示C:6 = 'Focus and targeting' D:6 = ''E:6 = ''我想要做的是在我的循环中将第二个和第三个值分配给第一个单元格值。< / p>

这就是我所拥有的:

  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Audit');
  var range = sheet.getDataRange();
  var numRows = range.getNumRows();
  var numCols = sheet.getMaxColumns();
  var values = range.getValues();

  var count = 0;
  for (var i = 2; i <= numCols - 2; i++) {

    var questionCategory = values[5][i];


    if(questionCategory == undefined) {
      continue;
    }

    if(questionCategory == "") {
       // need to assign 2nd and 3rd cells of merged list to have the value of 1st cell in merged list     
    }

    count++;

  }

以下是数据的样子:

enter image description here

我是如何实现这一目标的?

1 个答案:

答案 0 :(得分:1)

这是获取合并单元格值的自定义函数:

function getMergedCellValue(cellRange)
{
  if (!cellRange.isPartOfMerge())
  {
    return cellRange.getDisplayValue();
  }

  return cellRange.getMergedRanges()[0].getDisplayValue();
}

使用此功能更新代码:

  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Audit');
  var range = sheet.getDataRange();
  var numRows = range.getNumRows();
  var numCols = range.getNumColumns();
  var values = range.getValues();

  var count = 0;
  var questionRowNum = 6;
  for (var i = 0; i < numCols; i++)
  {
    // assign 2nd and 3rd cells of merged list to have the value of 1st cell in merged list  
    var questionCategory = values[questionRowNum-1][i] || getMergedCellValue(sheet.getRange(questionRowNum, i+1));

    count++;
  }