【问题标题】:Issue with Sheet.FindAll MethodSheet.FindAll 方法的问题
【发布时间】:2019-06-10 16:21:12
【问题描述】:

我正在尝试查找与字符串"Sub-Total" 完全匹配的所有单元格。当我运行下面的代码时,代码在第二个context.sync() 之前中断。我很难理解为什么在下面没有找到单元格并加粗。任何帮助将不胜感激!

在运行以下命令时,我希望 A 列中与 "Sub-Total" 完全匹配的所有单元格都会加粗。

        Excel.run(function (context) {
            var sheet = context.workbook.worksheets.getActiveWorksheet();
            var subTotals = sheet.findAll("Sub-Total", {
                completeMatch: true,
                matchCase: true
            });

            return context.sync().
                then(function () {
                    subTotals.format.font.bold = true;
                    var aaColumn = sheet.getRange("A:A");
                    aaColumn.format.autofitColumns();
                    return context.sync();
                })

        }).catch(function (error) {
            console.log("Error: " + error);
            if (error instanceof OfficeExtension.Error) {
                console.log("Debug info: " + JSON.stringify(error.debugInfo));
            }
        });

代码将运行第一个context.sync,然后中断。

【问题讨论】:

    标签: office-js


    【解决方案1】:

    你的代码对我有用,虽然你有一个不必要的context.sync。试试这个:

    Excel.run(function (context) {
        var sheet = context.workbook.worksheets.getActiveWorksheet();
    
        var subTotals = sheet.findAll("Sub-Total", {
          completeMatch: true,
          matchCase: true
        });
    
        subTotals.format.font.bold = false;
        var aaColumn = sheet.getRange("A:A");
        aaColumn.format.autofitColumns();
    
        return context.sync();
    });
    

    更新

    这里是a gist,您可以将其导入the Script Lab tool。让我们看看它在 Script Lab 中是否适合您,然后从那里开始。

    顺便说一句,我看不到您调用Excel.run 的上下文,但它返回一个Promise 对象,因此您应该尝试将return 关键字放在它前面。有关示例,请参见要点。

    【讨论】:

    • 无论出于何种原因,我在运行上述代码时都没有得到任何响应。我添加了错误捕获,但似乎仍然没有发生任何事情。关于为什么会出现这种情况的任何想法?
    猜你喜欢
    • 1970-01-01
    • 2022-01-06
    • 2018-04-12
    • 2016-12-07
    • 2011-05-07
    • 2011-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多