在WPS中通过JavaScript宏(JSA)调用本地DeepSeek API优化文档教程

        既然我们已经在本地部署了DeepSeek,肯定希望能够利用本地的模型对自己软件开发、办公文档进行优化使用,接下来就先在WPS中通过JavaScript宏(JSA)调用本地DeepSeek API优化文档的教程奉上。

        前提:

        (1)已经部署好了DeepSeek,可以看我的文章:个人windows电脑上安装DeepSeek大模型(完整详细可用教程)_deepseek-r1-distill-qwen-1.5b-gguf-CSDN博客

        (2)已经知道了设置好了DeepSeek的API,可以看我的文章:查看和使用本地Windows系统下通过Ollama部署的DeepSeek模型的API-CSDN博客

一、创建JavaScript宏调用API

1.说明

        由于WPS的JavaScript宏环境(JSA)不支持现代浏览器中的fetch API,需用XMLHttpRequest实现网络请求。然而ActiveXObject("MSXML2.XMLHTTP")现代浏览器已经不支持了,这里也不采用。

2.WPS启用“开发工具”

        (1)启用宏功能

        打开WPS文字,点击左上角的“文件”选项。

        在下拉菜单中选择“选项”。

        在弹出的窗口中,点击“信任中心”。

        选择“信任中心”选项卡,可以选择“启用所有第三方COM加载项”。

        (2)启用开发工具

        如果在WPS的“工具”菜单中没有“开发工具”,则可以按以下方式添加,依然在“文件”->“选项”中,在“自定义功能区”中,左侧选择“主选项卡”,找到“开发工具”,添加到右侧,之后就会在选项菜单中启用“开发工具”按钮。

        (3)打开开发工具

        (4)切换到JS环境

        (5)打开WPS宏编辑器

        WPS宏编辑器界面如下:

        (6)在Project(Normal.dotm)上新建模块

        在Project(Normal.dotm)上右键,选择“插入”->“模块”。会在“代码”下出现Module1。

将以下代码复制到Module1中。

javascript完整代码示例(保存为.js文件):

function OptimizeTextWithAPI() {

  const WPS = Application;

  const doc = WPS.ActiveDocument;

  const originalText = doc.Content.Text;



  const xhr = new XMLHttpRequest();

  const url = "http://localhost:11434/api/generate";



  try {

    xhr.open("POST", url, false);

    xhr.setRequestHeader("Content-Type", "application/json");

    xhr.send(JSON.stringify({

      model: "my_model_name", // 替换为实际模型名(如 deepseek)

      prompt: originalText,

      stream: true // 保持流式传输

    }));



    if (xhr.status === 200) {

      const responseLines = xhr.responseText.split('\n').filter(line => line.trim() !== '');

      let fullText = '';

      for (const line of responseLines) {

        try {

          const parsed = JSON.parse(line);

          fullText += parsed.response || ''; // Ollama 返回的字段是 "response"

        } catch (e) {

          alert("解析失败的行:" + line);

        }

      }

      doc.Content.Text = fullText;

      alert("优化完成!");

    } else {

      alert("请求失败,状态码:" + xhr.status + "\n响应内容:" + xhr.responseText);

    }

  } catch (e) {

    alert("发生错误:" + e.message + "\n响应内容:" + xhr.responseText);

  }

}

        也可以直接运行,当看到“运行成功”后,整个当前的WPS打开的文档会发生变化。

二、添加按钮到WPS功能菜单

方法1:通过自定义功能区(推荐)

        (1)打开WPS开发者工具:

        点击顶部菜单「文件」的「选项」选项卡,选择「自定义功能区」 → 「主选项卡」。

        (2)创建新选项卡和组:

        在右侧列表中选择要添加的位置(如「开始」选项卡)。点击「新建选项卡」并命名为 “DeepSeek”,再新建组并命名为“AI优化”。

        (3)添加按钮:

        接着继续在上一步基础上,点击 「从下列位置选择命令」下拉菜单 → 选择 「宏」 类别。找到并选中你保存的 OptimizeTextWithAPI 宏。设置按钮图标和名称(如✨AI优化)。

        之后会在菜单上出现添加的按钮,名称同样可以重命名。

方法2:通过代码动态添加按钮

        在宏中插入以下javascript代码(需管理员权限):

function AddButtonToMenu() {

  const ui = Application.CommandBars.ActiveMenuBar;

  const newButton = ui.Controls.Add(

    1, // 类型:按钮

    undefined,

    undefined,

    true

  );

  newButton.Caption = "AI优化";

  newButton.OnAction = "OptimizeTextWithAPI"; // 绑定宏

  newButton.FaceId = 59; // 图标ID(可自定义)

}

// 运行一次初始化按钮

AddButtonToMenu();

三、调试与优化

1.关键配置:

        (1)启用宏安全性:进入 「文件」→「选项」→「信任中心」→「宏设置」。

        (2)网络权限:确保WPS未被防火墙阻止访问本地localhost:11434(关闭防火墙或添加白名单)。

        (3)错误处理增强:

javascript代码如下(改进前面的代码):

// 优化版:仅处理选中文本

function OptimizeSelection() {

  const selection = Application.Selection;

  if (selection.Text === "") {

    Application.Alert("请先选择要优化的文本!");

    return;

  }

  // ...调用API并替换选中部分

}

2.常见问题解决

问题现象

解决方案

宏无法运行

检查「开发工具」是否安装,确认文件后缀为.js并保存在WPS宏目录

API请求超时

在代码中增加超时设置:xhr.timeout = 10000;(10秒)

按钮不显示

检查是否导出了功能区配置,或尝试重启WPS

无法访问localhost:11434

确认DeepSeek API服务已启动,用浏览器测试http://localhost:11434/api/generate

四、最终效果

        用户将在WPS菜单栏看到自定义按钮:

        点击后自动将文档内容或选中文本发送到本地API处理并替换。

五、扩展建议

        (1)通过Promise封装异步请求(需WPS 2019+版本支持)

        (2)添加进度条提示(使用Application.StatusBar)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

搏博

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值