[英]How does office.js 2mb requirement measured?
我想将不同大小的自定义设置数据保存到 excel 设置中。 但是当自定义设置太大时,saveAsync 不会保存,这是意料之中的 - 每个加载项有 2mb 的限制。
https://docs.microsoft.com/en-us/javascript/api/office/office.settings?view=word-js-preview
这是我当前的代码:
const bigJsonString = "Very big string";
const jsonObject = JSON.parse(stringValue);
Office.context.document.settings.set('mydata', jsonObject);
Office.context.document.settings.saveAsync((result)=>{
...
});
我知道saveAsync将使用结果调用回调方法。 但不知何故,它适用于 Office 365,但不适用于 Excel 桌面。
我想测量jsonObject或bigJsonString的大小,如果超过 2mb,则停止set和saveAsync调用
像这样的东西:
const bigJsonString = "Very big string";
const jsonObject = JSON.parse(stringValue);
if(GetSize(jsonObject) > 2){
// acknowledge user that add-in can't save customsetting.
} else {
Office.context.document.settings.set('mydata', jsonObject);
Office.context.document.settings.saveAsync((result)=>{
...
}
});
Office-JS 如何测量设置 object 的大小? (我想模仿)
更新(旁注):
根据下面的链接,微软似乎取消了这个 2mb 限制。
可以使用 JavaScript 测量设置的大小。
const isWritableSetting = (object) => {
// .size will return your object size in bytes
const blob = new Blob([JSON.stringify(object)], { type: 'application/json' })
return blob.size < 2 /* Megabytes */ * 1000 /* Kilobytes */* 1000;
};
我将1024
调整为1000
以更安全一些; 您可以验证它以查看它是否符合1024 * 1024
的条件。
然后,在您的代码中,您需要做的就是:
if (isWritableSetting(object)) ...
在 JS 中调整对象大小的一个很好的参考: JavaScript 中的 String length in bytes
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.