Excel Office 脚本 - 将 "blank cells" 替换为文本 "null"

Excel Office Scripts - Replace "blank cells" with the text "null"

我正在尝试用文本“null”替换 B 列(列名 = Status)中的空白单元格。我有两种不同的方法可以让我走到一半,但是我不知道如何完全解决这个问题。任何帮助将不胜感激

这里的 excel table 显示 B 列和该列中的一些空白单元格

这是我创建的两个不同的脚本来解决这个问题

脚本 1=我可以识别空白单元格,但不知道如何设置单元格的值。

function main(workbook: ExcelScript.Workbook) {
let source = workbook.getWorksheet("Source");
let sourceTable = workbook.getTable("Source");
const statusVisibleRange = source.getUsedRange().getColumn(0);
const statusVisibleRangeShifted = statusVisibleRange.getOffsetRange(1,1);
const StatusFilter = "Status";
const StatusFilterValues = '';
let stringValue = "null";

let blankCells = 
statusVisibleRangeShifted.getUsedRange().getSpecialCells(ExcelScript.SpecialCellType.blanks);
console.log(blankCells.getAddress());
}

脚本 2=如果 B 列(列名 = 状态)中有空白单元格,则脚本有效,但是如果没有任何空白单元格...它会过滤所有值并将此列中所有内容的状态更新为“空”。

function main(workbook: ExcelScript.Workbook) {
let source = workbook.getWorksheet("Source");
let sourceTable = workbook.getTable("Source");
const statusVisibleRange = source.getUsedRange().getColumn(0);
const statusVisibleRangeShifted = statusVisibleRange.getOffsetRange(1,1);
const StatusFilter = "Status";
const StatusFilterValues = '';
let stringValue = "null";

const statusFilter = sourceTable.getColumnByName(StatusFilter);
statusFilter.getFilter().applyValuesFilter([StatusFilterValues]);

statusVisibleRangeShifted.getUsedRange().setValue(stringValue);

statusFilter.getFilter().clear();

这对我有用...

function main(workbook: ExcelScript.Workbook)
{
  let worksheet = workbook.getWorksheet("Source");
  let table = worksheet.getTable("Source");

  let statusColumn = table.getColumnByName("Status");
  let statusColumnRange = statusColumn.getRangeBetweenHeaderAndTotal();

  let emptyStatusCells = statusColumnRange.getSpecialCells(ExcelScript.SpecialCellType.blanks);

  if (emptyStatusCells != undefined) {
    let rangeAreas = emptyStatusCells.getAreas();

    rangeAreas.forEach(range => {
      let values = range.getValues();

      values.forEach(cellValue => {
        cellValue[0] = "null";
      })

      range.setValues(values);
    })
  }

  // Add additional logic here once the blank cells are dealt with.
}