遗憾的是,Office API的某些功能在所有环境中的行为都不完全相同(例如:Excel Online和Excel 2013中的格式化).此外,Excel 2013中没有一些不错的新功能,但在Excel 2016中可用(Excel.js)
当然,我可以告诉用户他们只能在2016年使用我的应用程序,而不是实现在所有环境中都不完全支持的东西.
我更愿意向Excel 2013的用户提供我的应用程序,即使他们没有办法(或倾向于)升级到2016年.我宁愿优雅地降级我的功能列表在功能较少的环境中,而不是将应用程序的功能限制为整个)
它很容易封装与文档的所有交互,并根据环境运行不同的代码.也就是说,如果我知道我所处的确切环境.当前的office.js是否提供了一种发现主机应用程序的版本和上下文(在线/离线)的简洁方法?我在office.context等等找不到任何东西.
在网上有一些关于黑客攻击整个.getContext链条的建议,但这些似乎是"无证件"的,所以我对此并不满意.
有什么建议?
我正在使用Visual Studio中的Office JavaScript API开发任务窗格Office加载项.当您运行该应用程序时,它将在桌面客户端版本的Office中运行.
Office Store要求说明
您的Office加载项必须完全适用于Office 2013和Office Online支持的操作系统,浏览器和设备.
所以我也需要在Office在线版本中进行测试.
问题是我无法找到一种方法来加载Word/Excel/Powerpoint Online中的应用程序并测试它,我也没有一个SharePoint设置,我可以发布应用程序测试它,然后将其提交给应用程序商店.
任何帮助都感激不尽.
最近,Microsoft推出了Office加载项体系结构,该体系结构允许开发远程托管的加载项,并在办公室内的IFrame中运行.我已经阅读了很多,试图了解这个架构是否可以替代VSTO,还是它们有单独的用例.VS 2015有两个模板.
在我的具体情况下,我想开发一个加载项,使用自定义导入功能扩展Excel 2016(例如自定义CSV,TSV,甚至XLSX).我不知道我应该选择哪种类型的项目.
我们的一位客户在尝试激活他们创建的应用程序时遇到问题。
该应用程序是免费发布的。
位置:https : //store.office.com/en-001/app.aspx?assetid=WA104379484&ui=en-US&rs=en-001&ad=US&appredirect=false
它被不同的用户多次下载并且运行良好。但是,对于某个特定用户,在尝试安装和使用该应用程序时,Excel Online 中会显示一条错误消息:
“加载项警告。此加载项的许可证信息丢失或已过期,因此它的功能可能有限”
我浏览了以下文档:
https://dev.office.com/officestore/docs/add-in-license-schema
但是,我不确定该问题是否与 Office 商店中的应用程序发布/许可有关,因为该问题特定于单个用户。我尚未与最终用户建立通话并解决问题。在我继续之前,我想检查一下您是否遇到过这个错误。
任何线索都会非常有帮助。
先感谢您!
最好的问候 Saptarshi
更新#2:
我创建了OfficeDev/office-js#124和OfficeDev/office-js-docs#1415,以便Microsoft的某个人能够回答这个问题.使用Microsoft支持,无论是在线还是在Outlook for iOS应用程序中,都证明是徒劳的.
更新#1:
看起来将清单基本级别设置的要求从Mailbox 1.5降级到Mailbox 1.4会使我的侧载加载项出现在我的iOS设备上.这看起来像个错误!
但是,这样做可以扩展支持的平台列表以包含Office 2013. 根据我的另一个问题的答案,这意味着我还需要在VersionOverridesV1_0级别设置Mailbox 1.4.
我仍然在VersionOverridesV1_1级别设置了Mailbox 1.5,因此支持调用Outlook REST API并支持可执行的任务窗格.
使用在Mailbox 1.5中添加的API的加载项是否可以像我在Outlook 2013上预期的那样工作?
(具体来说,我使用新的Office.context.mailbox.getCallbackTokenAsync()方法来获取REST令牌.)
我试图让我的插件出现在我的iOS设备上,以便我可以测试它.该设备是安装了iOS 11.0.3的iPhone 6s.
我想针对:
我需要Mailbox 1.5才能支持调用Outlook REST API并支持可修复的任务窗格.
这是我的清单:
<?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:mailappor="http://schemas.microsoft.com/office/mailappversionoverrides" xsi:type="MailApp">
<Id>40ca534e-480c-444f-85bf-9f7051f23fe2</Id>
<Version>1.0.2.0</Version>
<ProviderName>TitleX E-Conveyancing Pty Ltd</ProviderName> …Run Code Online (Sandbox Code Playgroud) 我问了一个关于 6个月前提交自定义函数加载项的问题.目前的结论是an add-in that uses custom functions cannot currently be published to the Office Store or via Office 365 centralized deployment.
但我意识到文件已经改变了,现在已经改变了
已知的问题
......
尚未启用通过Office 365管理员门户和AppSource进行的部署.
而且,我functions在Script Lab中找到了新按钮.用户可以注册一个类似的功能=ScriptLab.BlankSnippet1.add10(…),并在Excel中使用它.
所以我的问题是
1)Script Lab是否已ScriptLab在AppSource中成功提交了一个函数?
2)今天,微软之外的其他开发人员是否可以使用Script Lab等自定义函数提交加载项?
用例:
我们正在创建一个分析邮件内容的系统。如果我们能够根据其内容对电子邮件进行分类和存档,我们希望自动对同一对话/线程中的后续电子邮件进行分类。
问题在于,当我们代表不同用户查询时,作为(邮件)消息的一部分获得的对话 ID 不是唯一的。
一个例子:
答:我的收件箱中给定线程的对话 ID。
B:同一线程的 sessionId,但在不同用户的收件箱中。
价值观:
答:AAQkADUyZWYxNzljLTc4NjItNGMzYy1iZDYwLTE4NWEzNDg1OWUzZQAQABlanHOPI0v1ukA7KePaYv4=。乙:AAQkAGVkNGRjNWNmLTAwNTItNDA2NC1hOThhLTU5NTUyNGFjNTM5ZAAQABlanHOPI0v1ukA7KePaYv4=。
我可以使用此对话 ID 的一部分来识别不同用户之间的相同对话吗?该模式似乎是给定对话的最后 25-26 个字符是唯一的。其余的是 Guid + 某种后缀。
编辑:我的问题与 Microsoft Graph API 的使用有关。在 SO 上回答了与 ConversationIds 和 Outlook 电子邮件相关的问题,但这些问题描述了直接从 Outlook 客户端(或可能通过 Outlook api)获取电子邮件的情况。例如,像 ConversationIndex 和 ConversationTopic 这样的属性不在我从 Graph API 获得的消息中。
outlook outlook-addin office-js outlook-web-addins microsoft-graph-api
Office JS 在preview 中提供了以下功能,但我找不到任何示例。
这是我尝试过的但似乎不起作用,不知道我在这里缺少什么,因为此代码插入了文本但未创建书签。
Word.run(function (context)
{
let range = context.document.getSelection();
return context.sync().then(function ()
{
range.insertText(`Test Bookmark`, Word.InsertLocation.replace);
let uniqueStr = new Date().getTime();
let bookmarkName = `Test_BookmarkCode_${uniqueStr}`;
range.insertBookmark(bookmarkName);
});
});
Run Code Online (Sandbox Code Playgroud)
交叉张贴在这里。
我正在尝试使用 Excel Javascript API 创建一个插件:
window.data = "data")。据我所知,不可能ShowTaskpane通过按钮上的多个操作来做到这一点,因为这似乎不适用于共享运行时。
我目前采取的方法是:
<FunctionFile resid="Taskpane.Url"/>
Run Code Online (Sandbox Code Playgroud)
(其中<bt:Url id="Taskpane.Url" DefaultValue="https://localhost:3000/taskpane.html"/>)
<Control xsi:type="Button" id="FirstButton">
...
<Action xsi:type="ExecuteFunction">
<FunctionName>first</FunctionName>
</Action>
</Control>
<Control xsi:type="Button" id="SecondButton">
...
<Action xsi:type="ExecuteFunction">
<FunctionName>second</FunctionName>
</Action>
</Control>
Run Code Online (Sandbox Code Playgroud)
first和second作为函数(并在taskpane.html文件中定义)。这些函数中的每一个 a) 在 Taskpane 应用程序中设置一些状态(以使其显示不同的内容,具体取决于函数调用),然后调用Office.addin.showAsTaskpane(). 代码大致如下:但是,这不会按预期工作。也就是说,它在任务窗格一侧的单独 iframe 中打开任务窗格。它看起来像这样:
当我添加Office.addin.showAsTaskpane()对share函数的调用时,它看起来像这样:
如何使用执行功能操作但在任务窗格中执行此操作?我想要一个共享的运行时,并且我希望所有的运行时都打开并位于任务窗格中。该文档使 AppDomains 似乎可以实现这一目标,但我不确定我做错了什么。
感谢您提供任何信息 - 我真的很感激!
重现步骤:
我能够使用Visual Studio中的基本Excel加载项项目模板重现这一点.
我目前正在使用最新版本的Excel(16.0.7726.1030).
任何解决方法?
谢谢!
office-js ×10
ms-office ×3
office365 ×3
excel ×2
excel-addins ×1
ios ×1
ms-word ×1
office-store ×1
outlook ×1
scriptlab ×1
vsto ×1
word-addins ×1