如何查找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。