Sheet.FindAll方法的问题

时间:2019-06-10 16:21:12

标签: office-js

我正在尝试查找与字符串"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处运行,然后在其后中断。

1 个答案:

答案 0 :(得分: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关键字放在它的前面。有关示例,请参见要点。