gpt4 book ai didi

javascript - 如何包含外部 JavaScript 以在 Excel 自定义函数中使用?

转载 作者:行者123 更新时间:2023-12-03 00:09:39 25 4
gpt4 key购买 nike

编辑:添加了简化的场景和在问题末尾重现的步骤。请注意,目标是在 Excel-Desktop 上包含外部脚本,而不是通过其他方式让简化的场景发挥作用。

<小时/>

我们都知道并且喜欢自定义函数的股票价格示例,其中使用“fetch”从源请求最新的股票价格:

https://learn.microsoft.com/en-us/office/dev/add-ins/tutorials/excel-tutorial-create-custom-functions?tabs=excel-windows#create-a-custom-function-that-requests-data-from-the-web

如果有外部 API 来获取股票价格,也可以使用吗?就像这样:

                   Stock Price Source
| <----------- API knows how to get the stock price
External Stock Price API Javascript Library
| <----------- javascript function calls here
customfunctions.js
|
Excel

或者换句话说,customfunctions JavaScript 项目可以包含外部脚本吗

<script type="text/javascript" src="https://example.com/stock-price-api.js />

我尝试在自定义函数项目的索引 html 文件中包含这样的引用,在 AllFormFactors/ExtensionPoint 下的 list 中包含“xsi:type=CustomFunctions”的脚本 URL,在“Resources/bt”下添加了脚本引用:Urls' 及其各种组合,但脚本似乎并不为自定义函数本身“所知”(索引 html 文件在加载到浏览器中时知道该脚本,所以我知道引用是正确的)。我所尝试的都是猜测,因为我没有找到任何有关使用外部 API 的文档。我正在尝试让它适用于 Windows 桌面(64 位)上的 Excel。

可以吗?

<小时/>

编辑/更新:只需将外部脚本包含在示例项目的“index.html”文件中,就可以确认它对于 Excel Online 可以正常工作。这适用于 Excel 桌面吗?

<小时/>

要重现该问题:

  1. 按照教程创建基本自定义函数项目(使用 typescript 选项)并确保它们正常工作 ( https://learn.microsoft.com/en-us/office/dev/add-ins/tutorials/excel-tutorial-create-custom-functions?tabs=excel-windows )

  2. 创建一个 javascript 文件“globalapi.js”并将其放入“dist/win32/ship”文件夹(包含自定义函数 javascript 的同一文件夹)。只需在“globalapi.js”文件中声明一个全局变量,如下所示:

    var someGlobalString = 'This is a global string';
  3. 将“globalapi.js”脚本包含在“index.html”文件中;包含的所有脚本如下:

    <script src="https://officedev.github.io/custom-functions/lib/custom-functions-runtime.js" type="text/javascript"></script>
    <script src="dist/win32/ship/globalapi.js" type="text/javascript"></script>
    <script src="dist/win32/ship/index.win32.bundle" type="text/javascript"></script>
  4. 修改“customfunctions.ts”文件中的“add”函数,以便在定义“someGlobalString”时返回不同的内容:

    declare var someGlobalString: any;

    function add(first: number, second: number): number {
    if (typeof someGlobalString !== 'undefined') {
    return 99999;
    }
    return first + second;
    }

现在将自定义函数“=CONTOSO.ADD(1,2)”输入到 Excel 的单元格中。对于 Excel Desktop(以“npm run sideload”启动),单元格中显示的结果为“3”,对于 Excel Online(加载 list 后),结果为“99999”。

如何解释差异?

最佳答案

抱歉,Windows 版本 16.0.11406.20002 上的最新 Windows 版本中存在 Web 请求错误。

https://github.com/OfficeDev/Excel-Custom-Functions/issues/115

一旦下一个版本发布到 Insiders channel ​​,我们就会更新该问题。

谢谢!

关于javascript - 如何包含外部 JavaScript 以在 Excel 自定义函数中使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54800090/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com