九月下旬更新速递丨 AI赋能、技术实战与智能探索

金秋九月,下旬更新携AI发布会回放、丰富实战案例与进阶开发资源强势登场!助您深化技术理解,加速智能应用落地!

重点推荐Smartbi AIChat V4发布会圆满落幕!发布会精彩内容已完整上架,随点随看,深度回顾!共同步入智能新纪元!点击观看Smartbi AIChat V4发布会全程回放

麦学堂同步上架,加速学习

【Smartbi AIChat全新升级发布会根据不同篇章提炼上架,方便您按需定位,快速直达重点环节,高效吸收核心内容!

十分钟完整体验AIchat→ 只要10分钟时间,即可使用自己的本地数据快速体验AIChat所有功能。

一、任务持续上线

场景实战系列任务:数据处理,赢取278麦豆!通过实战任务巩固技能,真正掌握数据驱动的企业决策全流程

【BI知识闯关】数据回写填报太头疼?方案请收好!》→破解填报难题,提升数据处理效率。

【AI每日一学知识巩固】为什么Python 是目前人工智能领域最常用的编程语言》→深入解析Python在AI领域的优势,巩固编程基础。

二、实战技巧分享

数据回写填报太头疼?方案请收好!》→聚焦六大常见回写场景,拆解每类场景的实现思路,带您清晰掌握 Smartbi 数据回写的实操逻辑。

、开发技能突破

自定义计划任务案例 进一步了解自定义计划任务,从而提升自定义任务的开发效率和能力。

四、AI每日一学

【AI每日一学】为什么Python 是目前人工智能领域最常用的编程语言》→探讨Python为何能成为人工智能领域最常用的编程语言。

【AI每日一学】简单总结一下AI Agent的五个发展阶段从简单的指令响应到复杂的多智能体协作,AI Agent正逐步向着更拟人、更通用的方向演进。

五、全新素材上线

科技指标卡底座(二)→科技感视觉主题,深色科技风跃动,光线流动引爆焦点!

按需管控:业务人员导出最大行数设置在“导出规则”中,“导出动作”增加“部分导出”的选项

屏蔽“我的工作区”根据角色控制,屏蔽产品中“我的工作区”目录的功能,同时,对于该模块下的资源进行“保存”或者“另存为”,以及“移动到”时,对应的弹出框都不会显示“我的工作区”目录。

数据预警:异常数据可以落地到知识库在“预警推送”中,“推送渠道”增加“数据库”的选项,可以把异常数据存储到“知识库”的表中。

同一账号不能同时登录同一账号不能同时登录,后登录踢出先登录。


六、行业方案上线

汽车制造-财务数字化分析决策平台方案“核账型财务”向“经营型财务”升级

汽车制造-媒介平台ROI实时分析需求解决方案在激烈的市场竞争中,汽车行业对广告投放精准性要求极高,打破决策延时,敏捷响应时长,解决资源浪费,提升广告投放ROI!

为进一步提升认证服务的质量与体验,我们对认证业务进行全面优化升级。更多详情请看→Smartbi认证考试优化升级公告


麦粉社区
>
帖子详情

【已解决】如何根据数据条件禁止电子表格填报

数据分析 发表于 2024-12-2 14:30
发表于 2024-12-2 14:30:19
本帖最后由 帮助文档 于 2024-12-2 15:36 编辑

如图:如果产品颜色是Red,则不允许修改本行。


发表于 2024-12-2 14:49:45

首先,


打开电子表格编辑页面得知,


条件字段的坐标:产品颜色的坐标是F9。 


需要禁止回写的单元格:C:N列,即第3到第14列,由于代码中的序号是从0开始,其在代码中范围为2-13



服务端宏代码:


function main(spreadsheetReport) {
    //获取F9单元格中的产品颜色做判断,如果是红色,则保存到禁止修改的行列表中。
    var posList = spreadsheetReport.sheets[0].getExpandedPositions("F9");
    var cells = spreadsheetReport.workbook.worksheets.get(0).cells;
    var row_list = [];
    for (var i = 0; i < posList.length; i++) {
        var pos = posList[i];
        var value = cells.get(pos.row, pos.column).value;
        if (!value) {
            break;
        }
        if (value == 'Red') row_list.push(pos.row) //如果值为红色,则加入列表。
    };
    spreadsheetReport.customProperties.put("row_list", row_list);
}

客户端宏代码:


function main(spreadsheetReport, isAjaxRefreshCallback) {

    var row_list = spreadsheetReport.customProperties["row_list"] //服务端创建变量的值。
    var cells = spreadsheetReport.elemSheetFrame.contentWindow;

    for (let rowid of row_list) {
        for (let columnid = 2; columnid <= 13; columnid++) {
            /**
            rowid 是行号,行号由服务器端的宏生成的row_list中获取,
            columnid 是列号,列号范围根据实际表格列数修改,比如我要禁止修改当前行第C列到N列,那么列号范围就是2-13.(对应第3到14列)
            **/
            var c1 = rowid + ':' + columnid; //禁止回写单元格的坐标。初始位置[0,0]
            if (cells.writableMap[c1]) {
                cells.writableMap["bak.c1"] = cells.writableMap[c1];
                delete cells.writableMap[c1];
            }
        }
    };
}

 


注意事项:


该宏由于是服务端在数据输出之前就确定好哪些行需要被禁止回写的,所以不适用条件字段是在页面人工选择的情况。

  •   陈强
    你好,报错如下:
    填报限制服务端:Java class Lsmartbi.spreadsheetreport.CellPosition; has no public instance field or method named row.
    是因为版本不对吗
    2024-12-3 10:42| 回复
  •   帮助文档
     回复 陈强
    我知道了,是这个问答系统页面有bug,我写的代码块中的 var pos = posList[i]; 不显示[i] ,你在你的代码里补上[i].
    
    我把代码块改成普通文本展示下
    2024-12-3 11:18| 回复
  •   帮助文档
    。。。。。。。。。。。。。。。。。。。。。。。。。。。就算是答复里也不能写【i】,代码是 var pos = posList【i】;你把【】写成英文半角的[]就行。
    2024-12-3 11:20| 回复
  •   陈强
    改了,现在报错缺少;我检查了很久,实在找不到哪里问题,帮忙看看,谢谢了
    2024-12-3 11:33| 回复
  •   帮助文档
     回复 陈强
    我试了几次,复现不出来,截图的代码看上去是没问题的。好奇怪。
    2024-12-3 14:08| 回复
  • 还有4条回复,点击查看

回复

使用道具 1 举报

发表于 2024-12-2 15:39:26
膜拜大佬!学习学习

回复

使用道具 举报

发表于 2024-12-2 16:12:06
也可尝试分开展示
第1个列表用来展示red的,这个列表不允许填报 只查看
第2个列表用来展示可以修改的,这个列表正常设置回写 填报即可
这样的好处是,不需要去处理逻辑,同时用户也能清晰的知道这一个区域都是我可以编辑的,另一个区域都是不可编辑的
  •   帮助文档
    如果都是整行都不能修改,你这样是很好的。
    经常有要求别单元格不能写,但是其他单元格允许写,比如,产品颜色是Red,那么价格、库存可以改,产品类别等不可以改,如果是其他颜色都允许/不允许修改等等情况。
    2024-12-2 17:24| 回复

回复

使用道具 举报

发表于 2024-12-3 11:22:55
@小麦数据猿
文本里不能写 【i】,【】是英文状态下的[].详情见我的评论回复。请解决一下。

回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

19回帖数 0关注人数 1442浏览人数
最后回复于:2024-12-3 11:22
快速回复 返回顶部 返回列表