office.js的官方版本可在此处获得:
https://appsforoffice.microsoft.com/lib/1/hosted/office.js
Run Code Online (Sandbox Code Playgroud)
它在代码中包含以下行:
window.history.replaceState = null;
window.history.pushState = null;
Run Code Online (Sandbox Code Playgroud)
这打破了我的Excel加载项中的一些历史功能(我正在使用react和react-router)
为什么office.js会使这些历史记录功能无效?我在文档中找不到任何解释.
我目前正在使用带有Office.js的Outlook Web加载项。在此项目中,我们需要发送邮件合并电子邮件以处理通讯组列表和组。我们使用ExpandDL调用,而我们的肥皂请求如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soap:Header>
<RequestServerVersion xmlns="http://schemas.microsoft.com/exchange/services/2006/types" Version="Exchange2013" soap:mustUnderstand="0" />
</soap:Header>
<soap:Body>
<m:ExpandDL>
<m:Mailbox>
<t:EmailAddress>exampledl@example.com</t:EmailAddress>
</m:Mailbox>
</m:ExpandDL>
</soap:Body>
</soap:Envelope>
Run Code Online (Sandbox Code Playgroud)
我们的Outlook Web加载项在Mac 16.23(190309)上的Outlook最新版本之前一直有效。我使用较旧的版本16.16进行了相同的测试,并且工作正常。它会返回与ExpandDL调用相应的结果。
我将代码跟踪到文件outlook-mac-16.00.js(包含在我们的Web加载项中的office.js库中),并遇到以下错误:
操作失败。
奇怪的是,它只是在制定错误响应的中间,但是当我们在错误和成功回调中添加断点时,它永远不会命中。异步Soap调用永远不会返回执行任何回调。我们必须进入图书馆才能找到以上信息。
更新:[4/15/2019]
我将稳定版本更新为16.23.1(190326),并且expandDL调用没有得到另一个错误:
消息:“内部协议错误:'-2147467259'。” 名称:“ AccessRestricted”
以上是我在当前稳定版本上进行调试时从createAsyncResult第10914行摘录的outlook-mac-16.00.js。
更新:[4/18/2019]
我更新到了最新的稳定版本16.24(19041401),现在返回状态为,"succeeded"但异步结果的值为null。可以肯定的是,我尝试Office.context.mailbox.makeEwsRequestAsync手动调用该电话进行仔细检查,结果是相同的(null值和"succeeded"状态)。
如果需要,我可以提供有关此问题的任何详细信息。
exchangewebservices office-js outlook-web-addins outlook-for-mac
我创建了一个角度应用程序,并希望使用JS API库.我想在Office 365 Outlook中使用此应用程序.但是,我收到以下错误:
Uncaught TypeError: window.external.GetContext is not a function
OSF.InitializationHelper.getAppContext @ o15apptofilemappingtable.js:11
Run Code Online (Sandbox Code Playgroud)
我在浏览器上运行index.html,最终我将从Office 365 outlook中运行它.以下是代码:
index.html的:
<!DOCTYPE html>
<html ng-app="app">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Office 365 APIs sample</title>
<base href="/">
...
...
<!-- JavaScript Office API -->
<script src="https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js" type="text/javascript"></script>
<!-- App code. -->
<script src="scripts/app.js"></script>
<script src="controllers/homeController.js"></script>
</head>
<body>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
app.js:
(function () {
console.log("STARTING...");
var init = function (reason) {
$(document).ready(function () {
console.log("ready");
});
};
try {
Office.initialize = init; …Run Code Online (Sandbox Code Playgroud) 我正在使用新的Office-JS apis开发Outlook插件,并且在构建身份验证流程时,我发现在Outlook 2016 for Mac案例中,对话框系统似乎无法正常工作.
为了清楚起见,我们正在使用Office Insider Fast Track构建,因为它大大改进了对Office-JS API的支持.
我经历了这个特定部分的几次迭代(其中大多数在Windows客户端和Mac和Win上的Web客户端都运行良好),并且没有运气.场景是:
步骤1到5在所有平台上都能正常工作.第6步拒绝使用Outlook for Mac.最初,此流程是使用本机js window.open和window.postMessage apis构建的.如上所述,除了Outlook Mac之外,这个工作无处不在,其中,API似乎忽略了窗口选项,只是在任何打开的浏览器中打开新选项卡中的url并且从不设置子窗口引用(window.open的结果为null ).
如果做不到这一点,我按照SO上的建议来使用Office功能,displayDialogAsync和messageParent.在一些初步障碍之后,这也是设置并在除了Outlook Mac之外的每个平台上工作.
由于Mac Outlook中没有开发工具或JS控制台支持,我按照此处的建议操作:Outlook 2016 for Mac - 调试/查看控制台登录Outlook加载项并设置Vorlon以尝试获取一些上下文,添加大量日志记录指向尝试并获得一些背景.不幸的是,虽然Vorlon确实将我的身份验证登陆页面作为客户端,并且看到了Office界面,但我的控制台输出都没有显示出来,这使得JS看起来好像根本没有运行.
在这一点上,我不知道下一步该尝试什么.有没有人遇到过这个问题,或者是在Outlook 2016 for Mac客户端上工作?
澄清背景:
谢谢.
我正在创建一个加载项,我将使用组织许可来销售该加载项。
我已经在加载项上实施了身份验证方案。我目前正在要求User.Read使用 Azure v2 端点进行可靠身份验证的范围。为了获取我正在查询的用户信息
https://graph.microsoft.com/v1.0/me
Run Code Online (Sandbox Code Playgroud)
为了正确测试用户的许可证,我需要提取用户的组织标识。但是,我从 Grah 请求中收到的用户信息极其精简。对于 AAD 帐户,架构类似于:
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users/$entity",
businessPhones: [],
displayName: "FirstName LastName",
givenName: "FirstName",
id: "unique-id",
jobTitle: null,
mail: "First.LastName@COMPANYDOMAIN.COM",
mobilePhone: null,
officeLocation: null,
preferredLanguage: null,
surname: "LastName",
userPrincipalName: "FILastName@COMPANYDOMAIN.COM"
}
Run Code Online (Sandbox Code Playgroud)
如果我使用
https://graph.microsoft.com/BETA/me
Run Code Online (Sandbox Code Playgroud)
我获得了更多信息,但没有任何信息可以帮助我确定用户组织的唯一 ID。
是否需要使用不同的范围来获取用户组织的信息?如果没有,我可以依靠解析用户电子邮件中的域名作为用户组织的唯一 ID 吗?我需要查询不同的 API 吗?
如果有帮助,在用户使用 AD 进行身份验证后,我会收到以下响应:
{
access_token: "eyJ0eXAiOiJKV1QiLCJub25jZSI6IkFRQUJBQUFBQUFEWDhHQ2k2SnM2U0s4MlRzRDJQYjdyN1VLTzdJSDJSLWpTcmpScU9..."
expires_at: Fri May 18 2018 07: 18: 42 GMT - 0400(Eastern Daylight Time) {}
expires_in: "3599"
provider: "Microsoft"
scope: "https://graph.microsoft.com/User.Read"
session_state: "012f4565-31bb-..."
state: …Run Code Online (Sandbox Code Playgroud) 我在Javascript Web Office Addins中有关于"console.log"的问题.目前我正在使用Javascript Word Addin并且无法对其进行故障排除,因为我不明白"console.log"输出的发送位置.在Microsoft站点上有很多示例,其中包含"console.log",但它们从未指定如何检查这些输出.
所以,问题是如何才能看到这个"console.log"输出.我没有使用Visual Studio.
BR,阿列克谢
我正在开发一个Word 2016 Addin,我收到了一个客户端(通过Sentry记录)的错误,我在复制时遇到了麻烦.它发生在Word 16.11中macOS Sierra 10.12.6上的Dialog窗口中.
window.external.RegisterEvent is not a function.
(In 'window.external.RegisterEvent(n,t,i,r)', 'window.external.RegisterEvent' is undefined)
Run Code Online (Sandbox Code Playgroud)
该错误源于单词API脚本https://appsforoffice.microsoft.com/lib/1/hosted/word-mac-16.00.js并查看Github上的调试代码,它似乎来自这一行.
有没有人知道为什么会这样?它没有发生在任何其他平台上,我在本地复制它时遇到了麻烦.
提前致谢.如果需要,我很乐意提供更多信息.
注意:在Addin提交审核过程中发生此错误导致提交失败 - 因此需要跟踪来源.
我有一个应用程序,显示一些静态文件供下载.此应用程序创建隐藏的iframe并将源设置为file-url.
浏览器显示另存为对话框.
但在Microsoft Office中没有另存为对话框,并且未启动filedownload.
该文件随附Content-Disposition: Attachment.工作解决方案只需打开一个新的浏览器实例并触发文件下载.我不想打开一个可以获得焦点的新窗口.
<!DOCTYPE html>
<html>
<head>
<script>
function di(){
document.getElementById("d").src="blob.dat";
}
</script>
<title>download</title>
</head>
<body>
<h1>file loading</h1>
<h2>works</h2>
<p>But opens a new window</p>
<a href="blob.dat" target="_blank"> a blank </a><br>
<a href="blob.dat" target="download"> named frame </a>
<h2>won't work</h2>
<a href="blob.dat"> a self </a><br>
<a href="blob.dat" target="_self"> a self </a><br>
<a href="blob.dat" target="_top"> a top </a><br>
<a href="#" onclick="di();"> iframe </a><br><br>
<iframe id="d"></iframe>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我认为这是一个严重的错误,如果网络应用程序无法跟踪链接.
我正在使用addFileAttachmentAsync将图像添加为Outlook 2016中的电子邮件附件.有没有办法指定附件选项?我看到有一个 AttachmentDetail类型,我可以以某种方式使用这个来指定其他选项吗?我的目标是使用multipart/related MIME对象嵌入图像.
在Outlook Web Add-In中,我试图拦截OnSend在发送电子邮件时触发的事件.
我在GitHub中使用了这个例子,它运行正常.
如果我在电子邮件正文中包含"附件"一词,并单击"发送"按钮,OnSend则会触发一次事件,并弹出一个弹出模式窗口,显示以下消息:
附件提醒
您可能忘记附加文件.
使用发送和不发送按钮.如果单击" 发送",OnSend事件将被触发两次:Send在附件提醒中单击按钮后2次.我只期待像第一个发送一样的事件.
如何OnSend在附件提醒后进行事件触发?
office-js ×10
javascript ×3
ms-office ×2
add-in ×1
console.log ×1
html ×1
macos ×1
ms-word ×1
office-store ×1
office365 ×1
outlook-2016 ×1
word-addins ×1