调用wps表格加载项运行js代码,可以写入-运行-删除 函数

动作开发 · 466 次浏览
涛涛涛 创建于 19小时26分钟前

调用wps表格加载项运行js代码,可以写入-运行-删除 函数    仅对wps用户有效  相关动作,子程序待完善

https://getquicker.net/Sharedaction?code=77ad6c8e-5eb4-4183-6028-08ddbb5965da   动作

注意:本动作会向C:\Users\Administrator\AppData\Roaming\kingsoft\wps\jsaddons文件夹中写入wps加载项,仅对wps用户有效 ,Office软件的用户就不要下载了,不起作用的

通过wps加载项的相关函数实现
 //向js编辑器写入js宏函数
1.wps.JSIDE.SelectedJSComponent.CodeModule.AddFromString("function aa(参数){console.log(123)}")  
 //获取js编辑器已用的行数 
2.wps.JSIDE.SelectedJSComponent.CodeModule.CountOfLines
 //删除js编辑器1-10000行的js宏函数     
3.wps.JSIDE.SelectedJSComponent.CodeModule.DeleteLines(1,10000) 
//运行js宏函数
4.wps.Evaluate("aa(参数)")或wps.Run("aa","参数")

在电脑此路径中可以查看加载项文件夹  C:\Users\Administrator\AppData\Roaming\kingsoft\wps\jsaddons

 

以下是主要代码  在".\test_1.0.0\js\ribbon.js"文件中,其他的都是格式要求,想研究的看看,可以实现很多js宏不好操作的问题
/**
 * 这是一个加载项自定义函数
 * @add
 * @param {string} arg0 - 支持字符串参数
 * @param {number} arg1 - 支持数值参数
 * @returns {string} - 可以设置返回值类型
 */

function add(arg0, arg1) { 
   if (arg1 === 1) {   //写入js
          wps.JSIDE.SelectedJSComponent.CodeModule.AddFromString(arg0)
          return true
    } else if (arg1 === 0){    //删除js
          //不想在获取行数量,就给个10000吧
          //获取行数wps.JSIDE.SelectedJSComponent.CodeModule.CountOfLines
          wps.JSIDE.SelectedJSComponent.CodeModule.DeleteLines(1,10000)
          return true
    } else {   //运行js
         let aa=wps.Evaluate(arg0)
         let  bb=JSON.stringify(aa)
         return bb
    }
}


// 如果使用vite来自动生成functions.json, 那么旧不需要手动注册函数.
if (wps.AddCustomFunction !== undefined) { // 兼容旧版wps   
    wps.AddCustomFunction("w", "js", add,{
      "parameters": [
        {
          "name": "arg0",
          "description": "js代码(字符串)",
          "type": "string"
        },
        {
          "name": "arg1",
          "description": "数值(0|1|2)",
          "type": "number"
        }
      ],
      "description": "arg0->js代码(字符串),arg1->数值( 0[删除js] -- 1[写入js]  -- 2[运行js] ),返回值(字符串)",
      "result": {
        "type": "string"
      }
})
}

 

涛涛涛 最后更新于 2025/7/5

回复内容
CL 19小时15分钟前
#1

感谢分享~

回复主贴