标签: office-js

(适用于 Office 的 JavaScript API 1.3)自定义属性 GetItemOrNull

我几天前创建了这个,其中我需要有关如何向所述文档添加自定义属性的帮助。

首先,我正在运行Word 1701(7766.2047)。


假设我有一个方法,在其中返回一个自定义属性。首先,我会检查自定义属性是否已创建。我会用一个简单的 getItemOrNullObject(key) 来完成此操作并且..

  • 如果返回 null 那么只需创建它并返回它
  • 否则退货

据我了解,我需要执行 return context.sync().then 才能使对象实际加载数据?我是否做了太多 return context.sync() 调用而没有任何作用?

Word.run(function(context) {
  var customDocProps = context.document.properties.customProperties;
  context.load(customDocProps);
  return context.sync()
    .then(function() {
      var temp = customDocProps.getItemOrNullObject("X");
      return context.sync()
        .then(function() {
          if (!temp) {
            context.document.properties.customProperties.add("X", 1234);
            temp = customDocProps.getItemOrNullObject("X");
            return context.sync()
              .then(function() {
                return temp;
              });
          } else {
            return temp;
          }
        });
    });
});
Run Code Online (Sandbox Code Playgroud)

以下代码在开始时向我抛出“ReferenceError:'Word'未定义”,但如果我调试它,它会在中断之前运行

var customDocProps = context.document.properties.customProperties; context.load(customDocProps); return context.sync().{....}


还有一个问题请教一下。假设我想更新我的自定义属性,会:

Word.run(function (context) {
        context.document.properties.customProperties.add("X", 56789);
        return context.sync();
    });
Run Code Online (Sandbox Code Playgroud)

用新值覆盖旧值?

如果您读到这里,谢谢!任何帮助表示赞赏。干杯!

javascript ms-word ms-office office-addins office-js

4
推荐指数
1
解决办法
1532
查看次数

如何在 Office 加载项命令清单中指定按钮大小

我正在处理 Office 加载项命令。如果该组只有两个按钮(见下Group 1图),则按钮如我预期的那样大。同时,如果该组有四个按钮(见下Group 2图),它会自动将其中三个按钮缩小。

在此输入图像描述

如何禁用 Office 自动缩放按钮?

office-js

4
推荐指数
1
解决办法
904
查看次数

Microsoft Word 插件 - 添加到上下文菜单

我已经构建了一个 Word 插件,现在想添加一个选项,以便在用户突出显示某个单词并右键单击它时从中调用函数。我在这里找到了有关如何修改manifest.xml 文件的文档,但它似乎没有显示如何添加到上下文菜单的完整示例,仅显示了如何添加按钮和下拉菜单。

该文档还向我指出了一个github页面显示示例,但同样缺少上下文菜单。它还指向这个视频,它似乎在 1:20 左右展示了我想要的内容,但也没有展示如何实现它。

到目前为止我有这个(添加在下面<FunctionFile>):

<ExtensionPoint xsi:type="ContextMenu">
  <OfficeMenu id="ContextMenuText">
    <Control xsi:type="Menu" id="TestMenu">
      <Label resid="ContextMenuLabel" />
      <Supertip>
          <Title resid="ContextualMenuTitle" />
          <Description resid="ContextualMenuTitleDesc" />
      </Supertip>
    </Control>         
  </OfficeMenu>
</ExtensionPoint>
Run Code Online (Sandbox Code Playgroud)

当我尝试使用此工具验证清单文件时,它告诉我缺少一个Icon元素,但我不需要上下文菜单的图像?

我想做的事情是否可能,如果可以,有人可以给我举个例子吗?


编辑:

我已经更新了我的代码以反映 @Mavi Domates 所写的内容

