wps更新导致原有的wpsjs自定义函数不可用

12.1.0.25225版本的wps表格是不是有问题 application.caller()获取不到对象是null???

本来用range.dirty()的方式写了一些能够订阅websocket的自定义函数,这样实现用户订阅金融行情的功能,结果wps更新了之后,直接都不可用。你们就不能更新的时候保留之前能用的功能吗?真的服了

广东省
浏览 349
收藏
3
分享
3 +1
8
+1
全部评论 8
 
梅迎朝
梅迎朝

@金山办公

application.caller() 这个获取调用着的方式,在后续的wps jsapi 中会不可用,因为wpsjs 目前运行方式已经改成了异步模式,后续我们会更新文档。在更新之前,可以私下找我要文档。
   湖北省
举报
0
2
无人像你
请问目前wpsjs的rtd能在信创的机器上用吗?application.caller()这个我目前主要是需要用在websocket推数据到自定义函数中的。有其他比较好的推荐的方案吗?
· 广东省
举报
0
0
 
王子陶
王子陶

@金山办公

关键点在于Application.Caller()只能用于同步式自定义函数, 它的实际值在每一次函数调用时会修改. 而加载项的自定义函数属于异步式的, 以前 application.caller()能用只是时间上的巧合
   广东省
举报
0
1
曾崴
那有没有办法获取调用自定义函数的单元格。
· 北京
举报
0
0
 
覃欢
覃欢

@金山办公

方便提供一下您的宏代码 我们看看么
   广东省
举报
0
2
无人像你
function sleep_test() { // 获取当前调用的单元格 var rng = Application.Caller(); // 如果单元格已有批注,说明是异步回调触发的二次计算,读取批注中的结果 if (rng && rng.Comment) { var result = rng.Comment.Text(); rng.Comment.Delete(); return result; } // 首次计算:发起异步延时,10秒后写入批注并触发重算 var targetRng = rng; setTimeout(function() { if (targetRng) { targetRng.AddComment("计时结束"); targetRng.Dirty(); } }, 10000); // 立即返回占位值,单元格显示此内容直到异步完成 return "#GETTING_DATA"; }
· 广东省
举报
0
0