2017-05-05 38 views
0

如果工作表名称是我的表的数据返回范围对象的m_addressm_addressLocal属性将这个样子 "'my sheet''s data'!A1:B2"双单引号”ctx.workbook.getSelectedRange()返回“每个单引号'在工作表名称

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

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

+0

让我把它传递给开发团队,我们会回复你。 –

+0

谢谢。这不会阻止我。只是想让你知道它。 –

回答

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); 
} 

您可以尝试在新的脚本实验室(https://aka.ms/getscriptlab)从字面上5次点击这个片段直播。只需安装Script Lab加载项(免费),然后在导航菜单中选择“导入”,然后使用以下GIST URL:https://gist.github.com/Zlatkovsky/bd5e82a3cf6da021cc1af13dddebba1b。见more info about importing snippets to Script Lab

+0

对不起,我想我对“其他API”做了假设。对于我来说这个特定的API就是这个'context.workbook.worksheets.getItem(“我的表'的数据”)。getRange(“B3”)。select();'如果你把它放在'sheetAdded.activate ()'你会看到它失败。我的用例是在工作簿中获取所选范围,向用户显示工作表名称(不带额外的引号)和地址,并让他们在单击时跳转到范围。不确定为什么一些API容忍重复的引号,而其他API则不能。这是一个要点:(https://gist.github.com/jimbarrett33/99581000b3907fb1084e2b9b455c7c82)。很好的插件顺便说一句。 –

+1

@JimBarrett,我会争辩说,上述是由设计。没有工作簿中有双刻度标记的工作表,因此失败。当它是更大的'Sheet Name'!A4'结构的一部分时与看到'getItem'时有区别。 –

+1

对于您的场景,正确的做法是查询范围的“工作表”属性,然后加载'worksheet.name'。 –

相关问题