代码之家  ›  专栏  ›  技术社区  ›  Marcin Szałek

在Excel Online中加载自定义属性

  •  0
  • Marcin Szałek  · 技术社区  · 6 年前

    我想尝试为office api for javascript执行此函数:

    public loadCustomProperties() {
        Excel.run(async (ctx) => {
            let custom = ctx.workbook.properties.custom;    
            custom.load();
            return ctx.sync();
        })
    }
    

    但我犯了个错误 ERROR Error: Uncaught (in promise): GeneralException: An internal error occurred... (没有具体内容)

    当我试图加载 properties 而不是 properties.custom 一切正常。

    请帮忙:)

    编辑:
    这是我得到的错误:

    错误错误:未捕获(在Promise中):GeneralException:内部 处理请求时出错。 richapi.error:处理请求时发生内部错误。 在新R上(excel-web-16.00.js:21) 在T.C.processrequestExecutorResponseMessage(excel-web-16.00.js:21) 在excel-web-16.00.js:21 在zoneDelegate.push../node_modules/zone.js/dist/zone.js.zoneDelegate.invoke (JS区:388) 在object.onInvoke上(core.js:3760) 在zoneDelegate.push../node_modules/zone.js/dist/zone.js.zoneDelegate.invoke (JS区:387) 在zone.push../node_modules/zone.js/dist/zone.js.zone.run(zone.js:138) JS区:872 在zonedelegate.push../node_modules/zone.js/dist/zone.js.zonedelegate.invoketask (js区:421) 在object.onInvokeTask上(core.js:3751) 在新R上(excel-web-16.00.js:21) 在T.C.processrequestExecutorResponseMessage(excel-web-16.00.js:21) 在excel-web-16.00.js:21 在zoneDelegate.push../node_modules/zone.js/dist/zone.js.zoneDelegate.invoke (JS区:388) 在object.onInvoke上(core.js:3760) 在zoneDelegate.push../node_modules/zone.js/dist/zone.js.zoneDelegate.invoke (JS区:387) 在zone.push../node_modules/zone.js/dist/zone.js.zone.run(zone.js:138) JS区:872 在zonedelegate.push../node_modules/zone.js/dist/zone.js.zonedelegate.invoketask (js区:421) 在object.onInvokeTask上(core.js:3751) 在ResolvePromise(区域JS:814) JS区:724 拒绝(main.js:103) 在zoneDelegate.push../node_modules/zone.js/dist/zone.js.zoneDelegate.invoke (JS区:388) 在object.onInvoke上(core.js:3760) 在zoneDelegate.push../node_modules/zone.js/dist/zone.js.zoneDelegate.invoke (JS区:387) 在zone.push../node_modules/zone.js/dist/zone.js.zone.run(zone.js:138) JS区:872 在zonedelegate.push../node_modules/zone.js/dist/zone.js.zonedelegate.invoketask (js区:421) 在object.onInvokeTask上(core.js:3751)

    编辑2:

    我发现这是一个已知的错误: https://github.com/OfficeDev/office-js/issues/179

    2 回复  |  直到 6 年前
        1
  •  1
  •   Juan Balmori    6 年前

    修改了3处代码。

    1. 第一行缺少异步
    2. 缺少“函数”
    3. 最后,正如shanks提到的,您在context.sync()中缺少等待。

    我添加了一个console.log来验证是否加载了属性。

    async function loadCustomProperties() {
       await Excel.run(async (ctx) => {
            let custom = ctx.workbook.properties.custom;
            custom.load();
            await ctx.sync();
            console.log(custom);
        })
    }
        2
  •  0
  •   Marcin Szałek    6 年前

    我想出了这个方法来装载物品。如果确保count大于0,则可以安全地加载customproperties。

    async function loadCustomPropertiess() {
        await Excel.run(async (context) => {
            var customProperty = context.workbook.properties.custom;
            var customPropertyCount = customProperty.getCount();
            await context.sync();
    
            if (customPropertyCount.value > 0) {
                customProperty.load();
                await context.sync();
                customProperty.items.forEach(prop => console.log(prop));
            } else {
                console.log("No custom properties");
            }
        });
    }