0

如果工作表名称是我工作表的数据,则返回的范围对象 的m_addressm_addressLocal属性将如下所示 "'my sheet''s data'!A1:B2"

如果在其他 API 调用中按原样使用,它们将失败。

解决方法是在更高层进行字符串替换,因为无法直接更改 range.address 属性。

4

1 回答 1

2

我们对此进行了调查,实际上我不相信我们这里有错误。下面的代码有效。当您说“如果在其他 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 插件(免费),然后在导航菜单中选择“导入”,并使用以下 GIST URL:https ://gist.github.com/Zlatkovsky/bd5e82a3cf6da021cc1af13dddebba1b 。查看有关将片段导入 Script Lab 的更多信息

于 2017-05-05T22:01:20.337 回答