如何将外部 .js 文件导入到 Commands.js 中? [Office.js Excel]

2024-01-09

导入不同版本中的函数的正确方法是什么.js脚本写入commands.jsOffice Excel 功能区加载项的脚本?

这是我的commands.html file:

<!--
    "commands.html"
    HTML file importing the necessary scripts, especially commands.js where
    button presses are mapped.
-->

<script type="text/javascript" src="https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js"></script>
<script src="commands.js" type="module"></script> 

这是我的commands.js file

/*
  "commands.js"
  All top-level functions that are mapped to button presses on the ribbon
  are and should be in this file. Function names are the same as the IDs of 
  the buttons they are mapped to (with underscored instead of dashes).
*/

import * as tools from "./scripts/native/tools.js"

Office.initialize = function() { 
  /*
    Initialize Office function. Has to be called here.
  */
} 

console.log(tools.char_to_underscore("test32"))

这是我想导入的函数tools.js:

/*
    "tools.js"
    A collection of functions that help with certain problems.
*/

export function char_to_underscore(string) {
    /*
        Replaces a set of characters in a string with underscores.
    */
    var replacement_list = [/ /g, ".", "\\", "%", "/", "\n", "-", "(", ")", "|"];
    for (var replace in replacement_list) {
        string = string.replace(replacement_list[replace], "_");
    }
    return string;
}

这是我的项目目录:

截屏 https://i.stack.imgur.com/sZyCK.png

VSCode 似乎可以完美地找到这些文件,但是当我启动加载项时,出现以下错误:

