WPS多维表格内嵌SDK方式使用,sdk接口有bug
WPS催化剂-李伟坚
@KVP
有了一个很不错的应用场景使用WPS多维表格内嵌SDK方式来实现,深入用了下它里面的接口,发现airscript2.0的三个很重要的接口有bug,希望尽快修复。
我是在这里下载的sdk的js文件,下载的是1.1.27版本,有bug后再试1.1.19版本也是同样有bug。
第一个bug:RecordRange对象的Id属性
现在接口是一个方法函数来的,使用Id()也一样返回错误。使用纯浏览器在WPSOpenApi全局对象和使用airscript后端脚本都没有这个问题
第二个bug:RecordRange的关联字段属性设置不成功
其他非关联字段没问题,关联字段就有问题,代码如下:
//2.0接口赋值关联字段有bug
const newRecord = await targetView.RecordRange.Add();
// 设置新建记录的关联字段值
newRecord.Item(1, "@" + groupFieldName).Value = app.DBCellValue([currentRecordId]);
newRecord.Item(1, "@销售数量").Value = 888;第三个bug:RecordRange.Condition报错
同样地,使用WPSOpenApi调用是不报错的,如下:
经过测试发现,如果criteria1 不加await会报错,这个报错,和sdk的报错类似,并且sdk方式就算加了await,也同样报这个错误。
在sdk的代码如下:运行到 const res = await view.RecordRange.Condition(filters, "AND"); 报错,错误为:
// 创建筛选条件
const criteria1 = await app.Criteria("@" + firstFieldName, "Equals", [groupFieldValue]);
let targetView = null;
let targetViewName = null;
for (let j = 1; j <= viewCount; j++) {
try {
const view = await views(j);
const viewName = await view.Name;
const viewType = await view.Type;
console.log(`遍历检查主表视图 ${j}: ${viewName}, 类型: ${viewType}`);
// 检查筛选结果
const criterias = [criteria1];
const filters = [];
const filter = { Criterias: criterias, Op: "AND" };
filters.push(filter);
console.log("准备调用Condition方法...");
console.log("filters结构:", JSON.stringify(filters, null, 2));
try {
const res = await view.RecordRange.Condition(filters, "AND");
console.log(`视图 ${viewName} 筛选结果:`, res);
if (res && res.length > 0) {
targetView = view;
targetViewName = viewName;
console.log(`找到目标视图: ${viewName},筛选有结果`);
break; // 找到目标视图,跳出循环
// 将视图添加到集合中
window.mainViewNames.add(targetViewName);
console.log(`视图 ${targetViewName} 已添加到主表跳转集合`);
}
} catch (conditionError) {
console.log(`使用Condition方法筛选失败: ${conditionError.stack}`);
}
} catch (error) {
console.log(`遍历检查主表视图 ${j} 失败: ${error.message}`);
}
}总结
这两个接口都是airscript2.0非常高频使用的接口,希望官方多重视响应,快点把它修复好。隔壁某书已经形成了开发者生态,要快醒醒了,不要辜负仍然对WPS有热情的群体。