2017-07-07 184 views
0

我通過谷歌的電子表格在JavaScript中的一系列數據循環。使用Javascript - 通過電子表格循環合併單元格

時遇到的問題是我有具有相同的值,例如C一些合併單元:6至E:6都具有相同的值的那些3個細胞被合併。

所以在我的循環中,它會顯示C:6 = 'Focus and targeting'D:6 = ''E:6 = ''我想要做的是在我的循環中分配第二個和第三個值到第一個單元格值。

以下是我有:

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

任何想法如何,我可以做到這一點?

+0

您可以檢查是否細胞與合併isPartOfMerge https://developers.google的.com /應用程序腳本/參考/電子表格/範圍#ispartofmerge –

回答

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++; 
    }