<ExtensionPoint xsi:type="ContextMenu">
  <OfficeMenu id="ContextMenuText">
    <Control xsi:type="Button" id="openSearchButton">
      <Label resid="openSearchButtonLabel" />
      <Supertip>
        <Title resid="openSearchButtonTitle" />
        <Description resid="openSearchButtonDescription" />
      </Supertip>
      <Icon>
        <bt:Image size="16" resid="Contoso.tpicon_16x16" />
        <bt:Image size="32" resid="Contoso.tpicon_32x32" />
        <bt:Image size="80" resid="Contoso.tpicon_80x80" />
      </Icon>
      <Action …
Run Code Online (Sandbox Code Playgroud)

ms-word office-js

4
推荐指数
1
解决办法
2224
查看次数

如果反应脚本比 3.0.0 新,则会出现错误消息“'Office'未定义 no-undef”

我正在使用 React/TypeScript 创建 Outlook 插件。当我使用 运行代码时npm run start,出现以下消息,并且我无法运行我的反应应用程序。

Failed to compile.
./src/index.tsx
  Line 9:  'Office' is not defined  no-undef

Search for the keywords to learn more about each error.
Run Code Online (Sandbox Code Playgroud)

在package.json中,如果react-script版本高于3.0.0,则会发生此错误。如果它较低(例如2.8.8),我们可以毫无错误地执行react应用程序。有人给我一些解决方法吗?

索引.tsx

import 'react-app-polyfill/ie11';
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import { AppContainer } from './components';
import { Provider } from 'react-redux';
import { store } from './store/store';

Office.onReady(() => {
  ReactDOM.render(
    <Provider store={store}>
        <AppContainer />
    </Provider>,
    document.getElementById('root')
  );
});
Run Code Online (Sandbox Code Playgroud)

包.json

  "name": "outlookApp",
  "version": "0.1.0", …
Run Code Online (Sandbox Code Playgroud)

typescript reactjs office-js outlook-web-addins

4
推荐指数
1
解决办法
2763
查看次数

带有 Excel 和 Edge Webview 的 Office-js 插件 - 如何删除缓存?

我们正在为 Excel 开发一个 office-js javascript 插件。我们正在 Windows 上的 Excel 中使用旁加载测试插件。Windows 和 Excel 更新到新版本后,Office/Excel 中的 webview 已经从 IE 变成了 Edge。现在我们需要删除 Edge 浏览器缓存,以便查看更新后的 Web 服务中的更改。

要完全重新加载旁加载的 office 插件,删除本地存储和 IE 浏览器缓存就足够了。更新到 Edge webview 后,我们无法清除浏览器缓存。

在 IE 中,我们可以这样刷新本地存储和浏览器缓存: del /q /s /f C:\Users\username\AppData\Local\Microsoft\Windows\Caches del /q /s /f C:\Users\ username\AppData\Local\Microsoft\Windows\INetCache del /q /s /f C:\Users\ username\AppData\Local\Microsoft\Office\16.0\WEF

psexec.exe -lc:\windows\system32\RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 4359

除了 psexec (sysinternals),我们还可以通过 Internet 选项对话框删除 IE 缓存。

为了删除 Edge 缓存,我们尝试 del /q /s /f C:\Users\username\AppData\Local\Packages\Microsoft.MicrosoftEdge_8wekyb3d8bbwe\AC 或通过打开 Edge 浏览器端通过 UI 删除缓存。

不幸的是,Edge 缓存似乎没有完全删除,Office 插件没有完全显示来自 Web 服务的更改内容。

webview microsoft-edge office-js

4
推荐指数
1
解决办法
1264
查看次数

Excel JavaScript API 文件系统交互、系统调用和 API 调用?

我正在使用Excel Javascript API编写 Excel 插件。

我想知道三件事:

  1. 如果插件在桌面 Excel 上运行,那么插件可以与本地计算机的文件系统交互吗?
  2. 如果该加载项在桌面 Excel 上运行,它可以进行系统调用吗?我希望移动一些文件,也许还可以调用一些已安装的软件包。
  3. 最后,该插件能否将工作表数据(甚至整个工作表)发送到外部 API?更一般地说,附加组件可以将任意数据发送到某个服务器吗?

