Я работал над этим проектом, надстройкой простого оглавления для Excel. Я не могу заставить свои кнопки срабатывать. Я могу отладить и увидеть свою панель задач, но нажатие на мои кнопки ничего не делает.
Есть 2 кнопки: создать и удалить. Мой js файл здесь .
РЕДАКТИРОВАТЬ
Используя ScriptLab, приведенный ниже код является тем, что я успешно протестировал. Однако, когда я попытался перенести его обратно на VS, при нажатии кнопки ничего не делают.
$("#run").click(() => tryCatch(run));
async function run() {
await Excel.run(async (context) => {
var sheets = context.workbook.worksheets;
sheets.load("items/name");
var sheetName = 'Table of Contents';
await context.sync();
return context.sync()
.then(function () {
var toc = sheets.items.find(ws => ws.name == sheetName);
if (!toc) {
toc = sheets.add(sheetName);
context.sync();
} else {
toc.getUsedRange().clear();
}
toc.load("name, position");
context.sync();
var values = [];
var count = 0;
sheets.items.forEach((ws) => {
if (ws.name !== sheetName) {
values.push([(count + 1), "=HYPERLINK(\"#\"&\"'\" & \"" + ws.name + "\" & \"'!A1\",\"" + ws.name + "\")"]);
count++;
}
})
toc.position = 0;
toc.activate();
toc.getRange("A:A").format.columnWidth = 2;
toc.getRange("B:B").format.columnWidth = 20;
toc.getRange("C:C").format.columnWidth = 200;
toc.getRange("C:C").format.wrapText = true;
toc.getRange("1:1").format.rowHeight = 5;
toc.getRange("3:3").format.rowHeight = 5;
toc.getRange("B2").values = [["Table of Contents"]];
toc.getRange("B2").format.font.size = 18;
toc.getRange("B2").format.font.bold = true;
if (values.length === 0) {
console.log('error 1');
return context.sync();
}
var dataRangeAddress = `B4:C${3 + (count || 1)}`;
var dataRange = toc.getRange(dataRangeAddress);
context.sync();
dataRange.values = values;
toc.calculate(false);
return context.sync();
});
await context.sync();
});
};
/** Default helper for invoking an action and handling errors. */
async function tryCatch(callback) {
try {
await callback();
} catch (error) {
// Note: In a production add-in, you'd want to notify the user through your add-in's UI.
console.error(error);
}
};