问题标签 [javascript-api-for-office]

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 投票
1 回答
276 浏览

outlook - 如何使用 Outlook Js 插件在我的云服务器上上传 Outlook 电子邮件附件

我正在使用 vs2017 开发 Outlook javascript 插件。我创建了一个示例应用程序来从 Outlook 邮件项中查找附件。在这里,从 Exchange Server 获取附件时,它返回 200 OK。

我有自己的云应用程序,看起来像谷歌驱动器。我想使用 POST API 调用在我的云服务器上上传 Outlook 邮件附件。API 调用已成功运行。但我无法从交换服务器获取文件内容。

我在这里添加了一些示例代码。

  • 创建服务请求

    /li>

请帮助我从 Outlook 邮件中获取附件并上传到我的云服务器上。

0 投票
2 回答
1102 浏览

excel - 有没有办法从 Excel Addin 将宏插入工作表?

我搜索了文档Office Excel API,但根本找不到任何提及,它是如何实现的。

问题:

API 功能的运气或某种错误可以通过 VBA 宏轻松解决。

但是,为此,我们只有两种可能性:

  1. 手动将宏插入工作表中,这将捕获工作表上的一些事件,并且插件中的 JS 将触发该事件(此解决方案来自非常古老的论坛(如果我能找到链接,我会在此处插入))。

  2. 在插件运行时通过JS代码将宏插入工作表(context.workbook.worksheet?),甚至不能被插件执行,但在这种情况下最终用户根本不需要管理宏 - 我们可以制作宏的过程使用相同的逻辑运行更流畅(JS将宏插入工作表,更改工作表中的一些值,然后触发一些宏,然后(例如在JS中的一些超时或JS中的另一个事件之后,我们可以轻松地删除整个带有此宏的工作表))。

所以问题是,是否有可能使用 Excel API 以某种方式制作类似于解决方案 2 的东西?(某种从插件中插入/删除 VBA 代码的功能)

我将不胜感激任何帮助!

澄清问题的示例

我正在使用 JavaScript API,但不幸的是,该 API 并没有涵盖 VBA 中已经存在的全部功能(我希望如此)。让我通过一个简单的例子来解释它:

想象一个任务:

  1. 我们需要从工作簿 1 的工作表 1 中复制一些信息

  2. 然后我们需要创建一本书并将值放入新工作簿 2

  3. 然后我们需要向用户建议需要保存它(新工作簿 2)的位置。

  4. 然后我们需要保存并关闭工作簿 2。

VBA 很容易解决这个问题,但是如果 JS API - 这个问题没有完整的解决方案(没有第三方应用程序)。

您可以通过以下链接比较 API JS 和 VBA:

工作簿 JS API

工作簿 VBA API

所以我想要做的 - 是在 JavaScript 中编写实际的 VBA 宏并将这个 VBA 宏插入到工作表中以使宏可执行。

如何通过工作表上的某些值更改使宏可执行?

我发现,如果您调用select方法直接应用于单元格并Worksheet_SelectionChange在 VBA 中使用捕获选择更改 - 它非常有效。

不幸的是,将值直接设置到单元格不会触发 VBAWorksheet_change

为什么我使用 JS API

目前我已经有一个用于类似任务的 VBA 项目,但是随着项目的发展和发展——这里有一些特性,这里有一些特性,我看到插件 - 是解决关键问题的最佳解决方案 - 它更易于维护、管理、开发,推送更新、安装,它看起来会更好——因为插件只是一个简单的网站

更新 2019/09/20 - 可能的解决方法

首先,非常感谢@DecimalTurn,他使这种解决方法成为可能。在下面查看他的原始答案

我稍微修改了一下并添加了额外的 JS 脚本和 VBA 脚本来完成这个解决方案。所以:

  1. ThisWorkbook在您从 JS 到模块执行任何操作之前,需要插入以下 VBA 宏:

1.1。VBA 宏将处理我们将传输的所有 VBA 代码

1.2 VBA 宏,它将以编程方式启用Trust access to the VBA project object model。请注意:您仍然需要启用Microsoft Visual Basic for Applications Extensibility 5.3

我在此处的链接上找到了解决方案并对其进行了一些修改 - 宏创建 VBScript 并Trust access to the VBA project object model直接在寄存器中启用。我还不能处理的问题是延迟。保存和关闭现有工作簿需要延迟时间。

  1. 我根据@DecimalTurn 建议编写的第二部分在 JS 中创建工作表,然后从 VBA 捕获此事件并将整个代码包装在一个 JS 实例中:

如何使用?

您可以将其用作调用 VBAWorker 的简单实例:

您的宏可以有任何名称,因为这个 VBAWorker 会处理它并更改该名称以统一它。

请注意:因为 Excel 是异步的,我们需要等到所有的承诺都解决了!所以上面的代码必须封装在异步函数中,否则你可以捕获 Promise 回调。

我还没有经过测试,但我认为可以运行多个宏,我们可以使用与值相同的策略来编写更有用的代码。

所以这一切都在这一刻:) 真的希望随着时间的推移会有更简单的解决方案..

0 投票
1 回答
67 浏览

