You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel Office Script:Contact_List非空日期行筛选及数据复制问题求助

修改Office Script实现Date列非空筛选与数据追加

以下是修正后的完整脚本,解决了筛选逻辑错误和数据追加的问题,同时优化了表格操作的规范性:

function main(workbook: ExcelScript.Workbook) { 
    let contactListSheet = workbook.getWorksheet("Contact_List"); 

    // 隐藏B:K列(保留原有功能)
    contactListSheet.getRange("B:K").setColumnHidden(true); 

    let contactListTable = workbook.getTable("Contact_List"); 
    let dateColumn = contactListTable.getColumnByName("Date");

    // 筛选Date列非空行:自定义筛选匹配非空值
    dateColumn.getFilter().applyCustomFilter(
        "",
        ExcelScript.FilterOperator.notEqual,
        "",
        false
    );

    let collectionNotesSheet = workbook.getWorksheet("Collection Notes");
    let notesTable = workbook.getTable("Notes");

    // 获取筛选后的可见数据(排除表头)
    let visibleDataRange = contactListTable.getRangeBetweenHeaderAndTotal().getVisibleView();
    let visibleValues = visibleDataRange.getValues();

    if (visibleValues.length > 0) {
        // 定位到Notes表格底部,追加数据
        let targetRange = notesTable.getRangeBelow();
        targetRange.getResizedRange(visibleValues.length - 1, visibleValues[0].length - 1).setValues(visibleValues);
    }

    // 清除Contact_List表格L-R列内容(通过列索引定位,L对应11、R对应17,0-based)
    for (let colIndex = 11; colIndex <= 17; colIndex++) {
        contactListTable.getColumnByIndex(colIndex).getRangeBetweenHeaderAndTotal().clear(ExcelScript.ClearApplyTo.contents);
    }

    // 恢复B:K列可见(修正原代码范围错误)
    contactListSheet.getRange("B:K").setColumnHidden(false);
    
    // 清除Date列筛选
    dateColumn.getFilter().clear();  
}

关键修改说明

1. 修复Date列非空筛选

替换原年份筛选逻辑,使用applyCustomFilter实现非空匹配:

  • 通过FilterOperator.notEqual运算符匹配空字符串,精准筛选出Date列不为空的行
  • 避免了直接使用null或<>导致的语法错误

2. 优化数据追加逻辑

  • 不再依赖固定单元格位置,通过getVisibleView()获取筛选后的有效数据
  • 使用notesTable.getRangeBelow()自动定位目标表格的最后一行,实现动态追加
  • 增加空数据判断,避免无效操作

3. 替换列字母引用为表格对象操作

  • 清除L-R列时,通过表格列索引循环获取对应列,直接操作表格数据范围(排除表头)
  • 直接指定目标工作表,不再依赖活动工作表,提升脚本稳定性

4. 修正列可见性恢复逻辑

原代码恢复A:L列可见会误操作A列,改为和隐藏逻辑一致的B:K列,保持操作统一

内容的提问来源于stack exchange,提问作者twilbour

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 22:04:55