问题标签 [office-js]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
2813 浏览

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

我创建了一个 Angular 应用程序并想在其中使用JS API库。我想在 Office 365 Outlook 中使用这个应用程序。但是,我收到以下错误:

我在浏览器上运行 index.html,最终我将从 Office 365 Outlook 内部运行它。下面是代码:

索引.html:

应用程序.js:

请让我知道是否有人遇到此错误。通过在网上搜索,我找不到任何解决方案。

谢谢!

0 投票
2 回答
1319 浏览

office-addins - Office 加载项中的自定义对话框

是否可以在 Office 加载项中使用自定义对话框。我用谷歌搜索,但找不到任何相关的东西。

如果不可能,是否有人可以建议解决方法。

这是一个带有任务窗格的 Word 加载项。我需要在单击窗格中的按钮时打开一个对话框,以便可以在框中完成一些选择并将其传回给 Document。

谢谢你。

0 投票
1 回答
1251 浏览

excel - Office365 加载项:将数据从任务窗格加载项插入 Excel 工作表

我肯定错过了什么:

[问题]:

我有一个二维数据数组,我想从单元格 A1 开始插入到当前工作表中。我还必须格式化这些数据。当前文档可能为空,也可能不为空。我无法控制这一点。

稍后,我需要从文档中删除数据并插入新数据。这组新数据可能有不同的维度。

使用 Office JavaScript Api 似乎不可能做到这一点。

我尝试使用 TableBindings 等的所有事情都失败了。在许多情况下,根据 MSDN 应该工作的功能失败了,给我一些神秘的错误消息,例如“内部错误”(代码 5001)或不受支持的绑定操作(3010)。我必须使用表格绑定,因为根据 MSDN 文档,我无法将格式应用于其他任何内容。

以下解决方案是不可接受的:

  • 强制用户使用具有预先存在的命名表的特定文档模板
  • 在我的加载项开始工作之前强制用户选择单元格“A1”。
  • 强制用户在插入数据之前选择一个范围。

从可用性的角度来看,所有这些都是噩梦般的解决方案。

可以从命名项目创建一个绑定,并通过计算列和行来构造范围,并构建一个像“A1:C232”这样的字符串,但这只能工作一次,因为:

  • 我无法删除数据(是的。在使用这种命名范围创建的绑定上调用“deleteAllDataValuesAsync”会引发错误 3010(即使绑定说它是“表”绑定.. wat?)。
  • 我不能用不同大小的数据覆盖它(覆盖错误)
  • 我无法对其设置格式(是的,它是作为表格绑定创建的绑定,是的,我可以调用 setFormatAsync 函数,它会引发“内部错误,5001”-> #headdesk

我希望微软的人能读到这篇文章,并能给我指明正确的方向。我真的希望!因为我开始担心这实际上是设计使然。(在过去几周的挣扎之后,我对 office.js 感到非常沮丧,我很难不咆哮,所以我会在这里停下来......不要让我开始使用 ui 结构)

0 投票
2 回答
2608 浏览

excel - 使用 Excel.run() 在 Office.js 中链接 Promise

我正在使用新的 office.js。我正在使用返回承诺的 Excel.run 功能。我对图书馆实现的承诺模式有疑问。

样品都显示出这种模式

问题是 Excel.run() 中包含的 ctx.sync().then() 以它的呈现方式,你不能按照 Promise 规范链接 Promise,因为如果你尝试处理Excel.run() 之外的 then() 因此,该模式似乎在促进嵌套函数调用,而这是应该消除的承诺。

我想要做的是通过这样的链接将几个调用排序在一起:

这可能吗?

0 投票
1 回答
583 浏览

javascript - 如何以编程方式在 PowerPoint 的 JavaScript 加载项中触发演示模式?

我们有一种方法可以检查 PowerPoint 文档的当前状态:https ://msdn.microsoft.com/EN-US/library/office/dn482495.aspx

Document.getActiveViewAsync

在此处输入图像描述

我还可以收听状态的变化:https ://msdn.microsoft.com/EN-US/library/office/dn482501.aspx

ActiveViewChanged 事件

我已经在使用如下:


是否有允许我触发演示模式的 API 方法?

出于某种原因,我在文档中找不到它。


为什么要触发演示模式?当用户按 F5 时,默认情况下会进入演示模式。但是,如果焦点位于加载项中,则会刷新加载项。我正在听 F5 键并阻止刷新,但我想进入演示模式以确保行为一致。

0 投票
1 回答
3359 浏览

office365 - 获取环境的巧妙方法(即 Office 版本)

遗憾的是,Office API 的某些功能在所有环境中的行为并不完全相同(例如:Excel Online 和 Excel 2013 中的格式设置)。此外,一些不错的新功能在 Excel 2013 中不可用,但在 Excel 2016 (Excel.js) 中可用

当然,我可以告诉用户他们只能在 2016 中使用我的应用程序,并且根本不实现在所有环境中都没有完全支持的东西。

我更愿意将我的应用程序提供给 Excel 2013 的用户,即使他们没有办法(或没有意愿)升级到 2016 年。而且我宁愿在功能较弱的环境中优雅地降级我的功能列表,也不愿将应用程序的功能限制为所有的)

封装与文档的所有交互并根据环境运行不同的代码很容易。也就是说,如果我知道我所处的确切环境。当前的 office.js 是否提供了一种简洁的方法来发现主机应用程序的版本和上下文(在线/离线)?我在 office.context... 等中找不到任何东西。

网上有一些关于入侵整个.getContext链条的建议,但这些似乎是“无证的”,所以我对此不太满意。

有什么建议么?

0 投票
1 回答
2875 浏览

jquery - 从 Outlook 邮件加载项调用 Web 服务

我在使用 Outlook 邮件加载项时遇到的这个问题有点困扰。我正在使用 Office 365 开发人员帐户,其中将显示邮件加载项(在线,在浏览器中): 在此处输入图像描述

单击按钮时,我想调用 REST Web 服务。

首先,让我发布我的 HTML:

这是我们在第一个屏幕截图中看到的 HTML。

Office.initialize JS 代码,给想看的人:

我尝试了不同的方法来做到这一点。单击按钮时,它会调用指定的函数,这是我尝试过的几种方法:

但是当单击按钮并调用此函数时,这是我得到的错误: 在此处输入图像描述

我尝试的第二个功能:

但无济于事。这是我得到的错误: 在此处输入图像描述

我尝试的最后一个功能:

但是在执行_xhr.open() 时,我得到了与以前相同的“访问被拒绝”错误。

任何人都可以帮助我在正确的方向上调用这些 REST 服务吗?它们都以 XML 格式返回数据,这就是我使用“application/xml”的 ContentType 的原因。

任何帮助将不胜感激,即使它与我正在尝试做的方式完全不同:)。

