office.js 2mb 的要求是如何衡量的?
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如何测量设置对象的大小? (我要模仿)
更新(旁注):
根据以下 link,Microsoft 似乎取消了此 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 中调整对象大小的一个很好的参考:String length in bytes in JavaScript
我想将不同大小的自定义设置数据保存到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如何测量设置对象的大小? (我要模仿)
更新(旁注):
根据以下 link,Microsoft 似乎取消了此 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 中调整对象大小的一个很好的参考:String length in bytes in JavaScript