JavaScript API 不适用于 Excel 2013?

JavaScript API does not work for Excel 2013?

我刚收到一份针对我提交的加载项的更改建议报告。它说 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),确实加载项不起作用。但似乎没什么用...

例如,下面的示例函数在 Excel Online 下的单元格 A1 中写入 haha,而在 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:我看到 Office 商店中有很多加载项需要 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>

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

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

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

这些 API 集对应于加载项将运行的 Office 版本。可在 http://dev.office.com/reference/add-ins/office-add-in-requirement-sets.

中找到需求集列表及其支持位置

任何新的 Office 2016 主机特定 API 集(ExcelApi、WordApi 等) [=60] 受支持=] 2016+(以及 Office Online 和 Mac/iOS 等价物)。 API 版本号(1.1 vs. 1.2 vs. 1.3)对应于 APIs 的更新,这些更新是在 Office 的 RTM 版本之后添加的2016 年(开箱即用 1.1)。这些更新适用于拥有 Office 365 订阅(家庭或企业)的客户。购买了 Office 2016 disk/MSI 产品的客户将仅拥有原始 1.1 APIs.

您可以通过两种方式使用需求集。如果您的加载项 100% 依赖于特定的 API 集,您应该将其列在清单文件中。这样,对于不支持特定 API 集的 Office 版本,甚至不会在 "Insert/Manage Add-ins" 对话框中提供加载项。

另一方面,如果您只使用集合中的几个 API,并且可以不使用(即使这会降低体验),您可以执行 "light-up scenario"。也就是说,您将列出您 需要的最低版本,然后使用 运行 时间检查来检测特定 API 集是否可用。

具体示例:假设您有一个 Excel 加载项,它创建一个新的 sheet 并将数据输出到 table。这需要 ExcelApi 1.1 版本或更高版本。理想情况下,您 希望能够设置列宽,但 range.format.columnWidth 仅在 ExcelApi 1.2 中可用。您不希望 阻止 客户使用旧版本的加载项 — 毕竟,即使不是最佳状态,您的大部分功能仍然有效 —但您确实想使用新的 APIs。在这种情况下,您应该在您的清单中指定 ExcelApi 1.1,然后在您 JavaScript 中进行 运行 时间检查以确定您是否可以 运行 range.format.columnWidth代码。即:

if (Office.context.requirements.isSetSupported("ExcelApi", 1.2 )
{
   range.format.columnWidth = 25;
}

有关相关答案,请参阅