强烈建议WPS表格尽快支持WEBSERVICE函数

日常工作中实时天气看板、批量手机号归属地查询、中英文互译等场景下,经常需要对接API、拉取网络数据。目前Microsoft Excel支持WEBSERVICE函数,但WPS表格对该函数完全不支持,只能手动复制粘贴或找替代方案,效率大打折扣。

相信很多小伙伴都有类似痛点,今天特意来社区发帖,强烈建议WPS表格尽快原生支持WEBSERVICE函数,同时配套支持FILTERXMLENCODEURL等相关函数,补齐网络数据处理的核心能力!


一、WEBSERVICE函数有多实用?看看这些真实场景

可能有些小伙伴还不了解这个函数的价值,给大家分享几篇实用文章,看看Excel里用它能做什么:

  1. 不会用WEBSERVICE?教你用Excel对接接口数据!

文章用WEBSERVICE对接天气API,做了一个实时更新的天气看板,还能通过下拉菜单切换城市,数据自动刷新,完全不用手动复制粘贴,特别适合需要实时数据的场景。

  1. Excel Webservice函数一键获取手机号码归属地

批量查询手机号归属地不用一个个百度,用WEBSERVICE对接接口,配合文本函数就能批量提取归属地和运营商信息,几百个手机号几分钟就能搞定。

  1. 太牛了!90%的人都不知道!Excel自带翻译功能!

WEBSERVICE+FILTERXML对接翻译API,直接在表格里做中英文互译,不用打开翻译软件,下拉公式就能批量翻译,办公效率提升特别明显。

  1. 从网上抓取数据,这个Excel函数要逆天了

WEBSERVICEFILTERXML配合Excel的其他函数,能实现很多高难度的网络数据抓取和处理。


二、WPS目前的痛点:无原生支持,用户只能“曲线救国”

这么实用的函数,WPS表格目前完全不支持!之前在社区就看到有小伙伴反馈这个问题https://bbs.wps.cn/topic/15281,用WEBSERVICE函数直接报#NAME?错误,社区的朋友们回复说WPS没有这个函数,只能换Excel或者自己写代码。

作为WPS的忠实用户,真的特别希望能原生支持这个函数,不用再在两个软件之间切换,也不用麻烦地写替代代码。


三、临时解决方案:用JSA的XHR和Fetch创建自定义函数

在官方支持之前,也可以用WPS的JSA(JavaScript宏)来临时替代,这里给大家分享两个简单的示例代码,实现类似WEBSERVICE的功能:

