【问题标题】:Excel office JS api - worksheet rename event onNameChanged is not working on desktop excelExcel office JS api - 工作表重命名事件 onNameChanged 在桌面 excel 上不起作用
【发布时间】:2022-11-19 01:52:58
【问题描述】:

使用以下代码识别工作表重命名事件并在重命名后执行活动。同样在 Chrome/edge 浏览器上的 excel 在线版本(在线 office365)中工作正常,但在桌面版 excel(Microsoft 365 MSO (16.0.14326.21170) - 32 位)上不起作用。

let eventResult;
const onSheetRename = callBack => {
   Office.onReady(info => {
    // Office.addin.setStartupBehavior(Office.StartupBehavior.load);
    Excel.run(context => {
        const sheets = context.workbook.worksheets;
        eventResult = sheets.onNameChanged.add(callBack);
        sessionStorage.setItem('eventResult', eventResult);
        return context.sync();
    });
});

};

const removeEvent = () => {
  Office.onReady(info => {
    Excel.run(eventResult && eventResult.context, context => {
        sessionStorage.setItem('isRenameSheet', false);
        if (eventResult) {
            eventResult.remove();
        }
        return context.sync().then(() => {
            eventResult = null;
            sessionStorage.setItem('eventResult', eventResult);
        });
    });
});

};

跟随this documentation link 实现相同。

可以在控制台中看到此错误:未捕获(承诺)RichApi.Error:您无法执行请求的操作。在新的 n (excel-win32-16.01.js:25:241192) 在 i.processRequestExecutorResponseMessage (excel-win32-16.01.js:25:305358) 在 excel-win32-16.01.js:25:303421

有人可以让我知道吗“onNameChanged”活动是否支持桌面excel及其发布使用? 如果我遗漏了什么,请帮忙。 提前致谢!

【问题讨论】:

    标签: excel office-js excel-addins


    【解决方案1】:

    请查看此脚本实验室code snippet 中的代码。我在 Windows 上用 Excel 试过这个,它按预期工作。

    示例具有以下代码来注册 onNameChanged 事件的事件处理程序:

    async function registerOnNameChangedHandler() {
      await Excel.run(async (context) => {
        let sheet = context.workbook.worksheets;
          sheet.onNameChanged.add(onWorksheetNameChanged);
    
        await context.sync();
        console.log("A handler has been registered for the OnNameChanged event.");
      });
    }
    

    这是事件处理程序代码:

    async function onWorksheetNameChanged(event) {
      await Excel.run(async (context) => {
        console.log(
          "Handler for worksheet onNameChanged event has been triggered. Name 
          changed for worksheet Id : " + event.worksheetId
        );
      });
    }
    

    在您的代码中,您似乎在用作事件处理程序的回调函数中为 onNamedChanged 事件添加事件处理程序。在注册事件处理程序之前,不会调用该代码。尝试移动代码以将事件处理程序添加到回调函数之外。

    【讨论】:

      猜你喜欢
      • 2014-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-08
      相关资源
      最近更新 更多