2017-09-27 14 views
1

私は以前に同じセッション内で保存したドキュメント内の設定を取得しようとしていますが、私はsettings.getItem is not a functionを取得しています。私はクローム内のWordのオンラインセッションを介してこれを実行しようとしてる、およびドキュメントhereに言及されており、また、(私はそれが私の特定の問題に合うとは思わない)Office JS API - settings.getItemは関数ではありません

この postを見てきました

前述したように、設定を保存しても正常に動作し、ファイルをダウンロードすると設定が保存されているのがわかります。

私はこのために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) 
         } 
        } 
       )    
      } 
     ) 
    } 
} 

私が正常に設定を取得する方法上の任意のアイデアを?私はリックとフアンが提供する回答に基づいて動作するコードで、この記事を更新しました

回答に基づいて更新されたコード(下)

(みんなありがとう!)

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)) 
    } 
} 

答えて

1

それWord固有のAPIからWord.run内にShared API Office.context.document.settingsを混在させているようです。特別なWordラッパーAPI(バージョン1.4のWord固有API):SettingsCollectionを見てください。これはcontext.document.settingsオブジェクトですが、ここでの "コンテキスト"はOffice.contextオブジェクトではなくWord.runに渡されるWord.RequestContextオブジェクトです。あなたのコードは、共有API オフィス .context.document.settingsを使用して設定オブジェクトを取得しますが、ワード .RequestContext.document.settingsからgetItemメソッドとloadメソッドを呼び出します。

フードの下では、ファイル内の同じ設定OOXMLですが、2つの異なるAPIを使用してアクセスする場合は問題があります。

UPDATE:Juan Balmoriさんのコメントを参考にして、共有APIを使用した設定の読み方については、Getting the value of a settingをご覧ください。 Commonとホスト固有のAPIの区別に関する情報は、JavaScript API for Officeをご覧ください。

+0

1.4はプレビューされているので、共有APIを使用して設定を取得することをお勧めします。 –

関連する問題