如果您对信息很慷慨,那么了解VSTO 外接程序也可以实现这些功能中的哪些功能会很棒。

预先感谢您的帮助 - 非常感谢!

excel excel-addins office-js

4
推荐指数
1
解决办法
738
查看次数

启动(excel)插件时禁用 webview 警告

我正在学习如何为 Office 创建插件。我正在使用 vscode 和 npm 的“yo office”。虽然我还没有取得太大进展,但我已经完成了数十次编译,并在尝试/学习新事物的同时在 Excel 中查看结果,并遵循 Word 和 Excel 的在线模块。今天,第一次,当我所做的只是更改 taskpane.html 中标题中的文本时,当我在 Excel 中并单击任务窗格按钮时,我得到了

在此输入图像描述

我不想看到这段对话,尤其是我以前从未有过这样的对话。

我已经进入 launch.json,我尝试将 useWebView 设置为 false。我尝试注释掉 preLaunchTask 这样我就不会在调试模式下运行,或者添加

“无调试”:真

我尝试禁用 vscode 中的调试器模块。这些都不能阻止这种对话。我扫描了这个论坛并尝试阅读 API,但他们似乎都认为需要使用 webview 调试。我花了一些时间,但没有那么多时间,看看我是否可以“将 VS 代码附加到 webview”,但这开始超出我的想象,而不是我一开始就想做的事情。我想知道上周是否有一些更新添加/启用了此“功能”。

我很感谢您对这个新手问题的任何意见。

Update#1 我启动了一个新的插件项目来看看会发生什么。当执行“npm start”时会出现该对话框,这是前几周没有发生的事情。

Update#2 我完全重新安装了 npm.js、office.js 和 vscode。没有帮助。

Update#3 在进一步阅读调试器模块后,我进一步探索了“附加代码”。我添加了 url 行。那并没有解决问题。不确定还缺少什么,特别是因为以前不需要这些步骤。

{
      "name": "Excel Desktop (Edge Chromium)",
      "type": "edge",
      "request": "attach",
      "useWebView": "advanced",
      "port": 9229,
      "timeout": 600000,
      "url": "http://localhost/taskpane.html",
      "webRoot": "${workspaceRoot}",
      "preLaunchTask": "Debug: Excel Desktop",
      "postDebugTask": "Stop Debug"
    }
Run Code Online (Sandbox Code Playgroud)

visual-studio-code office-js npm-start

4
推荐指数
1
解决办法
1323
查看次数

有什么方法可以将 Excel 插件所做的更改添加到撤消/重做堆栈吗?

在这里,我在 Excel 加载项中使用 Office.js API。当我使用 Excel 加载项导出任何表格或信息时,撤消和重做按钮将被禁用,并且撤消/重做堆栈将被清除。

在此输入图像描述

先感谢您

excel office-addins excel-addins office-js excel-web-addins

4
推荐指数
1
解决办法
364
查看次数

是否有office.js的打字稿参考?

有没有人知道Office 2013任务窗格应用程序的TypeScript引用或声明文件?

我尝试添加:

/// <reference path="_officeintellisense.js" />
/// <reference path="office/1.0/office.js" />
Run Code Online (Sandbox Code Playgroud)

但是tsc似乎无法解释office.js(或者至少我无法理解)因为它似乎是上下文感知的,需要知道它是否在Excel,Word等中运行.

typescript office-js

3
推荐指数
1
解决办法
1040
查看次数

如何在Word加载项中打开新的Word docx文档

我已经使用Word javascript API开发了Word Add-in。我的Document .docx文件在服务器上,我需要在加载项中单击按钮后以新Word文档的形式打开该.docx文档。

请指导我如何在Word加载项中打开新文档。

谢谢。

ms-word ms-office office365 javascript-api-for-office office-js

3
推荐指数
2
解决办法
1987
查看次数