我可以在Excel对话框内托管的页面中调用Excel.run()吗(使用office-js插件技术)

时间:2019-03-14 21:25:20

标签: office-js

我正在为Excel编写Office-js插件。

我在html页面中运行了一些代码:

    Logger.Log(`about to call GetActiveSheetID`);
    Excel.run((context) => {
        const sheets: any = context.workbook.worksheets;
        const activeSheet: any = sheets.getActiveWorksheet();
        return context.sync().then(() => {
            Logger.Log(`GetActiveSheetID returns ${activeSheet.id}`);
        });
    }).catch((e) => {
        Logger.Log(e.message);
    });
  

在旁边:记录器将记录写到本地存储,以便可以将其读回   其他地方,因为调试器控制台似乎无法正常工作   

当我在对话框中托管这部分javascript / html页面时(使用office dialog API),我将获得以下日志条目:

2019-03-14T21:14:24.043Z    about to call GetActiveSheetID
2019-03-14T21:14:24.059Z    An internal error has occurred.

当我在任务窗格中运行完全相同的页面/代码时,我得到:

2019-03-14T21:14:47.162Z    about to call GetActiveSheetID
2019-03-14T21:14:47.185Z    GetActiveSheetID returns {00000000-0001-0000-0000-000000000000}

当驻留在办公室对话框中时,似乎Excel.run()不起作用?因此,该对话框不能用于修改excel电子表格数据。

1 个答案:

答案 0 :(得分:1)

恐怕您只能在对话框中调用的Office.js API是isSetSupportedmessageParent。如果需要其他Office.js功能,则需要将带有messageParent的对话框中的信号传递到父页面,并从父页面调用所需的Office.js API。

有关更多信息,请参见Dialog API