标签: office-js

Office.js使浏览器历史记录功能无效,从而破坏历史记录使

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加载项中的一些历史功能(我正在使用reactreact-router)

为什么office.js会使这些历史记录功能无效?我在文档中找不到任何解释.

office-js

16
推荐指数
2
解决办法
1537
查看次数

Office js Web加载项无法通过Soap调用扩展ExpandDL

我目前正在使用带有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

15
推荐指数
0
解决办法
510
查看次数

未捕获的TypeError:window.external.GetContext不是函数

我创建了一个角度应用程序,并希望使用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)

office365 office365-apps office-js

14
推荐指数
2
解决办法
1995
查看次数

Outlook 2016 for Mac中的Office.context.ui.messageParent是否已损坏?

我正在使用新的Office-JS apis开发Outlook插件,并且在构建身份验证流程时,我发现在Outlook 2016 for Mac案例中,对话框系统似乎无法正常工作.

为了清楚起见,我们正在使用Office Insider Fast Track构建,因为它大大改进了对Office-JS API的支持.

我经历了这个特定部分的几次迭代(其中大多数在Windows客户端和Mac和Win上的Web客户端都运行良好),并且没有运气.场景是:

  1. 项目清单
  2. 在outlook中打开任务窗格.
  3. 点击登录按钮
  4. 打开一个新窗口,指向我们的身份验证门户
  5. 用户登录.
  6. 在auth完成时,窗口重定向到office外接作用域中的页面,并使用auth令牌回调父帧,可以在其中进一步处理.

步骤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客户端上工作?

澄清背景:

  • 所有身份验证页面都列在Manifest的AppDomains部分中.
  • 虽然初始版本直接指向我们的auth服务(这不适用于Mac),但当前版本首先打开一个范围内的预认证页面,该页面重定向到auth服务.
  • Office-JS api的阻止警报,阻止它们用于显示有用信息.
  • 通过此应用程序的所有版本进行身份验证已在Windows上的Outlook 2016和Win和Mac上的OWA上运行.

谢谢.

macos office-addins office-js outlook-2016 office-store

13
推荐指数
1
解决办法
690
查看次数

如何使用 Microsoft Graph API 从用户配置文件中获取组织(租户)ID

我正在创建一个加载项,我将使用组织许可来销售该加载项。

我已经在加载项上实施了身份验证方案。我目前正在要求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 吗?

更新:OAuth 响应

如果有帮助,在用户使用 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)

azure-active-directory office-js microsoft-graph-api

13
推荐指数
3
解决办法
9221
查看次数

控制台登录Javascript Office Addin

我在Javascript Web Office Addins中有关于"console.log"的问题.目前我正在使用Javascript Word Addin并且无法对其进行故障排除,因为我不明白"console.log"输出的发送位置.在Microsoft站点上有很多示例,其中包含"console.log",但它们从未指定如何检查这些输出.

所以,问题是如何才能看到这个"console.log"输出.我没有使用Visual Studio.

BR,阿列克谢

javascript add-in ms-word console.log office-js

11
推荐指数
4
解决办法
3612
查看次数

Office.js Word - window.external.RegisterEvent不是函数

我正在开发一个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提交审核过程中发生此错误导致提交失败 - 因此需要跟踪来源.

ms-office word-addins office-js

10
推荐指数
1
解决办法
206
查看次数

如何在不使用window.open()的情况下在TaskPane应用程序中下载文件?

我有一个应用程序,显示一些静态文件供下载.此应用程序创建隐藏的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)

我认为这是一个严重的错误,如果网络应用程序无法跟踪链接.

html javascript ms-office office-js

9
推荐指数
1
解决办法
379
查看次数

使用Office Js Addin将图像作为多部分/相关MIME对象添加到Outlook

我正在使用addFileAttachmentAsync将图像添加为Outlook 2016中的电子邮件附件.有没有办法指定附件选项?我看到有一个 AttachmentDetail类型,我可以以某种方式使用这个来指定其他选项吗?我的目标是使用multipart/related MIME对象嵌入图像.

javascript office-js

9
推荐指数
1
解决办法
349
查看次数

OnSend在附件提醒后解雇了两次

在Outlook Web Add-In中,我试图拦截OnSend在发送电子邮件时触发的事件.

我在GitHub中使用了这个例子,它运行正常.

如果我在电子邮件正文中包含"附件"一词,并单击"发送"按钮,OnSend则会触发一次事件,并弹出一个弹出模式窗口,显示以下消息:

附件提醒

您可能忘记附加文件.

使用发送不发送按钮.如果单击" 发送",OnSend事件将被触发两次:Send在附件提醒中单击按钮后2次.我只期待像第一个发送一样的事件.

如何OnSend在附件提醒后进行事件触发?

outlook-addin office-js

9
推荐指数
1
解决办法
265
查看次数