ctx.workbook.getSelectedRange() возвращает двойную одинарную кавычку ' ' для каждой отдельной кавычки 'в имени листа
Если имя листа является данными моего листа, m_address
а также m_addressLocal
свойства возвращаемого объекта диапазона будут выглядеть так"'my sheet''s data'!A1:B2"
Если используется как есть в других вызовах API, они потерпят неудачу.
Обходной путь - замена строки на более высоком уровне, так как не может напрямую изменить свойство range.address.
1 ответ
Мы исследовали это, и я на самом деле не уверен, что у нас есть ошибка. Код ниже работает. Когда вы говорите "если они используются как есть в других вызовах API, они потерпят неудачу", на какие вызовы API вы ссылаетесь?
try {
await Excel.run(async (context) => {
const sheetName = `My sheet's data`;
// Preemptively delete any previous incarnation of this worksheet, if any
context.workbook.worksheets.getItemOrNullObject(sheetName).delete();
const sheetAdded = context.workbook.worksheets.add(sheetName);
const rangeB2 = sheetAdded.getRange("B2").load("address");
await context.sync();
console.log(rangeB2.address);
const refetchedRange = sheetAdded.getRange(rangeB2.address);
refetchedRange.format.fill.color = "orange";
const differentFetchedRange = sheetAdded.getRange("'My sheet''s data'!B3");
differentFetchedRange.format.fill.color = "purple";
sheetAdded.activate();
});
}
catch (error) {
OfficeHelpers.Utilities.log(error);
}
Вы можете попробовать этот фрагмент прямо в пять кликов в новой Script Lab ( https://aka.ms/getscriptlab). Просто установите надстройку Script Lab (бесплатно), затем выберите "Импорт" в меню навигации и используйте следующий URL-адрес GIST: https://gist.github.com/Zlatkovsky/bd5e82a3cf6da021cc1af13dddebba1b. Подробнее об импорте фрагментов в Script Lab.