2016-07-21 31 views
1

Ich möchte auf meine Einstellungen zugreifen, die in Office.context.document.settings von einer Multifunktionsleistenbefehlsfunktion gespeichert werden.Zugreifen auf Office.context.document.settings aus Ribbon-Funktionsdatei und Task-Bereiche

Sie wurden von einem Task-Pane gespeichert, scheinen aber nicht durch die Funktion zu erreichen. Sie sind durch andere Task-Panes zugänglich.

Auf der anderen Seite kann ich Einstellungen in der Funktionsdatei speichern, aber dann auch nicht über die Task-Bereiche zugreifen.

Dies ist nicht dokumentiert. Wie kann ich Einstellungen zwischen FunctionFile und Task-Panes übertragen?

In meinem Aufgabenbereich speichern ich meine Einstellung wie folgt aus:

  Office.context.document.settings.set('sheet_backup', "foo"); 

      Office.context.document.settings.saveAsync(function (asyncResult) { 
       if (asyncResult.status == Office.AsyncResultStatus.Failed) { 
        console.log('Settings save failed. Error: ' + asyncResult.error.message); 
       } else { 
        console.log('Settings saved.'); 
        console.log(Office.context.document.settings.get('sheet_backup')); 
       } 
      }); 

ich diese völlig in Ordnung aus einem anderen Aufgabenbereich JavaScript-Datei jedoch zugreifen kann

mit der Linie
console.log(Office.context.document.settings.get('sheet_backup')); 

, wenn ich dieselbe Zeile in der Datei, die ich im Manifest als meine Funktionsdatei deklariert habe ...

Es gibt nur null zurück.

+0

Aktualisierter Hauptbeitrag mit Codefragmenten und Erläuterungen zu 'FunctionFile'. – moejoe

Antwort

2

Die Einstellungen sind möglicherweise nicht in der Funktionsdatei verfügbar, da sie im Kontext der Funktionsdatei aktualisiert werden müssen, damit die neuesten Werte im Dokument erhalten bleiben. Die refreshAsync-API für das Einstellungsobjekt ermöglicht dies. Es erzwingt im Grunde eine Aktualisierung des im Speicher verfügbaren Einstellungsobjekts, das für Ihre Funktionsdatei verfügbar ist, mit ihren neuesten Werten aus dem Dokument. Danach sollten Sie in der Lage sein, sie zu lesen. Probieren Sie den folgenden Code aus:

Office.context.document.settings.refreshAsync(function (asyncResult) { 
    var taskpaneVal = asyncResult.value.get("backgroundColor"); 
});