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 2016
和 Excel 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 later
或 Excel 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;
}
有关相关答案,请参阅
我刚收到一份针对我提交的加载项的更改建议报告。它说 Your add-in is not working in the Excel 2013 client on Windows 7 with Internet Explorer 11.
我一直在 Excel 2016
和 Excel 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 later
或 Excel 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;
}
有关相关答案,请参阅