【问题标题】:Can't share document settings between Office Online and Office 2016无法在 Office Online 和 Office 2016 之间共享文档设置
【发布时间】:2017-04-26 06:39:45
【问题描述】:

我们正在开发 Word 插件,它使用 Settings.setSettings.get 方法在文档中存储信息。

问题可以描述为以下场景:

  • 在桌面上创建新的 Word 文档并通过Settings.set 保存数据
  • 将该文档放入 OneDrive 中
  • 文档将同步并在 Office Online 中打开
  • 存储的数据无法通过Settings.get 获得

我在两个客户端上使用相同的清单。我在设置页面上阅读过:

使用 Settings 对象的方法创建的设置按加载项和每个文档保存。也就是说,它们仅对创建它们的加载项可用,并且只能从保存它们的文档中使用。

我通过 Yeoman 创建了示例加载项来演示此问题。在这里查看:https://github.com/Vj3k0/onedrive-test/

有什么想法吗?

【问题讨论】:

    标签: office-js


    【解决方案1】:

    Settings.set 方法仅影响内存中的设置。对设置进行所有更改后,您需要调用 Settings.saveAsync 方法来持久化它们。

    此外,在读取设置之前,您应该使用Settings.refreshAsync 将它们重新水化到内存中。

    使用您的示例,我进行了以下更改:

      Office.context.document.settings.refreshAsync(function () {
    
        var foo = Office.context.document.settings.get('hello');
        if (!foo) {
          Office.context.document.settings.set('hello', 'world');
          Office.context.document.settings.saveAsync(function (asyncResult) {
            $('#content').append('Settings saved with status: ' + asyncResult.status);
          });
        }
        else {
          $('#content').append('Value found: ' + foo);
        }
    
      });
    

    我在 GitHub 上发布了一个工作示例:Word-Settings-Sample

    关于清单侧面加载的附加说明。作为Juan covers in his answer,要跨平台准确测试,您需要集中部署加载项。我个人的偏好是为此目的使用 O365 开发者租户和Central Deployment。您可以通过Microsoft Office 365 Developer Program免费获取。

    【讨论】:

    • 我添加了指向示例项目的链接以重现此问题。请在修改后的原始问题中检查它。
    • 我在您的示例中添加了一个额外的函数调用并更新了我的答案。
    • 不知何故我错过了那个方法。但仍然对我不起作用。我在 Github 上更新了代码。你试过运行它吗?附:我正在 Mac Office 2016 和 Office Online 上进行测试。
    • 我可以确认它在 Windows 上也不起作用。
    • 不,不适合我。我明天会尝试制作一个简短的视频,以确保我们在同一页面上。谢谢你一直陪着我。
    【解决方案2】:

    Office.js 设置按加载项实例、每个文档存储。这意味着,例如,如果您在 Excel 中插入多个内容加载项,则每个加载项都有自己的一组设置。 (最终是不同的加载项实例)

    在某些情况下,任务窗格加载项也可能发生这种情况,这取决于您如何测试它。如果您在 Word Online 中加载一个清单,该清单在您每次插入时都会在文件格式中具有不同的 ID,当然 ID 将与使用文件共享在 Win32 中插入的加载项不同,只是通过事实上它来自不同的商店。如果每次插入任务窗格加载项时打开分析文件格式 (ooxml),您将看到加载项的 PK 是它来自的商店加上 ID。 (这就是使加载项实例独一无二的原因)

    如果您使用的是 SharePoint 目录或商店,您将获得相同的实例 ID 和商店,并且设置将按预期工作。如果您想测试多平台,我建议您使用我们的 corp 部署进行测试,或将其作为预览版发送到商店。

    检查此文件格式示例:它使用插入对话框的侧载功能在 Online 中插入了相同的任务窗格:(注意同一商店类型上的 id 是如何不同的,因此设置将保存在不同的实例中)

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <we:webextension id="f3984fd0-d21e-45a5-9353-942c4e1e3535" xmlns:we="http://schemas.microsoft.com/office/webextensions/webextension/2010/11">
        <we:reference id="42e27db6-2647-4c5a-83b3-80056035d6f8" version="1.0" store="developer" storeType="uploadfiledevcatalog" />
        <we:alternateReferences />
        <we:properties />
        <we:bindings />
        <we:snapshot xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" />
    </we:webextension>

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <we:webextension id="1e14b918-3b58-48f2-a102-51da5c594251" xmlns:we="http://schemas.microsoft.com/office/webextensions/webextension/2010/11">
        <we:reference id="78e27db6-2647-4c5a-83b3-80056035d6f8" version="1.0" store="developer" storeType="uploadfiledevcatalog" />
        <we:alternateReferences />
        <we:properties />
        <we:bindings />
        <we:snapshot xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" />
    </we:webextension>

    【讨论】:

    • 我们已将加载项发布到 Office 应用商店,但阅读设置仍然不起作用。有没有办法让我在桌面和网络上查看从 Office 商店加载的清单,以便我可以比较它们?
    • 是的,我能够重现这个问题,这是一个错误,将努力修复它!感谢您报告此事。
    • 胡安您好,这个问题有进展吗?
    • 是的,这被认为是一个错误,它已被修复,我只是尝试了它并且它的工作。你试过了吗?感谢您的报告和跟进。
    猜你喜欢
    • 1970-01-01
    • 2014-07-07
    • 2017-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-15
    • 1970-01-01
    • 2016-07-29
    相关资源
    最近更新 更多