0 投票
3 回答
1783 浏览

office-js - 如何自动运行 Office 365 Outlook 加载项

我正在为 Outlook 创建一个 Office 365 加载项。我希望我的加载项在用户阅读电子邮件时自动运行(在阅读窗格中打开它)。

我当前的版本在邮件正文顶部显示加载项名称,当我单击它时加载项运行。

我还想隐藏那个加载项按钮,然后在幕后运行它。

0 投票
1 回答
95 浏览

ms-office - 由于 Excel 桌面中缺少 Document.getFileAsync 导致认证失败

我们有一个 Excel 365 加载项,它使用 Document.getFileAsync(因为它是访问完整电子表格的唯一方法,无需用户选择它)。

此 API 在 Desktop Excel 中不可用(2013 和 2016 都没有)。

我们应该如何处理关于 Office 商店认证的 MS 投诉,即应用程序未在 Desktop Excel 中运行?

是否足以包括

在清单中?

测试表明 Excel 忽略了这个选项(至少当清单来自本地文件夹时)。

或者我们是否应该实现第二个代码路径(使用不同的 UI),这需要用户选择完整的电子表格,以便我们可以通过 getDataAsync for Desktop Excel 导出它?

如果我们嵌入在 Excel Desktop 或 Excel Online 中,如何查明?

0 投票
3 回答
4053 浏览

ms-office - 如何在 Word 和 Excel 在线版中测试 Office 加载项?

我正在使用Visual Studio中的Office JavaScript API开发任务窗格 Office 加载项。当您运行应用程序时,它会在 Office 的桌面客户端版本中运行。

Office 商店要求规定

您的 Office 外接程序必须与 Office 2013 和 Office Online 支持的操作系统、浏览器和设备完全兼容。

所以我也需要在 Office 在线版本中对其进行测试。

问题是我无法找到在 Word/Excel/Powerpoint Online 中加载应用程序并对其进行测试的方法,而且我也没有 SharePoint 设置,我可以在其中发布应用程序对其进行测试,然后将其提交到应用程序商店。

任何帮助都感激不尽。