如何查找Office AddIn Host是Word应用程序还是使用office.js的Excel?

我正在创build一个办公室AddIn的工作在Excel和Word应用程序和基于主机,如果它是一个字或Excel主机我想执行不同的逻辑。 我正在使用office.js创build办公室地址。

例如 :-

let say type="Excel" // after some logic executed if(type=="Excel") { //run code for excel applications } else { //run code for word applications } 

我试图用波纹pipe:

  if (Office.context.requirements.isSetSupported('ExcelApi', '1.1')) { alert("yes it is excel"); } 

但是当我在excel中运行它时,它不工作。

我也在清单文件中发送主机

  <Hosts> <Host Name="Document" /> <Host Name="Workbook" /> </Hosts> 

我也得到了一些代码更改做了很多谷歌search我find了波纹pipe代码,这是不适合我的工作

 function getHostInfo() { var _requirements = Office.context.requirements; var types = ['Excel', 'Word']; var minVersions = ['1.1', '1.0']; // Start with the highest version // Loop through types and minVersions for (var type in types) { for (var minVersion in minVersions) { // Append "Api" to the type for set name, ie "ExcelApi" or "WordApi" if (_requirements.isSetSupported(types[type] + 'Api', minVersions[minVersion])) { return { type: types[type], apiVersion: minVersions[minVersion] } } } } }; 

谢谢

更新2016年12月5日:我们将很快发布一个API来检测主机和平台信息 (部分原因是最近需要为Office Online删除_host_info URL参数,这些参数非正式地依赖于这个事实)。 我们也有一个临时的解决方法,预计即将到来的官方API。 请参阅“ 在Excel Online中,OfficeJS API不再将Host_Info_parameter passing给Excel加载项 ”以获取更多信息。

请注意,对于许多亮起的情况 ,使用API​​集合检测仍然会更好。 有关需求集的更多信息,请参阅“ 获取环境的简单方法(即Office版本) ”。


if (Office.context.requirements.isSetSupported('ExcelApi', '1.1'))应该为你工作,如果你在Excel 2016中。它不会在2013年工作(即返回false )。

如果您的目标是Office 2013,并且只需要一个针对Word和Excel的解决scheme,则可以使用将OpenXML编写为区分因素(Word can,Excel不能)的function。 因此请检查Office.context.requirements.isSetSupported('OoxmlCoercion') 。 它将返回真正的Word,错误的Excel。

您可以随时检查location.search对象 – 应该返回一个string,如?_host_Info=Word|Win32|16.01|en-US

请注意即将到来的 API,它提供了一个正式的API来获取这些信息。

规范链接: https : //github.com/OfficeDev/office-js-docs/tree/ContextAdditions_OpenSpec

这是获取所需信息的更好方法,而不是依赖URL查询string或会话存储。 这样的方法是有点冒险的,因为潜在的行为可能会改变而没有警告 使用已发布的API总是一个不错的select。