2017-07-07 9 views
0

JavaScriptのGoogleスプレッドシートでさまざまなデータをループしています。Javascript - スプレッドシートの結合されたセルをループする

問題は、同じ値を持ついくつかのマージされたセルがあることです。例えば、C:6からE:6はすべて3つのセルがマージされるのと同じ値です。

私のループでそれは表示されますC:6 = 'Focus and targeting'D:6 = ''E:6 = ''私のループでは、最初のセル値に2番目と3番目の値を割り当てることです。ここで

は、私が持っているものです:私はこれを達成することができますどのように

enter image description here

任意のアイデア:ここ

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

    } 

は、データがどのように見えるかですか?ここで

+0

細胞はisPartOfMerge https://developers.googleと合併している場合は、確認することができます.com/apps-script/reference/spreadsheet/range#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++; 
    } 
関連する問題