请求网络接口数据一般用WinHttpRequest对象,相较于VBA,JS处理JSON字符串有绝对优势,但是在WPS JS宏编辑器不能直接引用。

WPS官方文档Application.Run方法可以执行 DLL 或 XLL 中的函数,返回被调用函数返回的值,说明可以调用COM组件扩展WPS功能。

网上找了很多资料才找到解决办法:下载这位大神封装好的XLL文件添加到加载项,需要的时候用Application.Run方法调用Eval函数,参数传递JS代码字符串即可。由于WPS JS本身不支持全局对象,所以没办法用异步回调处理数据。

扩展wps js宏对com对象的操作 - fan2006 - 博客园 (cnblogs.com)


例如:利用B站视频收藏夹的接口,通过GET请求把响应的JSON字符串数据写入到Excel表格


WPS JS源码

function getVideoList()
{//设置请求信息,如果要发送数据,向options对象设置data属性即可,注意data属性数据类型必须为对象const options = {url: 'https://api.bilibili.com/x/v3/fav/resource/list?media_id=1017007045&pn=1&ps=20&order=mtime&type=0&tid=0&platform=web&jsonp=jsonp', method: 'GET' //请求方式,GET / POST 都可以, headers: {   //设置请求头'accept': 'application/json, text/plain, */*', 'origin': 'https://space.bilibili.com', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36 Edg/112.0.1722.34'}};let res = request_JSON(options) //调用request_JSON自定义函数获取数据, obj = JSON.parse(res)     //将JSON字符串解析为JS可操作的数组、对象, list = obj.data.medias    //视频信息在medias属性, arr = [['视频封面', 'up主', '视频标题', '视频简介', '视频链接']]; //声明二维数组,设置表头//数组迭代list.forEach(i => arr.push([i.cover + '@320w_200h_1c_!web-space-favlist-video.webp',i.upper.name,i.title,i.intro,'https://www.bilibili.com/video/' + i.bvid]));//写入数据let ros = arr.length;Range('A1').Resize(ros, arr[0].length).Value2 = arr;Range('A2:A' + ros).Value2 = '';//设置工作表样式Rows(1).RowHeight = 30;Rows('2:' + ros).RowHeight = 60;Columns('A:B').ColumnWidth = 15;Columns('C:E').ColumnWidth = 32;//插入视频封面图片arr.forEach((i, o) => {if (o == 0) return;let link = i[0];let top = o * 60 - 26;ActiveSheet.Shapes.AddPicture(link, true, true, 4, top, 86, 54)})}//获取JSON字符串数据,参数数据类型:string | object,封装函数便于以后多次调用
function request_JSON(opt)
{let code = ''; //JS代码字符串if (typeof(opt) == 'string') {code = `var http = new ActiveXObject('WinHttp.WinHttpRequest.5.1');http.Open('GET', '${opt}', true);http.Send();http.WaitForResponse();var data = http.ResponseText;data`} else {let header = ''; //设置请求头let data = opt.data ? JSON.stringify(opt.data) : ''; //设置post请求发送的数据if (opt.headers) {for (let i in opt.headers) {header += `http.SetRequestHeader('${i}', '${opt.headers[i]}');`}};code = `var http = new ActiveXObject('WinHttp.WinHttpRequest.5.1');http.Open('${opt.method}', '${opt.url}', true);${header}http.Send('${data}');http.WaitForResponse();var data = http.ResponseText;data`};return Application.Run('Eval', code) //调用大神封装的Eval函数,参数传递JS代码字符串}

WPS JS通过GET/POST请求网络数据接口写入到Excel表格相关推荐

  1. python爬取天气存入excel_Python接口读取json天气预报数据自动写入到Excel表格

    之前我的一篇文章: https://blog..net/zhangphil/article/details/88538112 是把从服务器接口读取到的json天气预报数据画制成折线图.现在把从json ...

  2. Httputils请求网络数据

    private void getData(final String s) { i++;         // 请求网络数据         HttpUtils utils = new HttpUtil ...

  3. 实现百度下拉菜单实例(利用jsonp跨域请求百度数据接口)

    JSONP:是JSON  with padding(填充式JSON或参数式JSON)的简写,它由两部分组成:回调函数和数据.回调函数是当响应到来时应该在页面中调用的函数,回调函数的名字一般是在请求中指 ...

  4. 使用AFNetworking请求新浪微博数据接口出错解决办法

    在使用AFNetworking请求新浪微博数据接口时会出这样的错误,如 这样的错误说明,AFNetworking无法处理这样的数据格式.所以,我们需要修改AFNetworking中的一些接收数据格式. ...

  5. 使用python爬取网站数据并写入到excel中

    文章目录 前言 一.使用python爬取网上数据并写入到excel中 例子一: 例子二: 二.工具类 总结 前言 记录一下使用python将网页上的数据写入到excel中 一.使用python爬取网上 ...

  6. 【Python练习】如何使用Pandas获取“豆瓣电影”相关数据,并生成Excel表格

    使用Python获取"豆瓣电影"相关数据,并生成Excel表格 本文使用了requests和pandas第三方库,对豆瓣电影各相关数据进行爬取,并记录至Excel表格内.但发现存在 ...

  7. python3和burpsuite组合爬取网页数据并存储在excel表格(需要登录后才能看到的大量数据)

    python3和burpsuite组合爬取网页数据并存储在excel表格 作者:ch4nge 时间:2020.12.18 前言 最近在工作中遇到一个问题:渗透进入某网站后台,发现大量的用户数据(某恶意 ...

  8. 在“https://money.cnn.com/data/markets/nasdaq/”抓取纳斯达克成分股数据并将数据表存到一个Excel表格中。

    在"https://money.cnn.com/data/markets/nasdaq/"抓取纳斯达克成分股数据并将数据表存到一个Excel表格中. import requests ...

  9. php修改excel表格数据,php修改excel表格数据-php怎么导入Excel表格到数据库,根据表格内的字段......

    php怎么导入Excel表格到数据库,根据表格内的字段... 昨天项目里有个新知需求,客户希望把一些数据能导出成为Excel表格道,刚开始用PHP原生输入Excel表格,发现效果不是很理想,于是找到一 ...

最新文章

  1. [从0到1编写服务器]准备知识
  2. 从Git存储库中删除文件而不从本地文件系统中删除它
  3. react 中子组件调用父组件的方法
  4. Windows下命令行连接mysql及导入sql文件
  5. linux中权限分离,linux多项目资源分离权限问题
  6. openssl、ssh
  7. 一位Erlang程序员的自白
  8. Linux 编译时查找错误字符,编译Linux内核时出现“fatal error: linux/netfilter/xt_dscp: No such file or directory”...
  9. python编程语言_Python编程语言的历史
  10. 2.性能测试类型或方法
  11. 基于大数据的个性化推荐系统
  12. php ob系列的函数
  13. 【SVM分类】基于改进鲸鱼算法优化最小二乘支持向量机实现数据分类matlab代码
  14. ps基本操作--渲染--光晕和光照效果
  15. 组合数及其性质和证明
  16. 关于计算机的论文英语2000字,英语论文2000字左右
  17. Openwrt Web gui LUCI 流程浅析
  18. 【Git】remote: error: cannot lock ref
  19. 使用stata临床决策曲线进行外部模型验证
  20. Oracle同一字段有数字和字母时进行排序

热门文章

  1. 深入理解 Android 组件的 exported 属性
  2. UITableViewCell的highlighted 和selected 属性1
  3. 电脑IOS模拟器用逍遥模拟器电脑上玩部分手游和苹果手机互通
  4. Pdf保存时提示:文档无法保存。文件可能是只读文件,或已被其他用户打开。请使用其他名称保存文档,或保存到其他文件夹中
  5. 微博点赞动画图标放大缩回去
  6. Windows下LDAP服务安装与使用
  7. Hive 安装 Tez
  8. 电子信息制造业解决方案,电子工业采购监管、管理、降本可控化
  9. mybatis源码分析4 - sqlSession读写数据库完全解析
  10. 计算机未来会有哪些成果,计算机应用技术未来会有什么样的发展