Я работаю над надстройкой Excel и использую библиотеку office.js. Мой плагин должен сохранять некоторые данные на сервере, введенные в ячейки после того, как пользователь нажал кнопку «Сохранить данные» на панели задач. Все работает отлично, за исключением ситуации, когда пользователь вводил что-то в ячейку и сразу же (без нажатия клавиши ввода или нажатия на другую ячейку) нажимал кнопку «Сохранить данные». Я получаю сообщение об ошибке с кодом «InvalidOperationInCellEditMode» и описанием «Excel находится в режиме редактирования ячейки ...».
Я добавил следующий код, который перехватывает это исключение и показывает сообщение на панели задач, но его нельзя воспринимать как удобное для пользователя поведение.
function SaveData() {
Excel.run(function (ctx) {
return ctx.sync().then(function() {
// HERE I HAVE SOME CODE THAT WORKS IF CELL IS NOT BEING EDITED
});
}).catch(function(error) {
console.log("Error: " + error);
if (error instanceof OfficeExtension.Error) {
console.log("Debug info: " + JSON.stringify(error.debugInfo));
// HERE I HAVE SOME CODE THAT SHOWS MESSGE ON TASK PANE
}
});
}
Есть ли способ заблокировать панель задач, когда пользователь редактирует ячейку так, как она работает для некоторых собственных кнопок Excel?
ОБНОВЛЕНИЕ1: возможно ли завершить редактирование пользователя с помощью API и выполнить код после этого?