如何在 Scriptlab 中使用 JSONP/JQuery 调用 API 并将数据写入 excel

How to use JSONP / JQuery in Scriptlab to call API and write data to excel

提问人:Ethan 提问时间:2/14/2023 最后编辑:Ethan 更新时间:2/14/2023 访问量:56

问:

我正在尝试使用 Scriptlab 调用公共人口普查 API 并将生成的 json 响应写入 excel。

具体来说,它采用范围内的 [0][0],从中创建一个 API URL,并且应该将结果写入范围的单元格 [0][1]。

我能够成功进行 API 调用,但我无法理解如何实际将数据写入 excel。我正在尝试在 jsonp 回调函数中执行 context.sync(),但这不起作用。我不太确定为什么 - 显然我对回调函数有一些不理解的地方。这是完整的代码。

请注意,您可以尝试使用 [0][0] 中的任何地址,例如“1600 Pennsylvania Ave, Washington DC”

    $("#run").click(() => run());

      async function run() {
        await Excel.run(async (context) => {
        const range = context.workbook.getSelectedRange();
        range.load("values");
        await context.sync();


        let url = 'https://geocoding.geo.census.gov/geocoder/geographies/onelineaddress?address=' + encodeURIComponent(range.values[0][0]) + '&benchmark=2020&vintage=2010&format=json';

        $.ajax({
          url: url,
          dataType: "jsonp",
          jsonpCallback: "handleJSONP" + 0,
          success: async function (json) {
            range.values[0][1] = JSON.stringify(json);
            console.log(range.values[0][1]);
            range.values = range.values;
            await context.sync();
          }
        });
      });
    }
office-js jsonp 脚本实验室

评论

0赞 Skin 2/14/2023
你没有在脚本实验室中使用 Office 脚本,而是使用 Office JS 框架。你很困惑,那么你到底想使用哪个框架呢?
0赞 Ethan 2/14/2023
谢谢你的澄清。我已经编辑了标题和描述,以解释我正在使用 Scriptlab。坦率地说,我只是想弄清楚如何将 json 响应持久化到 excel。我对框架是不可知论的,但碰巧我是从 Scriptab 开始的,假设它会很简单。
0赞 Skin 2/14/2023
老实说,Scriptlab 只不过是一个测试工具。我认为 Office 脚本是您想要的。从这里开始,它会帮助你......learn.microsoft.com/en-us/office/dev/scripts/overview/excel......另外,回复:“调用 API”,如果您使用的是 Office 脚本,请在 PowerAutomate/LogicApps 中进行调用并将结果作为参数传递给您的脚本,它往往不那么脆弱。
2赞 Ethan 2/14/2023
非常感谢,这很有帮助。我能够使用 CORS 代理让它在 Office 脚本中工作。
1赞 Skin 2/15/2023
@FreeSoftwareServers 我说的是带有 fetch 调用的 Office 脚本,而不是 Office-JS。您正在混合这两种技术。

答: 暂无答案