将列中的单元格值填充到 Excel Office.js 中另一列的空白单元格

Populate cell values from column to blank cells from another column in Excel Office.js

我有一个 table,用户用值填充了一个基本列,以下列可能有我用该基本列值填充的空值:

我编写了执行该逻辑的代码,加载列和行,分别修改它们,然后我想将它们加载到 sheet 中只是为了看看它是否正确:

Excel.run(function (context) {

        var currentWorksheet = context.workbook.worksheets.getActiveWorksheet();
        var inputsTable = currentWorksheet.tables.getItem("Inputs");
        var baseValues = inputsTable.columns.getItemAt(1).load("values");    
        var columnsLoad = inputsTable.columns.load("values");
        var rowsLoad = inputsTable.rows.load("values");

        return context.sync()
        .then(function () {

            var rows = rowsLoad.items;
            var columns = columnsLoad.items;

            // Populate base
            for (let i = 2; i < columns.length; i++) {
                for (let j = 1; j < rows.length; j++) {
                    if(columns[i][j] == "")
                        columns[i][j] = baseValues.values[j];                
                }            
            }             
            
            // Write data from table back to the sheet
            currentWorksheet.getRange("A25:A48").values = baseValues.values;
            currentWorksheet.getRange("B25:B48").values = columns[2].values;

            // Sync to update the sheet in Excel
            return context.sync();
        });
    })

我没能做到,因为写作测试显示数据未修改:

当预期应该是这样的:

我做错了什么?

在明智地决定在 Web 浏览器中调试它并更好地了解对象的工作原理后,我提出了这个解决方案:

 Excel.run(function (context) {

        var currentWorksheet = context.workbook.worksheets.getActiveWorksheet();
        var inputsTable = currentWorksheet.tables.getItem("Inputs");
        var baseValues = inputsTable.columns.getItemAt(1).load("values");    
        var columnsLoad = inputsTable.columns.load("values");
        var rowsLoad = inputsTable.rows.load("values");

        return context.sync()
        .then(function () {

            var rows = rowsLoad.items;
            var columns = columnsLoad.items.slice();

            // Populate base
            for (let i = 2; i < columns.length; i++) {
                let column = columns[i].values
                for (let j = 1; j < rows.length; j++) {
                    if(column[j][0] == ""){
                        column[j][0] = baseValues.values[j][0];                
                    }
                }            
            }           
            
            console.log(columns[2].values)
            
            // Write data from table back to the sheet
            currentWorksheet.getRange("A25:A46").values = baseValues.values;
            currentWorksheet.getRange("B25:B46").values = columns[2].values;

            // Sync to update the sheet in Excel
            return context.sync();
        });
    })