从Ribbon Functionfile和Task-Panes访问Office.context.document.settings

时间:2016-07-21 17:31:31

标签: office365 office365api office-js office365-apps

我想从功能区命令功能访问Office.context.document.settings中存储的设置。

它们已由Task-Pane存储,但似乎无法通过Functionfile访问。其他任务窗格可以访问它们。

另一方面,我可以在Functionfile中存储设置,但也不能从Task-Panes访问它们。

没有记录。如何在FunctionFile和Task-Panes之间传输设置?

在我的任务窗格中,我将设置存储如下:

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

我可以使用行

从另一个任务窗格javascript文件中完全正常访问
console.log(Office.context.document.settings.get('sheet_backup'));

但是,当我在清单中声明为我的Function文件的文件中使用相同的行时...

          

它只返回null

1 个答案:

答案 0 :(得分:2)

这些设置可能在函数文件中不可用,因为它们需要在函数文件的上下文中刷新,以便获取文档中保留的最新值。设置对象上的refreshAsync API允许您执行此操作。它基本上会强制刷新函数文件中可用的内存设置对象及其文档中的最新值。这样做之后你应该能够阅读它们。请尝试以下代码:

(<function sum_double.<locals>.<lambda> at 0x000001532DC0FA60>, 1, 2)  
(<function sum_double.<locals>.<lambda> at 0x000001532DC0FA60>, 2, 3)
(<function sum_double.<locals>.<lambda> at 0x000001532DC0FA60>, 2, 2)