示例1:用XHR实现GET请求(自定义函数 JSAWEBSERVICE 从Internet或Intranet上的Web服务返回数据

打开WPS表格,按Alt+F11打开宏编辑器,插入一个模块,粘贴以下代码:

function WebService(url) {
    let rng = Application.Caller();
    url = url.valueOf();

    // 如果有注释,说明数据回来了,读取并清除注释
    if (rng.Comment) {
        let txt = rng.Comment.Text();
        rng.Comment.Delete();
        return txt;
    }

    let xhr = new XMLHttpRequest();
    xhr.open("GET", url, true); // true 表示异步

    xhr.onreadystatechange = function() {
        if (xhr.readyState == 4) { // 4 = 请求完成
            let result = (xhr.status == 200) ? xhr.responseText : "Error: " + xhr.status;
            rng.AddComment(result);
            rng.Dirty(); // 触发重算
        }
    };

    xhr.send();
    return ""; // 第一次返回空,等待重算
}

保存后,在表格里用=WEBSERVICE("url")即可调用,对接天气API、手机号归属地接口都没问题。

示例2:用Fetch实现(自定义函数 JSAFETCH 在单元格中返回请求响应的异步数据

也可以用Fetch封装,更灵活,支持自定义配置

function WebService(url) {
    let rng = Application.Caller();
    url = url.valueOf();

    // 如果单元格有注释,说明异步请求已完成,读取注释内容并删除注释
    if (rng.Comment) {
        let text = rng.Comment.Text();
        rng.Comment.Delete();
        return text;
    }

    // 发起异步请求
    (async () => {
        try {
            let response = await fetch(url);
            let result = response.ok ? await response.text() : `HTTP ${response.status}`;
            rng.AddComment(result); // 将结果写入注释
            rng.Dirty(); // 标记单元格为“脏”,触发重新计算
        } catch (e) {
            rng.AddComment("Error: " + e.message);
            rng.Dirty();
        }
    })();

    // 第一次调用先返回空,等待异步触发重算
    return "";
}

四、具体落地建议:从个人刚需到企业刚需的全链路覆盖

(一)基础原生支持:优先补齐 Excel 兼容的核心能力

  1. 完全兼容 Excel 语法上线WEBSERVICE函数:仅支持 HTTP GET 请求,返回纯文本内容,最大长度限制与 Excel 一致(32767 字符),解决跨平台模板迁移的核心痛点;

  1. 同步上线配套解析与编码函数

  • FILTERXML:通过 XPath 语法从 XML/HTML 格式的响应中提取指定节点数据;

  • ENCODEURL:将中文、空格、特殊符号转换为 URL 编码格式,避免 URL 失效;

  1. 支持基础的定时刷新:可设置单元格 / 区域的刷新频率(如 1 分钟、5 分钟、1 小时),满足实时数据看板的需求。


(二)进阶企业级能力扩展:突破原生限制,适配复杂业务场景

在基础支持的基础上,建议扩展以下能力,满足企业级 API 对接、内网数据同步等复杂需求:

  1. 支持 HTTP GET 以外的请求方法:新增method可选参数,支持 POST、PUT、DELETE、PATCH 等所有主流 HTTP 方法;

  1. 支持自定义请求头:新增headers可选参数,支持自定义 User-Agent、Authorization、Cookie、Content-Type 等所有 HTTP 请求头;

  1. 支持身份认证:内置 API 密钥、Bearer Token、Basic Auth(账号密码)等主流身份认证方式,无需用户手动拼接请求头;

  1. 支持自定义超时时间:新增timeout可选参数,支持用户根据接口响应速度设置超时时间,避免表格长时间无响应;

  1. 支持 FTP、FILE 等非 HTTP/HTTPS 协议:扩展协议支持范围,可直接从 FTP 服务器、本地文件系统读取数据,满足内网数据同步的需求;

  1. 支持批量请求与异步回调:新增批量请求函数,支持同时发起多个 HTTP 请求,异步返回结果,大幅提升批量数据处理的效率。

写在最后:呼吁官方补齐网络数据处理能力

WEBSERVICE+FILTERXML+ENCODEURL这一套函数,是处理网络数据、API对接的核心能力——不管是个人用户做实时看板、批量查询,还是企业用户对接内部系统,都特别实用。

现在WPS在AI能力、云协作方面都做得很好,但网络数据处理这块确实是个短板。希望产品团队能重视这个需求,尽快让WPS表格原生支持这些函数,提升WPS的竞争力,让我们这些忠实用户不用再换软件!

北京
浏览 816
收藏
7
分享
7 +1
5
+1
全部评论 5
 
龚常章
你想多了吧,这个接口微软是不会开放的。
· 四川省
1
回复
快乐小子新
这个又不是Power Query的HTTP请求函数,不需要太复杂的功能,类似JSA的XHR和Fetch就行。
· 北京
1
回复
 
赵二
赵二 Lv.2 潜力创作者

Lv.2潜力创作者

WPS 缺乏网络数据抓取爬虫功能。
· 辽宁省
2
回复
 
497128657
另外我还手搓了一个 自定义函数 JSAFETCH 在单元格中返回请求响应的异步数据 https://bbs.wps.cn/topic/80111
· 云南省
1
回复
 
497128657
我自己手搓了一个,勉强用着。 自定义函数 JSAWEBSERVICE 从Internet或Intranet上的Web服务返回数据 https://bbs.wps.cn/topic/17091
· 云南省
1
回复