#excel #office-js #office-js-ux
#excel #office-js #office-js-ux
Вопрос:
у надстройки, которую я разрабатываю, возникают проблемы с ошибкой context.sync, когда ячейка находится в режиме редактирования.
Я хотел бы использовать delayForCellEdit в Excel.Запустить, но это приведет к зависанию пользовательского интерфейса, пока пользователь не выйдет из режима редактирования.
Есть ли способ определить, находится ли Excel в режиме редактирования перед вызовом context.sync?
Мое первое желание — запустить
Excel.run(ctx => {
ctx.sync().then(() => {
console.log("not in edit mode);
}).catch(err => {
console.log("in edit mode");
});
});
как сердцебиение каждые несколько секунд, но хотелось бы чего-то более элегантного.
Ответ №1:
В настоящее время мы поддерживаем только delayForCellEdit
задержку context.sync()
до выхода из режима редактирования. И я тестировал локально, не столкнулся с проблемой зависания, как вы упомянули.
Вот мой пример кода для тестирования и просто для справки: $("#run").click(() => tryCatch(run));
async function run() {
await Excel.run({ delayForCellEdit: true }, async context => {
let sheet;
sheet = context.workbook.worksheets.getItem("Sheet1");
let range = sheet.getRange("A1");
range.values = [["1"]];
await context.sync();
});
}
Комментарии:
1. Пожалуйста, добавляйте вопросы только в комментариях.
2. Это прискорбно. Проблема заключается в том, как наша надстройка кодируется и извлекает сохраненные данные перед инициализацией. Я надеялся, что есть способ обнаружить это, чтобы отобразить сообщение пользователю без грубого принуждения.
3. Итак, зависание не связано с ‘delayForCellEdit’, верно?
4. И что касается вашего требования, вы имеете в виду, что вы извлекаете данные для размещения на листе Excel, и вы не хотели, чтобы пользователи прерывали выполнение, отображая сообщение, если пользователи пытаются отредактировать лист?
5. @gingerjiang мы сопоставляем сохраненные данные при запуске, поэтому добавление зависает, потому что мы не можем получить сохраненные данные и загрузить пользовательский интерфейс. Мы также не хотим, чтобы пользователи редактировали ячейку при загрузке новых данных, потому что это может быть медленным процессом в зависимости от объема данных, которые они запрашивают у нашей службы.