2017-09-27 2 views
1

Ich versuche, eine Einstellung in einem Dokument, das ich zuvor in derselben Sitzung gespeichert habe, abzurufen, aber ich bekomme settings.getItem is not a function.Office JS API - settings.getItem ist keine Funktion

Ich bin versucht, dies über eine Word-Online-Session in Chrome zu tun, und haben in der Dokumentation here bezogen haben, und haben auch diese post gesehen (aber ich glaube nicht, dass mein spezielles Problem passt)

Wie bereits erwähnt, funktioniert das Speichern der Einstellung einwandfrei. Wenn ich die Datei herunterlade, kann ich sehen, dass die Einstellung gespeichert wurde.

Ich verwende reagieren für diese Redux +, so unter das Snippet ist von der Redux Aktion Schöpfer:

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

Irgendwelche Ideen, wie ich die Einstellungen erfolgreich abrufen können?

Aktualisiert Code basierend auf Antwort (unten)

ich diesen Beitrag aktualisiert haben mit Code arbeiten auf der Grundlage der Antwort von Rick und Juan vorgesehen (Danke Jungs!)

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

Antwort

1

Es sieht so aus, als würden Sie die Shared API Office.context.document.settings in einem Word.run von den Word-spezifischen APIs mischen. Sehen Sie sich die spezielle Word-Wrapper-API (ab Version 1.4 der Word-spezifischen APIs) an: SettingsCollection. Dies ist das context.document.settings-Objekt, aber der "Kontext" ist das Word.RequestContext-Objekt, das an Word.run übergeben wird, nicht das Office.context-Objekt. Ihr Code ruft ein Einstellungsobjekt unter Verwendung der freigegebenen API Office .context.document.settings ab, ruft dann aber die Methoden getItem und load vom Format Word .RequestContext.document.settings auf.

Unter der Haube, es ist die gleichen Einstellungen OOXML in der Datei, aber der Zugriff über die zwei verschiedenen APIs könnte problematisch sein.

UPDATE: Im Lichte von Juan Balmoris Kommentar, hier sind einige Informationen zum Lesen einer Einstellung mit der Shared API: Getting the value of a setting. Informationen zur Unterscheidung zwischen den allgemeinen und den hostspezifischen APIs finden Sie hier: JavaScript API for Office.

+0

1.4 ist auf Vorschau, also würde ich empfehlen, die freigegebene API zu verwenden, um die Einstellungen abzurufen. –