JavaScript API不适用于Excel 2013?

时间:2016-07-18 13:18:27

标签: ms-office office-js

我刚收到一份我提交的加载项的更改建议报告。它说Your add-in is not working in the Excel 2013 client on Windows 7 with Internet Explorer 11.

我一直在Excel 2016Excel Online测试我的加载项。所以我刚刚安装了Excel 2013(版本15.0.4841.1000,其中包含SP1),实际上加载项不起作用。但似乎很少有事情有效......

例如,以下示例函数在haha下的单元格A1中写入Excel Online,而Excel 2013中没有任何内容。

function test () {
    Excel.run(function (ctx) {
        var range = ctx.workbook.worksheets.getItem("Sheet1").getRange("A1");
        range.values = [["haha"]];
        return ctx.sync();
    });
}

所以有人知道JavaScript API是否支持Excel 2013?如果没有,许多专业人士将无法使用加载项,因为它们仍然使用Excel 2013 ...

PS:我发现办公室商店中有很多加载项需要Excel 2013 or laterExcel 2013 Service Pack 1 or later。如果JavaScript API不支持Excel 2013,那么这些加载项(例如,Stock Connector)是如何开发的?

编辑1:在我的清单xml:

<?xml version="1.0" encoding="UTF-8"?>
<OfficeApp xmlns="http://schemas.microsoft.com/office/appforoffice/1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bt="http://schemas.microsoft.com/office/officeappbasictypes/1.0" xmlns:ov="http://schemas.microsoft.com/office/taskpaneappversionoverrides" xsi:type="TaskPaneApp">

在我的Home.html中,我有:

<script src="https://appsforoffice.microsoft.com/lib/1/hosted/office.js"></script>

编辑2:我想以下设置相当于说加载项不应该在Excel 2013中使用?

<Hosts>
  <Host Name="Workbook" />
</Hosts>
<Requirements>
  <Sets>
    <Set Name="ExcelApi" MinVersion="1.2"/>
  </Sets>
</Requirements>
<DefaultSettings>
  ...
</DefaultSettings>

2 个答案:

答案 0 :(得分:9)

使用Office.js API时,您会看到每个方法都使用API​​集标识进行注释。例如:

enter image description here

这些API集对应于加载项将使用的Office版本。需求集列表及其支持位置可在http://dev.office.com/reference/add-ins/office-add-in-requirement-sets找到。

Excel 2016+(以及Office Online和Mac / iOS等效版本)支持 新的Office 2016主机特定API集(ExcelApi,WordApi等)。 API版本号(1.11.21.3)对应于API的更新,这些更新是在Office 2016的RTM版本之后添加的(随{{1}一起提供} 盒子外面)。具有Office 365订阅(家庭或企业)的客户可以使用这些更新。购买Office 2016磁盘/ MSI产品的客户只能使用原始的1.1 API。

您可以通过两种方式使用需求集。如果您的加载项100%取决于特定的API集,则应将其列在清单文件中。这样,对于不支持该特定API集的Office版本,“插入/管理加载项”对话框甚至不会提供加载项。

另一方面,如果你只是在集合中使用了一些API,并且可以不使用(即使它有点降级的体验),你可以做“点亮场景”。也就是说,您将列出 所需的最低版本,然后使用运行时检查来检测特定API集是否可用。

具体示例:假设您有一个Excel加载项,用于创建新工作表并将数据输出到表中。这需要1.1版本或更高版本。理想情况下,您喜欢能够设置列宽,但ExcelApi 1.1仅在range.format.columnWidth中可用。您不希望阻止客户使用您的加载项(如果他们有旧版本) - 毕竟,您的大部分功能仍然有用,即使不是最佳 - 但是想要使用新的API。在这种情况下,您应该在清单中指定ExcelApi 1.2,然后在JavaScript中执行运行时检查以确定是否可以运行ExcelApi 1.1代码。即:

range.format.columnWidth

有关相关答案,请参阅Neat ways to get environment (i.e. Office version)

答案 1 :(得分:1)

Excel 2013支持某些功能,但有许多内容不支持,包括使用Excel.run()的任何内容。

http://dev.office.com/reference/add-ins/office-add-in-requirement-sets