【问题标题】:Office.JS “This add-in is no longer available” error when creating a Word Document with context.application.createDocument()使用 context.application.createDocument() 创建 Word 文档时,Office.JS“此加载项不再可用”错误
【发布时间】:2018-01-09 23:37:41
【问题描述】:

我正在使用 office js version 16.0.8626.1000 为 Microsoft Word 2016 开发插件。我使用 Web 服务来检索 base64 格式的文档,然后用它创建一个新的 Word 实例。

问题是每当我从我的服务器(而不是从 Visual Studio 调试器)运行加载项时,它都会打开文档,但加载项框架会显示错误

一审:

二审:

如果我从 Visual Studio 调试器运行加载项,则不会发生这种情况,它会打开没有框架的新实例。

这是我的代码

Office.initialize = function (reason) {
    // Checks for the DOM to load using the jQuery ready function.
    $(document).ready(function () {
        $('#get').click(function () {
            openWord();
        });
    });
}

这是我检索文档的方式(没有真正的 url):

function openWord() {
    getDocumentAsBase64(function (data) {
        Word.run(function (context) {
            var myNewDoc = context.application.createDocument(data);
            context.load(myNewDoc);

            return context.sync()
                .then(function () {
                    myNewDoc.open();
                    context.sync();
                })
                .catch(function (myError) {
                    //otherwise we handle the exception here!
                    updateStatus(myError.message);
                })
        }).catch(function (myError) {
            updateStatus(myError.message);
        });
    });
}

function getDocumentAsBase64(callback) {
    $.ajax({
        url: 'http://myurltomydocument.com/getFile',
        data: "{}",
        dataType: "json",
        type: "POST",
        contentType: "application/json; charset=utf-8",
        success: function (response) {
            callback(response.d);
        },
        error: function (response) {
            updateStatus(response.d);
        }
    });
}

编辑 -- 2017 年 8 月 12 日

如果有人想复制 Office 2016 的问题,这是我目前正在使用的 manifest

【问题讨论】:

    标签: ms-word office-js


    【解决方案1】:

    我不懂西班牙语,但错误中提到了 Visual Studio。我认为 Office 仍在尝试运行与 Visual Studio 一起加载的版本,它告诉您它不能这样做。问题可能出在清单上。我注意到它在很多地方仍然有字符串~remoteAppUrl。当您使用 VS 进行调试时,此字符串会自动替换为 localhost URL,但您需要手动将所有这些更改为您的 Web 服务的域,并在您要从 Web 服务运行它时旁加载新的清单。

    编辑 2017 年 12 月 11 日: 如果这不能解决问题,请尝试清除 Office 缓存。详情在:Clear the Office cache

    17 年 12 月 19 日编辑: 试试这个:
    继续文件->信息->检查问题 -> 检查文档 -> 检查。 然后在Task Pane Add-ins上点击Remove All

    【讨论】:

    • 感谢您的回复。事实上,我在 pastebin 上发布的清单有 ~remoteAppUrl (我没有更改它只是为了保持服务器 url 私有。在我的本地机器上,它的 url 写入正确)。所以这不是问题。我将使用真实清单编辑帖子,以便您可以复制问题。
    • 还是一样。我已经在MSDN forums 上发布了这个问题,有人告诉我这个问题有点复杂,他打算让一位高级工程师参与这个话题。再次感谢您的宝贵时间。
    【解决方案2】:

    我终于找到了解决这个问题的方法。

    1. 首先我下载了​​Office 2016 Administrative Template Files。 当你运行它时,它会提取一堆文件和文件夹。
    2. 进入admx文件夹,将全部内容复制到C:\Windows\PolicyDefinitions
    3. 以管理员身份在 CMD(或 Powershell)下执行 gpupdate /force
    4. 运行 gpedit.msc 并找到 Office 2016 的管理模板,然后找到更新(PC 配置 >> 管理模板 >> Microsoft Office 2016 >> 更新 >> 更新频道)并将更新频道设置为 每月频道 em>。

    我使用的是 1711 版(编译 8730.2127 点击并运行),现在一切正常。

    编辑 2018 年 9 月 1 日: 错误再次开始出现。我做的唯一一件事就是附加运行时日志来调试我的加载项清单。这还没有解决。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-22
      相关资源
      最近更新 更多