首页 > 解决方案 > saveAsync 在后续调用中失败?

问题描述

我正在尝试使用 Office Javascript API 编写 Excel 插件。我尝试使用“设置”界面保留设置。根据文档,当我想将 saveAsync 保存到桌面时,我会调用它。我第一次调用 saveAsync 函数时,它似乎工作正常。但在随后的通话中,我总是收到错误“内部错误”。有没有办法解决这个问题?

这是我保存和持久化数据的助手类:

const StorageHelper = {};
StorageHelper.Persist = function (callback) {
    return new OfficeExtension.Promise(function (resolve, reject) {
        Office.context.document.settings.saveAsync(function (asyncResult) {
            if (asyncResult.status == Office.AsyncResultStatus.Failed) {
                reject("Failed to save data, please contact customer support: " + asyncResult.error.message);
            } else {
                Office.context.document.settings.refreshAsync(function (asyncResult2) {
                    if (callback) callback();
                    resolve();
                });
            }
        });
    });
};
StorageHelper.SaveSettings = function (key, value) {
    Office.context.document.settings.set(key, value);
};

然后我尝试这样称呼它:

let PassDataType = $("#pass-data-type-select").val();
StorageHelper.SaveSettings("PassDataType", PassDataType);
return StorageHelper.Persist()
    .then(function () {
        ...
    }).catch(function (error) {
        StatusBarHelper.SetMessage(error);
    });

我多次调用此代码。我在随后的每次通话中都会收到此错误。虽然第一次工作正常。

{  
   "status":"failed",
   "error":{  
      "name":"Internal Error",
      "message":"An internal error has occurred.",
      "code":5001
   }
}

这可能是什么原因造成的?

标签: office-js

解决方案


感谢您的帖子,看起来它不是我身边的复制品。我使用你的代码并删除了帮助类,但它在我的 mac 机器上工作得很好。这是这个测试的要点,你能分享一下你的要点吗?我想试试当地的复制品。谢谢

我的要点在这里 https://gist.github.com/lumine2008/9ecd9ee661fe64a0ddc02ebfd18c9eef


推荐阅读