Мы создаем надстройку Excel с помощью диалогового окна. Диалоговое окно доставит сообщение в родительскую или открывающую книгу. Файл функции будет вызывать простую функцию в качестве примера:
const populateTable = (officeMessage)=>{
Excel.run(async context => {
const workbook = context.workbook;
const worksheets = workbook.worksheets;
const sheet = worksheets.add();
sheet.getCell(0,0).values = [[officeMessage]];
await context.sync();
}).then(()=>{
showDialogEvent.completed();
dialog.close();
}).catch(handleError);
}
Открыты два рабочих стола / рабочий стол Excel ( Excel1 и Excel2 ). Диалог открывается в Excel1 . Однако, если я сфокусируюсь на другой книге ( Excel2 ), прежде чем эта функция сработает. API Office js создаст новый лист в Excel2 вместо Excel1 , и будет выдано сообщение об ошибке, как показано ниже:
{"description":"There was an internal error while processing the request.","name":"RichApi.Error","code":"GeneralException","traceMessages":[],"innerError":null,"debugInfo":{"code":"GeneralException","message":"There was an internal error while processing the request.","errorLocation":"WorksheetCollection.add","statement":"var add=worksheets.add();","surroundingStatements":["var workbook=context.workbook;","var worksheets=workbook.worksheets;","// >>>>>","var add=worksheets.add();","// <<<<<","var cell=add.getCell(...);","// Instantiate {cell}","cell.values=...;"],"fullStatements":["Please enable config.extendedErrorLogging to see full statements."]},"stack":"GeneralException: There was an internal error while processing the request.\n at Anonymous function (https://appsforoffice.microsoft.com/lib/1.1/hosted/excel-win32-16.01.js:24:286584)\n at Anonymous function (https://cdn.jsdelivr.net/npm/promise-polyfill@8/dist/polyfill.min.js:1:822)"}
Примечание: Я пытался сохранить в памяти контекст первой книги в памяти и передать его в Excel.run , но это не так т работа.
Есть ли способ решить эту проблему?