Как измеряется потребность office. js 2mb? - PullRequest
0 голосов
/ 19 июня 2020

Я хочу сохранить различные размеры данных пользовательских настроек в настройках Excel. Но когда пользовательская настройка слишком велика, saveAsyn c не сохраняет, что и ожидается - существует ограничение в 2 МБ на надстройку.

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)=>{
    ...
});

Я знаю, что saveAsyn c вызовет метод обратного вызова с результатом. Но почему-то это работает для Office 365, но не для рабочего стола Excel.

Я хочу измерить размер jsonObject или bigJsonString , и если он больше 2 МБ, остановите установить и saveAsyn c звонки

Примерно так:

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 измерить размер настроек объект? (Я хочу mimi c)

Обновление (примечание):

Судя по приведенной ниже ссылке, похоже, что Microsoft удалила это ограничение в 2 МБ.

Какое ограничение офисных настроек для Excel Добавить в

1 Ответ

1 голос
/ 19 июня 2020

Можно измерить размер настройки, используя 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

...