office-js - 在为 Outlook 撰写电子邮件时获取邮件正文更新通知

我正在开发 Outlook 插件,我需要在用户撰写邮件时获取邮件正文。我知道我们可以使用JavaScript API for Office获取正文异步调用来获取正文。但是对于长消息或带有嵌入图像的消息,它会使 Outlook 挂起几秒钟并阻止用户输入。有没有其他方法可以在不阻止用户的情况下获取完整的消息正文或仅文本更新事件。

像 Grammarly 这样的应用程序似乎会收到实时文本更新通知,但我不确定如何。

0 投票
2 回答
225 浏览

outlook - 将 Outlook 邮件内联附件与 HTML 正文中的元素相关联

当使用 Office.js 检索包含内联附件的电子邮件正文时,我们会收到如下 HTML:

标签<img>是内联图像附件的位置。

邮箱项目的附件属性列出附件元数据,如下所示:

我不能在第一个图像标签和这个附件对象之间建立任何链接。是否有其他方法可以识别每个内联附件在邮件中的位置?

0 投票
1 回答
415 浏览

office-js - 我可以以编程方式设置单元格编号格式吗?

我有一个带有自定义函数的 excel js 插件,其中一些应该返回日期,这里我有一个问题:

  • 我可以将此日期格式化并显示为字符串,但在这种情况下,我不能将此日期用作公式中的日期。或者
  • 我可以将其转换为“.ToOADate”,并将其用作日期,但它看起来像一个数字,但不是日期,直到我手动设置正确的数字格式。

所以问题来了:我可以像使用“=DATE”函数时那样以编程方式设置“短日期”数字格式吗?

0 投票
0 回答
263 浏览

visio - 使用 Visio Javascript API 和 WOPI 主机

我们开发了一个 WOPI 主机,它为 Wopi 客户端(即 Web 版 Office)提供 Word 和 Visio 文件。我们一直在努力查看是否可以在 wopi 客户端加载的 visio 文件中获取形状的“形状信息”。我们参考了有关使用 Visio Javascript API 的 Microsoft 文档:https ://docs.microsoft.com/en-us/office/dev/add-ins/reference/overview/visio-javascript-reference-overview#visio-javascript -api-reference但是,我们无法让它工作。我们在示例代码中看到,正在使用来自 SharePoint 的 visio 文件的嵌入 url。但是,当我们尝试相同的方法时,我们会收到如下错误:

(请单击下面的链接查看图片...显然我没有足够的积分来发布图片:-() SharePoint 的 Visio 文件出错

另一方面,当我们使用来自 WOPI 主机的 url 时,文件会加载到 iFrame 中,但是,我们无法获得所选形状的任何信息,并且我们会收到一个非 OfficeExtension.Error 类型的错误和错误显示为空,如下所示:

(请点击下面的链接查看图片......显然我没有足够的积分来发布图片:-()

从 WOPI 主机加载 Visio

现在我们的问题如下:

  1. 无论 visio 文件的加载方式如何,Visio Javascript API 的工作方式是否相同?(即,来自 Sharepoint 的 Visio 和来自 WOPI 主机的 Visio)?
  2. 如果问题 1 的答案是肯定的,那么示例代码不起作用的原因可能是什么。我们可以研究的任何特定领域?
  3. 如果问题 1 的答案是否定的,那么有没有办法获取由 WOPI 主机提供的 visio 文件中形状的形状信息?
0 投票
1 回答
115 浏览

office-js - 如何使用office.js查找word文档中是否存在strikeThrough / underline

我正在使用 office.js 处理 Word web-in。

我有一个要求,例如当我在 word 上加载文档时,如果用户在文档中进行任何删除线或下划线。需要检索该值是否为真/假。

截至目前,我能够检索当前选择的值。但在这里我需要整个文档的值

示例:-可能是一个字母/一个单词。基本上它应该通过在整个文档中搜索来返回结果(n 页)。

因此,它始终将值显示为“false”,尽管在 Word 上加载的总文档中标记为“strikeThrough”的单词。

有人可以帮帮我吗。

0 投票
1 回答
176 浏览

office-js - 如何根据当前 office 版本动态加载 Word API (office.js) 版本

我正在开发 word office 插件。我需要加载基于可用 Microsoft 版本的 word javascript API。示例:-如果 Office 版本是 2016,我需要加载 Word API 版本 1.1 如果是 2019,我需要加载 Word API 1.2 目前我正在检查当前的 Office 版本是否支持 Word API 1.1。

但我需要按照上述标准加载。有人可以帮帮我吗。

0 投票
2 回答
128 浏览

javascript - How do I actually add Filesystem Access API to javascript?

I've found this https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API to allow javascript to access the local file system. I feel really dumb, but I can't find anywhere that talks about how to actually add the api. I would really appreciate some help on just getting the first step.

0 投票
1 回答
136 浏览

javascript - 如何显示 console.log?

本主题与使用 javascript api 开发 excel 插件的人有关。

https://docs.microsoft.com/en-us/office/dev/add-ins/excel/excel-add-ins-ranges#get-the-selected-range

如何console.log(`The address of the selected range is "${range.address}"`);在 VSCODE 控制台或调试控制台中显示消息?