Failed to load resource: the server responded with a status of 404 (Not Found)
logger — index.js:551 (https://localhost:3000/scripts/native/tools.js)

我几乎尝试了所有我能想到的方法,但似乎没有任何方法可以解决这个问题。我在这里错过了什么吗?对于大型功能区项目来说,将所有源代码都放在一个文件中是不可持续的。


在这里回答我自己的问题。我发现唯一能达到我想要的目的的方法如下:

  • 而不是在中映射功能区按钮commands.js文件,而不是在commands.html代码写在<script>标签如下:
<script>
    async function button_x_pressed(event) { 
    console.log(char_to_underscore("f%%%"));
    console.log(return_sample_values());
    await Excel.run(async (context) => {
        let range = context.workbook.getSelectedRange();
        range.format.fill.color = "Blue";
        await context.sync();
    });
    event.completed(); // must be called (signals to Excell that the process/event is completed)
    }
</script>
  • In commands.html,导入外部.js文件,如下:
<script type="text/javascript" src="./scripts/native/tools.js"></script>
  • The button_x_pressed然后函数可以找到char_to_underscore功能,尽管 VScode 中的自动完成功能没有。

  • 中唯一的代码commands.js如下:

Office.initialize = function() { 
  /*
    Initialize Office function. Has to be called here.
  */
} 

这很可能也可以移动到文件内<script> in commands.html但我决定将其保留在这里,以便在这个自动生成的文件中包含一些内容。

  • 我的方法归结为将按钮映射到功能commands.hmtl并在那些执行功能区按钮所需操作的函数中调用外部脚本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将外部 .js 文件导入到 Commands.js 中? [Office.js Excel] 的相关文章

随机推荐

  • 具有自动完成功能的自定义交互式 Shell

    我的任务是创建一个嵌入到 python 中的交互式 shell 这样 当从命令行调用时 它将被放入该 shell 中 谁能给我推荐一个可以做到这一点的图书馆 我需要能够创建自定义单词 操作 以便当用户键入这些单词时 我的程序可以执行我创建的
  • 在 .js 文件中执行 PHP 代码

    我试图在 js 文件中执行一些 PHP 代码 但显然不知道如何正确执行 基本上 代码是向我的页面添加一些 HTML 标签 我将其用于滑出式联系表单 然而 联系表单本身是在 Wordpress 中通过短代码完成的 因此 我试图让短代码在使表单
  • 指定内容的构建操作 - Nuget

    告诉 Nuget 包将所有 css 文件添加为嵌入式资源 即构建操作是嵌入式资源 的最简单方法是什么 我试图通过工具文件夹中的 install ps1 来完成此操作 但仍然无法到达任何地方 注意 我正在从目录结构 tools content
  • switch case 编程练习

    enum SQLErrorCode OK 0 PARTIAL OK 1 SOMEWHAT OK 2 NOT OK 3 Code 1 int error getErrorCode if error SQLErrorCode PARTIAL O
  • 我可以通过 ssh 连接到 Windows,启动命令并让它在我注销时运行吗?

    现在 Windows 10 包含了 openSSH 服务器 是否有某种方法可以启动程序并让它在我注销时运行 在 Linux 上 有 screen 和 tmux 但是 Windows 上呢 Notes 能够重新附加到进程会很好 但这不是必需的
  • 当 list-marker 是伪元素时,list-style-position 不起作用。为什么?

    我想创建彩色列表标记 ul 我做到了 但现在在所有列表中list style position属性不起作用 这是代码 ul FirmStyle list style type none ul FirmStyle li before colo
  • asp.net正则表达式验证器客户端脚本错误

    我有以下正则表达式验证器来检测输入字符串是否包含 HTML 脚本标记 如果是则导致验证错误
  • Nodejs从哪里开始?

    我已经安装了nodejs并运行了几个简单的示例 例如在端口上打开服务器并侦听该端口 但是 我仍然无法将nodejs与web开发联系起来 所以为了学习和实现nodejs 我正在考虑使用rails和nodejs制作井字游戏 这可能吗 我正在设想
  • jQuery 可拖动自定义对齐网格

    我在项目中使用 jQuery UI Draggable 我有一个复选框可以切换可拖动对象上的网格 10x10 网格 选项 但是 当网格重新打开时 网格关闭时移动的对象不会与网格关闭时未移动的对象对齐 简而言之 这些对象位于不对齐的单独网格上
  • 自定义错误页面 .Net Core Web 应用程序未显示 500 错误

    我在生产中创建了一个自定义错误页面 它将要求用户更正 HTTP 状态代码页面 而不是显示丑陋的开发人员错误页面 我现在的代码如下 启动 cs public void Configure IApplicationBuilder app IHo
  • Bookshelf.js - 如何保存多对多关系?

    我在以 多对多 关系保存数据时遇到问题 这是我的模型 var CoursePeople bookshelf Model extend tableName course people var Course bookshelf Model ex
  • python subprocess - 分离进程

    我有一个 python 脚本af audit run py 它调用另一个Python脚本request audit py通过subprocess 第二个脚本request audit py在后台调用另一个子进程并返回请求 ID 问题出在第一
  • iPhone 4 Safari 上出现奇怪的水平空白

    在多个设备上测试我的网站的移动版本时 我注意到一个非常奇怪的行为 我有一个可滚动内容 divoverflow auto 并且这在所有测试的设备上都能正常工作 除了 Safari 上的 iPhone 4 其他浏览器和设备可以正确显示它 甚至
  • 如何在scapy中多次发送一个udp数据包?

    如何在scapy中多次发送一个udp数据包 我需要多次发送有效的 udp 数据包 scapy中有什么具体的方法或功能吗 干得好 sendp p iface eth0 inter 1 count x Where p是您的数据包或数据包列表 并
  • binascii.Error:无效的 base64 编码字符串:数据字符数 (1957) 不能多于 1 4 的倍数

    我试图将字符串解码为 base64 然后将其解压缩为 zlib 但出现以下消息 binascii Error 无效的 base64 编码字符串 数据数量 字符 1957 不能多于 4 的倍数 1 Code def decode token
  • 提取 URL 的一部分

    我需要提取hello world此网址的一部分 http example com tags hello world 我对拆分 替换和连接完全感到困惑 最好的方法是什么 我会这样做 var newString oldString replac
  • 使用 Find_All 函数返回意外结果集

    我正在使用 python 3 8 2 和 bs4 BeautifulSoup 我正在尝试查找标签的所有实例 并将每个实例都列在结果集中 每行一个 但是 返回的结果集包含的行数多于网站的原始抓取内容 这是因为结果集的第一行包含该标记的所有实例
  • 角度将文件输入转换为 base64

    我正在尝试在我的 Angular 项目中解析输入到 Base64 的文件 在我的模板中 我有
  • 为什么所有递归模式同义词都被拒绝?

    LANGUAGE PatternSynonyms ViewPatterns data Quun Foo Bar Oink Quun fooey Quun gt Bool fooey Foo True fooey Oink Yum True
  • 如何将外部 .js 文件导入到 Commands.js 中? [Office.js Excel]

    导入不同版本中的函数的正确方法是什么 js脚本写入commands jsOffice Excel 功能区加载项的脚本 这是我的commands html file