Office js Office JS API-settings.getItem不是函数

Office js Office JS API-settings.getItem不是函数,office-js,Office Js,我试图检索以前保存在同一会话中的文档中的设置,但是我得到的是settings.getItem不是函数 我正试图通过Chrome中的Word在线会话来实现这一点,并参考了文档,也看到了这一点(但我认为它不适合我的具体问题) 如前所述,保存设置工作正常,下载文件时可以看到设置已保存 我正在使用react+redux进行此操作,因此下面的代码段来自redux操作创建者: export function getSetting() { //this function tries to find a

我试图检索以前保存在同一会话中的文档中的设置,但是我得到的是
settings.getItem不是函数

我正试图通过Chrome中的Word在线会话来实现这一点,并参考了文档,也看到了这一点(但我认为它不适合我的具体问题)

如前所述,保存设置工作正常,下载文件时可以看到设置已保存

我正在使用react+redux进行此操作,因此下面的代码段来自redux操作创建者:

export function getSetting() {
    //this function tries to find a setting within the document
    return function(dispatch, getState) {
        window.Word.run(
            function(context) {
                let settings = Office.context.document.settings
                var thisSetting 
                try {
                    console.log('attempting to find existing setting for ' + constants.ORG_ID)
                    thisSetting = settings.getItem(constants.ORG_ID)
                    console.log('got ' + thisSetting.value)
                    context.load(thisSetting)
                } catch (error) {
                    thisSetting = null
                    console.log('couldn\'t find setting)
                    console.log(error.message)
                }                    
                return context.sync()
                .then(
                    function() {
                        if (thisSetting) {
                            dispatch(requestSetThisSetting (thisSetting.value))
                            console.log('got setting ' + thisSetting.value)
                        }
                    }
                )             
            }
        )
    }
}
关于如何成功检索设置有什么想法吗?

根据答案更新代码(如下)

我已经根据Rick和Juan提供的答案用工作代码更新了这篇文章(谢谢大家!)


看起来您在Word.run中混合了共享API Office.context.document.settings和Word特定API。看看特殊的Word包装器API(来自特定于Word的API的1.4版):。这是context.document.settings对象,但此处的“context”是传递给Word.run的Word.RequestContext对象,而不是Office.context对象。您的代码使用共享APIOffice.context.document.settings获取设置对象,但随后它调用getItem并从Word.RequestContext.document.settings加载方法

实际上,文件中的OOXML设置是相同的,但是通过两个不同的API访问它可能会有问题


更新:根据Juan Balmori的评论,以下是有关使用共享API读取设置的一些信息:。有关常见API和特定于主机的API之间区别的信息,请参见此处:。

1.4正在预览中,因此我建议您使用共享API来检索设置。
export function getSetting() {
    //this function tries to find a setting within the document
    return function(dispatch, getState) {
        let currentSetting = Office.context.document.settings.get(constants.ORG_ID)
        console.log('current setting is ' + currentSetting)
        if (currentSetting) dispatch(requestSetSetting(currentSetting))
    }
}