WPS多维表格内嵌SDK方式使用,sdk接口有bug

有了一个很不错的应用场景使用WPS多维表格内嵌SDK方式来实现,深入用了下它里面的接口,发现airscript2.0的三个很重要的接口有bug,希望尽快修复。

我是在这里下载的sdk的js文件,下载的是1.1.27版本,有bug后再试1.1.19版本也是同样有bug。

下载版本 | WPS WebOffice 开放平台

第一个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有热情的群体。

广东省
浏览 151
收藏
3
分享
3 +1
+1
全部评论