Excel office.js 2mb需求是如何衡量的?

Excel office.js 2mb需求是如何衡量的?,excel,office-js,office-addins,Excel,Office Js,Office Addins,我想将不同大小的自定义设置数据保存到excel设置中。 但是当自定义设置太大时,saveAsync不会保存,这是预期的-每个外接程序有2mb的限制 这是我当前的代码: const bigJsonString = "Very big string"; const jsonObject = JSON.parse(stringValue); Office.context.document.settings.set('mydata', jsonObject); Office.cont

我想将不同大小的自定义设置数据保存到excel设置中。 但是当自定义设置太大时,saveAsync不会保存,这是预期的-每个外接程序有2mb的限制

这是我当前的代码:

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如何测量设置对象的大小?我想模仿

更新旁注:

根据下面的链接,看起来微软取消了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;
};

这里有一个很好的参考,可以在JS中调整对象的大小:

谢谢你的回答。我将对此进行测试,并让您知道结果。它几乎成功了,但我们需要像这样转换对象:const blob=new blob[JSON.stringifyobject],{type:'application/JSON'}。你能更新答案吗?更新了答案!
if (isWritableSetting(object)) ...