如果工作表名称是我工作表的数据,则返回的范围对象 的m_address
和m_addressLocal
属性将如下所示
"'my sheet''s data'!A1:B2"
如果在其他 API 调用中按原样使用,它们将失败。
解决方法是在更高层进行字符串替换,因为无法直接更改 range.address 属性。
我们对此进行了调查,实际上我不相信我们这里有错误。下面的代码有效。当您说“如果在其他 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 的更多信息。