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.

Другие вопросы по тегам