请上传宽度大于 1200px,高度大于 164px 的封面图片
    调整图片尺寸与位置
    滚轮可以放大缩小图片尺寸,按住图片拖动可调整位置,多余的会自动被裁剪掉
取消
张明亮(uid:479338)
简道云应用场景探索者 职业资格认证:FCP-零代码开发工程师
探索:通过插件快速部署在线答题 【随机试题、随机选项、试题批阅、智能解析】
  较早些时间,2021年5月份,曾写过一篇分享《试卷类场景这次有点儿更彻底》,功能是通过自建云函数与前端事件的混合使用,实现随机抽题、选项随机排序等,刚看了下,目前浏览量有9000多人次。 再后来,就是自建插件功能上线,一直想着等有时间了,把功能再在这里面实现一下,整整这整整那的,一直未腾出一块时间来搞定这事儿。   最近相继发过两篇内容,均是结合AI对此类场景的一次探索: 探索:AI在线出题、自动批改与解析,助力企业高效培训与学习 分享 :AI 在线试题与阅卷解析 功能搭建全过程   前些天,群里有人谈起来此场景,刚好前些时间的忙碌稍微缓了一些,干脆就在自建插件给折腾了一下,基于自建插件实现随机试题、随机选项、试题批阅,然后再结合AI实现试题解析。   > 搭建演示   >> 哔哩哔哩视频地址 https://www.bilibili.com/video/BV1st421A7CX/ >> 抖音视频地址 https://v.douyin.com/iYEnXwwk/   > 测试链接   https://tnvew1vqtq.jiandaoyun.com/f/662a141773b058d67d85514f     > 效果截图     > 插件源码   点击这里获取插件源码     1、随机出题源码:抽取试题的编号 2、试题整理源码:格式化试题内容 3、试题批阅源码:批阅当前的答题 4、智能解析源码:解析错误的答题   > 实现逻辑   >> 在线答题   核心围绕两个子表单来完成,基于调用插件或呈现内容需要添加有多处辅助字段,试题子表单会基于插件随机抽取的编号列表自动从题库匹配相关试题,同时会基于插件完成组卷呈现在试卷子表单中,答题完毕后可触发插件完成试卷批阅与智能解析。     >> 题库管理   相对以前的实现方式,本次的方式更便于日常管理,因仅为演示场景使用了流水号代替试题编号,实际应用建议应为更便于灵活调整的方式,或可尝试基于数据工厂实现动态编号。     >> 系统辅助   来源于早期子表自动新增行的实现方式,基于此场景中的辅助表,后经测试与优化后形成当前版本,可根据选项的数量,动态匹配选项序号的内容,比如3个选项时为ABC、4个选项时为ABCDE,以些类推,目前提供的模板中可支持到S。   在线答题_系统辅助.xlsx (152.37 K)     > 核心公式   本场景中,随之对功能的细化,可能会用到一些辅助字段,用来重构信息,为插件等提供相应的数据,在辅助字段中所使用较多的函数主要为JOIN()、SPLIT(),可参考 小案例浅析信息的解构与重构 。   例如:试题整理插件中请求参数“试题内容”的值格式如下:   试题分割符:### 内容分割符:*** 选项分割符:&&& 试题内容逻辑: 当前试题***试题选项***试题答案###当前试题***试题选项***试题答案 试题内容举例: 当前试题***选项一&&&选项二&&&选项三&&&选项四***选项二&&&选项三###当前试题***选项一&&&选项二&&&选项三&&&选项四***选项二&&&选项三###当前试题***选项一&&&选项二&&&选项三&&&选项四***选项二&&&选项三   >> 微分享智能助理   如果想快速了解函数公式的逻辑,也可以通过 微分享简道云智能助理 来了解,本版“智能助理”基于讯飞星火构建,可辅助于系统设计、表单设计、指标设计、插件设计、公式设计、公式解析、数据模拟、图表推荐 ,建议在电脑端使用,目前手机端内容可能会不稳定。   >>> 链接地址 https://xinghuo.xfyun.cn/botweb/2084440     >> 在线答题 表单字段   001 答题数量:数字 002 正确数量:数字 003 错误数量:数字 004 答题用时 ( 分 ):数字 005 智能解析:多行文本 006 试卷:子表单 01 试题序号:单行文本 02 当前试题:单行文本 03 试题选项:多行文本 04 选项数量:数字 05 当前答题:下拉复选框 06 试题答案:单行文本 07 批阅辅助:单行文本 08 批阅状态:单行文本 09 用户答题:单行文本 10 批阅结果:单行文本 11 解析辅助:多行文本 007 题库名称:单行文本 008 试题数量:数字 009 出题数量:数字 010 试题:子表单 01 试题序号:单行文本 02 当前试题:单行文本 03 试题选项:多行文本 04 试题答案:多行文本 05 内容辅助:单行文本 011 题库选项分割符:单行文本 012 试题分割符:单行文本 013 内容分割符:单行文本 014 选项分割符:单行文本 015 试题内容:单行文本 016 试题随机:下拉框 017 选项随机:下拉框 018 出题状态:单行文本 019 批阅状态:单行文本 020 解析状态:单行文本 021 开始时间:日期时间 022 结束时间:日期时间 023 批阅内容:单行文本 024 批阅结果:单行文本 025 角色定义:单行文本 026 解析内容:多行文本   >> 试题.内容辅助   JOIN( [ 试题.当前试题, JOIN( SPLIT( 试题.试题选项, IF( NOT(ISEMPTY(题库选项分割符)), 题库选项分割符, CHAR(10) ) ), 选项分割符 ), JOIN( SPLIT( 试题.试题答案, IF( NOT(ISEMPTY(题库选项分割符)), 题库选项分割符, CHAR(10) ) ), 选项分割符 ) ], 内容分割符 )   >> 试题内容   JOIN(试题.内容辅助,试题分割符)   >> 试卷.批阅辅助   JOIN( [JOIN( SPLIT(试卷.试题答案, ""), 选项分割符 ), JOIN( SPLIT(试卷.用户答题, ""), 选项分割符 )], 内容分割符 )   >> 批阅内容   JOIN(试卷.批阅辅助,试题分割符)   >> 试卷.批阅结果   INDEX( SPLIT(批阅结果, 试题分割符), VALUE(试卷.试题序号) )   >> 试卷.解析辅助   IFS( 试卷.批阅结果 == "错误", JOIN( [ CONCATENATE("试题序号:", CHAR(10), 试卷.试题序号), CONCATENATE("试题内容:", CHAR(10), 试卷.当前试题), CONCATENATE("试题选项:", CHAR(10), 试卷.试题选项), CONCATENATE("试题答案:", CHAR(10), 试卷.试题答案), CONCATENATE("用户答题:", CHAR(10), 试卷.当前答题) ], CHAR(10) ) )   >> 角色定义   你现在是阅卷老师,你会仅基于提供的相关试题与考生答题,进行解析,你会针对每一道试题给出考点与注意事项,你只需要回复解析部分的内容,不要回复其它任何额外的内容。   >> 解析内容   JOIN(试卷.解析辅助,CHAR(10))   > 注意事项   当前,在简道云中可将子表单视为一个独立的字段,故而在通过插件调用相关数据时,需注意是否会触发循环调用的问题,即插件的部分数据来自于子表A,插件的结果又需要直接回写到子表A中。   本场景中试题批阅结果遇到的即是此问题,最优的结果是直接回写到试卷中,尝试后发现此问题,故而最后选择先将结果回写到主表中,然后再在子表中通过公式提取相应信息。   > 更多内容   导航:云函数&前端事件&自建插件 内容集 汇总:论坛中发表过的所有帖子   承接简道云技术咨询与应用定制 承接月度技术支持服务 更多沟通交流可添加微信(zmlnow) 添加时请备注:简道云    
分享:三种方式实现【 不同时段不同规则 】计费汇总
  前些时间,群内有人提出一个“按时计费”的场景需求,概括些来说就是在不同的时段有不同的计费规则,需要根据提供的开始时间与结束时间来计算总费用。   已知,不同时段的计费规则如下: 00:00-08:00,每分钟收费0.20元; 08:00-18:00,每分钟收费0.10元; 18:00-24:00,每分钟收费0.15元。     > 方案优劣     常规来说,针对类似场景有三种解决方案:   >> 涉及到子表的函数公式   通过子表辅助来实现,整体逻辑在表单内半可视化,较容易理解,适用于每次单组数据。   >> 不涉及子表的函数公式   仅通过公式来实现,可以快速部署,可用于多组数据,复用时,涉及到多处参数修订,需注意参数配置。   >> 基于场景定制自建插件   通过自建插件来实现,可以快速部署,可用于多组数据,复用时,仅需要修订必要参数。     > 测试链接     >> 涉及到子表的函数公式 https://tnvew1vqtq.jiandaoyun.com/f/6617a6df098cd49ea460f517     >> 不涉及子表的函数公式 https://tnvew1vqtq.jiandaoyun.com/f/66150a29679d5c121a58b50e   ​ >> 基于场景定制自建插件 https://tnvew1vqtq.jiandaoyun.com/f/661cbdebd69bcc314cd8b15f   > 涉及到子表公式版   下面针对本场景,以涉及到子表的公式版为例,我们一起来看下整体的实现逻辑。     >> 如何破题   整理已知内容、相关内容、求解内容,以及相关的可使用的或调用的资源。   在本场景中,题面给出的是三个时段,实际就等同于给出了24组数据(24小时),如果放在一张表里,就是把代表开始时间与结束时间范围内的所有格子基于计费规则涂成不同的颜色,然后汇总这些格子所代表的费用。   那么,在简道云里,如何去“数格子”,字段层面较为相关的是子表,函数层面较为相关的是SPLIT()、SUM()、SUMPRODUCT()等具备数组相关计算能力的函数。   >> 如何拆题   将一个复杂的结果分拆成若干个简单的实现部件。   在本场景中,无论是开始时间还是结束时间,都是一个具体的某日某时某分,如果直观的去理解,每分钟我们是不是就需要60个格子,这样一个小时就需要3600个格子,24个小时就需要86400个格子,显然这种方式,如果去放在子表中是有难度的。   那么我们就需要,基于这个逻辑,再把具备相同特征的格子进行进一步的整合,这时可得出以下内容。   1、开时时间:可得出时、分,本小时剩余分; 2、结束时间:可得出时、分,本小时已过分; 3、开时与结束时间当天的所经历的完整小时; 4、开时与结束时间是同天还是跨天或者隔天; 5、开时与结束时间中间的所经历的完整天数。   基于以上内容,把所涉及到的数据进行汇总即可得出最终结果。   >> 如何解题   针对每一个小部件进行测试,最终组合成整体,并进行相关整体性的优化。   >>> 开始时间本小时剩余分计费   (60-MINUTE(开始时间))*IFS(HOUR(开始时间)<8,0.2,HOUR(开始时间)<18,0.1,HOUR(开始时间)>=18,0.15)   >>> 结束时间本小时已过分计费   MINUTE(结束时间)*IFS(HOUR(结束时间)<8,0.2,HOUR(结束时间)<18,0.1,HOUR(结束时间)>=18,0.15)   >>> 所经历的完整天数计费   (DATEDIF(DATE(YEAR(开始时间),MONTH(开始时间),DAY(开始时间)),DATE(YEAR(结束时间),MONTH(结束时间),DAY(结束时间)))-1)*SUM(计算.整天计费)   >>> 通过子表来完成不同场景下小时的计费   1、建立一个24行数据的子表用来代表24小时,并在子表内完成每小时的标准计费。 2、在子表内分别完成开时与结束时间当天的所经历的完整小时计费。     >>> 计费汇总公式   最后将以上部分进行整合,即可得出最终结果。 IF( VALUE(TEXT(DATE(开始时间),"yyyyMMdd")) < VALUE(TEXT(DATE(结束时间),"yyyyMMdd")), SUM( 中间整天计费, 开始天分计费, 结束天分计费, 计算.开始天计费, 计算.结束天计费 ), IF( VALUE(TEXT(DATE(开始时间),"yyyyMMddHH")) < VALUE(TEXT(DATE(结束时间),"yyyyMMddHH")), SUM( 计算.仅当天计费, 开始天分计费, 结束天分计费 ), (MINUTE(结束时间) - MINUTE(开始时间)) * IFS( HOUR(开始时间) < 8, 0.2, HOUR(开始时间) < 18, 0.1, HOUR(开始时间) >= 18, 0.15 ) ) )   > 不涉及子表公式版     以下为不涉及到子表的公式版,整体就不在赘述了,公式如下:   >> 计费规则   SPLIT(CONCATENATE("*",CONCATENATE(REPT("#0.20",8),REPT("#0.10",10),REPT("#0.15",6))),"*#")   >> 计费汇总   IFS( AND(NOT(ISEMPTY(开始时间)),NOT(ISEMPTY(结束时间)),开始时间>结束时间), "时间输入有误,请确认后重新计算 … ", VALUE(TEXT(DATE(开始时间),"yyyyMMddHH")) == VALUE(TEXT(DATE(结束时间),"yyyyMMddHH")), MID(计费规则,HOUR(开始时间)*5+1,4)*(MINUTE(结束时间)-MINUTE(开始时间)), VALUE(TEXT(DATE(开始时间),"yyyyMMdd")) == VALUE(TEXT(DATE(结束时间),"yyyyMMdd")), SUM( MID(计费规则,HOUR(开始时间)*5+1,4)*(60-MINUTE(开始时间)), MID(计费规则,HOUR(结束时间)*5+1,4)*MINUTE(结束时间), SUMPRODUCT(SPLIT(MID(计费规则,(HOUR(开始时间)+1)*5+1,(HOUR(结束时间)-HOUR(开始时间)-1)*5-1),"#"),SPLIT(CONCATENATE("60",REPT("#60",(HOUR(结束时间)-HOUR(开始时间)-2))),"#")) ), VALUE(TEXT(DATE(开始时间),"yyyyMMdd")) < VALUE(TEXT(DATE(结束时间),"yyyyMMdd")), SUM( SUMPRODUCT(SPLIT(计费规则,"#"),SPLIT(CONCATENATE("60",REPT("#60",23)),"#"))*(DATEDIF(DATE(YEAR(开始时间),MONTH(开始时间),DAY(开始时间)),DATE(YEAR(结束时间),MONTH(结束时间),DAY(结束时间)))-1), SUMPRODUCT(SPLIT(CONCATENATE(MID(计费规则,(HOUR(开始时间)+1)*5+1,5*24),"#",MID(计费规则,1,MAX(HOUR(结束时间)*5-1),0)),"#"),SPLIT(REPT("60#",HOUR(结束时间)+(24-HOUR(开始时间)-1)),"#")), MID(计费规则,HOUR(开始时间)*5+1,4)*(60-MINUTE(开始时间)), MID(计费规则,HOUR(结束时间)*5+1,4)*MINUTE(结束时间) ) )   > 自建插件版   本版本需要具备基本的自建插件部署能力   >> 插件代码   # @Time : 2024/4/15 # @Author : zmlnow # @Desc : 按时计费汇总 from datetime import datetime, timedelta def parse_fee_string(fee_string, separator): """ 根据给定的费率字符串,解析出费率字典。 Args: fee_string (str): 以分隔符分隔的费率字符串,例如 "0.20#0.20#0.10#0.15#0.10#0.10" separator (str, optional): 分隔符,默认为 '#'。 Returns: dict: 以小时数为键,费率为值的字典,例如 {0: 0.2, 1: 0.2, 2: 0.2, ..., 22: 0.1, 23: 0.15} """ # 将费率字符串按分隔符分割成费率列表 fees = fee_string.split(separator) # 初始化费率字典和当前小时数 fee_dict = {} current_hour = 0 # 遍历费率列表 for fee in fees: # 将费率转换为浮点数并添加到字典中 fee_dict = float(fee) # 更新当前小时数 current_hour += 1 return fee_dict def calculate_fee(start_time, end_time, fee_rules): """ 计算按时计费的费用。 Args: start_time (datetime): 开始时间,需提供至分钟。 end_time (datetime): 结束时间,需提供至分钟。 fee_rules (dict): 费率规则字典,键为小时数,值为对应的费率。 Returns: float: 计算出的费用,单位为元。 """ # 如果结束时间小于开始时间,则交换两者,表示跨日情况 if start_time > end_time: start_time, end_time = end_time, start_time # 初始化费用与当前时间 total_fee = 0.0 current_time = start_time.replace(minute=0, second=0, microsecond=0) # 如果开始时间的分钟不是0,则将分钟数累加到费用中 if start_time.minute > 0: total_fee += fee_rules.get(start_time.hour, 0.0) * (60 - start_time.minute) current_time += timedelta(hours=1) while current_time <= end_time: # 获取当前时间的费率 current_hour = current_time.hour fee_rate = fee_rules.get(current_hour, 0.0) # 获取下一个费率时段的开始时间 next_time = current_time + timedelta(hours=1) # 获取当前时间分钟数 if next_time > end_time: minutes_in_period = end_time.minute else: minutes_in_period = 60 # 累加当前费率时段的费用 total_fee += fee_rate * minutes_in_period # 更新当前时间为下一个费率时段的开始 current_time = next_time return total_fee # 提取所供的参数信息 fee_string = triggerConf.get('fee_string') separator = triggerConf.get('separator') start_time_str = triggerConf.get('start_time') end_time_str = triggerConf.get('end_time') # 判断分隔符是否在费率字符串中 if separator not in fee_string: raise ValueError('请确认计费规则分隔符号是否有误 …') # 判断费率个数是否为24 if len(fee_string.split(separator)) != 24: raise ValueError('请确认计费规则数量是否有误 …') # 判断是否提供开始时间与结束时间 if start_time_str is None or end_time_str is None: raise ValueError('请确认开始时间与结束时间是否有误 …') # 将开始时间与结束时间转换为时间类型 start_time = datetime.strptime(start_time_str, '%Y-%m-%dT%H:%M:%S.%fZ') end_time = datetime.strptime(end_time_str, '%Y-%m-%dT%H:%M:%S.%fZ') # 判断开始时间是否大于结束时间 if start_time > end_time: raise ValueError('请确认开始时间与结束时间是否有误 …') # 解析费率字符串为费率字典 fee_rules = parse_fee_string(fee_string, separator) # 计算总费用 fee_sum = calculate_fee(start_time, end_time, fee_rules) # 返回计算结果 return { 'fee_sum' : fee_sum }   >> 请求参数   [ { "id": "start_time", "label": "开始时间", "description": "", "fieldType": "datetime", "isHidden": false, "isEnabled": true, "isRequired": false, "fieldConf": {} }, { "id": "end_time", "label": "结束时间", "description": "", "fieldType": "datetime", "isHidden": false, "isEnabled": true, "isRequired": false, "fieldConf": {} }, { "id": "fee_string", "label": "计费规则", "description": "以分隔符分隔的24小时费率字符串", "fieldType": "text", "isHidden": false, "isEnabled": true, "isRequired": false, "fieldConf": { "isMultiLine": false }, "defaultValue": "" }, { "id": "separator", "label": "分隔符号", "description": "费率分隔符", "fieldType": "text", "isHidden": false, "isEnabled": true, "isRequired": false, "fieldConf": { "isMultiLine": false }, "defaultValue": "" } ]   >> 返回参数   [ { "label": "计费汇总", "id": "fee_sum", "fieldConf": {}, "fieldType": "any" } ]   > 注意事项   当前各方式,并为做严谨的场景测试,如果需要用于生产环境,请自行做好测试,同时欢迎于此反馈所存在的问题。   > 更多内容   导航:云函数&前端事件&自建插件 内容集 汇总:论坛中发表过的所有帖子   承接简道云技术咨询与应用定制 承接月度技术支持服务 更多沟通交流可添加微信(zmlnow) 添加时请备注:简道云    
探索:从表单数据可视化到综合性的数据分析报告
  早些年,在公司曾遇到过一个场景,因涉及到多个项目与多个岗位,面向其发布的仪表盘在设置上一直存有一些不便之处,考虑到一些特殊情况,不适合基于系统所具备的用户数据权限呈现内容,理想的状态是把仪表盘单独再复制一份,然后基于筛选等功能设置后呈现内容,最好还可以把筛选进行系统级隐藏,规避用户可自行操作。 前些天,与客户在沟通一个场景,场景类似于填写问卷以及基于过往数据形成一份基于当前用户的分析报告,此场景所遇到的问题,与前文中所描述的场景有一定共性,如何识别外部用户身份,如何呈现可视化的数据,如何呈现更为丰富的内容。 近些天,针对此场景,做了一系列的尝试与探索,目前可实现部分,基本可满足常规使用。   > 场景探索 ​ 以下是一个简单的表单数据可视化示例,仅为功能性演示,未融入实际性场景,示例中,在简道云表单中可编辑图表类型、数据、描述等信息,点击按钮后可查阅表单数据可视化页面。   >> 效果演示     >> 测试链接   https://tnvew1vqtq.jiandaoyun.com/f/660ace2805ccba0f4db7fd34   >> 功能逻辑   1、部署可视化图表服务,本场景中部署的是 ECharts ; 2、有呈现更为丰富内容需求的还可再部署 Markdown 等服务 ; 3、将表单中的数据处理成适合 ECharts 呈现的数据结构; 4、选择适合自身需求的数据传递方式,比如 GET 或 POST; 5、融合选定的服务或功能,在简道云中构建表单、插件等。   >> 注意事项   1、使用GET传递数据时,会有内容长度以及某些字符的限制; 2、现阶段,在编辑数据时,可能会有一定的复杂度。   > 场景拓展   早些年,在场景探索中,曾做过一个“价值需求测评”的应用,用户填写问卷后,可在仪表盘中,基于“查询码”筛选出本人的分析数据。 现在,结合本次实现的“表单数据可视化”功能,以及“AI”等功能,对应用功能进行了再次优化。 用户提交测评问卷后,会在流程中完成数据转换、AI解读等,基于查询编码,可在查阅表单中,通过弹窗的方式来查看个人的分析报告,当然在实际场景中,也可以基于OPENID代替查询编码。   >> 实现过程     >> 效果演示     >> 测试链接   https://tnvew1vqtq.jiandaoyun.com/f/6608ff920d69321b785e728c   > 更多内容   导航:云函数&前端事件&自建插件 内容集 汇总:论坛中发表过的所有帖子   承接简道云技术咨询与应用定制 承接月度技术支持服务 更多沟通交流可添加微信(zmlnow) 添加时请备注:简道云    
分享 :AI 在线试题与阅卷解析 功能搭建全过程
  在这前 《 AI在线出题、自动批改与解析,助力企业高效培训与学习 》的分享中,阐述了“AI 在线出题与阅卷解析”的功能基本逻辑,因某些事情需要,把整个过程又进行了一遍,本次分享的是整个的搭建过程,以及一些其它补充内容。   > 视频内容目录     > 视频内容链接     注:点击通过平台观看,效果会好一些。 >> 哔哩哔哩视频地址 https://www.bilibili.com/video/BV1GD42177Wi/ >> 抖音视频地址 https://v.douyin.com/iFnUqUjG/   > 提示词的优化   >> 在线出题提示词 ### 系统角色 ### 你现在是一个出题老师,现在需要你出一个选择题,要求为有ABCD四个选项,你的回复是一个json,json有3个key,分别是试题、选项、答案,格式为: { “question”:本次试题, “option”:本试题选项(拼接后的多行文本), “answers”:本试题答案 } 切记每一个选项前面都应该有一个大写字母,答案也应该是大写字母,你只需要回复json的内容,不要回复其它内容。 ### 用户提问 ### 本次试题类别   >> 阅卷解析提示词 ### 系统角色 ### 你现在是阅卷老师,你会仅基于提供的相关试题与考生答题,进行阅卷并给出评语与解析。你的回复是一个json格式包含两部分,格式为: { “results”:结合考生的答案,你只可以回复“正确”或“错误”。 “explanation”:你只对试题做解析,不对答案做解析。 } 切记,你的回复中只有json的内容。 ### 用户提问 ### 本次试题:拼接上相关内容 试题选项:拼接上相关内容 试题答案:拼接上相关内容 用户答题:拼接上相关内容   > 相关补充内容   >> 回复文本格式化 CONCATENATE(SPLIT( CONCATENATE(SPLIT( CONCATENATE(SPLIT( CONCATENATE(SPLIT( CONCATENATE(SPLIT( CONCATENATE(SPLIT( CONCATENATE(SPLIT( CONCATENATE(SPLIT( AI回复的文本内容," ")), CHAR(34))), CHAR(39))), "\n")), "{")), "}")), "```")), "json"))   >> 正式内容提取 SPLIT(SPLIT( 格式化后的AI回复文本 ,","),":")   >> 内容处理示例 ### AI在线出题 ### 公式:参考上文 结果: { "question": "健康饮食应该包括哪些食物?", "option": "A. 炸鸡和薯条\nB. 新鲜蔬菜和水果\nC. 碳酸饮料和糖果\nD. 腌制食品和加工肉类", "answers": "B" } ### 在线出题格式化 ### 公式:参考上文 结果: question:健康饮食应该包括哪些食物?, option:A.炸鸡和薯条B.新鲜蔬菜和水果C.碳酸饮料和糖果D.腌制食品和加工肉类, answers:B ### 本次试题 ### 公式:SPLIT(SPLIT( 在线出题格式化 ,","),":") 结果:健康饮食应该包括哪些食物? ### 试题选项 ### 公式:SPLIT(SPLIT( 在线出题格式化 ,","),":") 结果:A.炸鸡和薯条B.新鲜蔬菜和水果C.碳酸饮料和糖果D.腌制食品和加工肉类 ### 试题答案 ### 公式:SPLIT(SPLIT( 在线出题格式化 ,","),":") 结果:B   > AI平台对接   参考资料 《 来吧,为简道云接入你的AI助理,试试这个开放平台》     > 更多内容   导航:云函数&前端事件&自建插件 内容集 汇总:论坛中发表过的所有帖子   承接简道云技术咨询与应用定制 承接月度技术支持服务 更多沟通交流可添加微信(zmlnow) 添加时请备注:简道云    
闲篇:一位野生开发者的自嘲与反思
  看来又是空欢喜一场,本看着这期更新中,有“自建插件支持设置付费方案”的内容,原以为莫非插件市场要开放了,如我等这些“野生开发者”也可以开搞起来了,看来又是一场空欢喜。   若没记错,可能是在2022年年末的直播中有提到关于“非签约开发者”,原文是:平台在保障用户体验及数据安全前提下,支持非签约开发者向其他用户分享自行开发的插件,参与插件市场共创,更有机会孵化成标准功能。   一直在等,一直在等,由折腾前端事件融合云函数到自建插件,由自建插件到AI与简道云的融合,就像自我所标榜的那样“简道云应用场景探索者”。   是人就有吃喝拉撒、衣食住行,也得考虑“钱”的问题,故而后来就有了一些调整,也许,你也有所发现,后来所发的内容中多是只在说场景、说逻辑,大部分只要是涉及到源码的地方就转移到了微信公众号中,会以付费阅读的方式呈现,大体现在是100 - 200元不等。   记得曾有人找到,问某某功能可不可以给做下,我说发布的插件源码中有,你自己可以看一下,基本上步骤都有了,自己按着步骤来就行,比再让我给你做下要更为划算一些。   有时,有人找到,也有给说过,分享的帖子中逻辑基本都有了,结合下 AI ,自己多测试下也可以搞出源码。   怎么说呢,那些源码,有人付费了会很开心,好似这种方式得到了一部分人的认可,在此特别感谢一下,每一位曾付费过的“道友”,一次次给予动力,感谢每一位,曾在或正在关注着的“道友”,70余万的浏览中有着你的一次次支持,感谢官方在某些方面的给予的支持,才有了这一次次的探索与分享。   想过做定制,后来看到逐渐丰富与开放的场景方案,想想算了;想过做培训,后来看到了论坛学院中的各开放课程,想想算了;现在,更多的是在做技术咨询或场景探索。   也许有人会问,为什么不做呢,为什么就算了呢?   曾有一次,有一朋友转介绍了一个插件类的业务,晚上费了些时间,DEMO基本做完了,也做了外链供测试,测试效果没问题,后来朋友转述,那边说,决定还是找官方做!我勒个 X 。   也许由此,大体就形成了现在的思路,如果要做,就需要做一些,官方还未涉及到的或不便于涉及到的以及会存在一些壁垒的,比如入驻式的系统定制或技术咨询,毕竟这主打的就是一个“苦力”或“资历”,大概率上技术熏的时间长一些多少还是会有一点优势。   曾与一位朋友说到,我可能是简道云圈里最穷逼的一个,是得自个儿考虑一下了,毕竟后边儿没有“组织”。   今年搞啥呢,后续搞啥呢,还没完全想好,或许会再找几个长期服务的客户,或许会看看有没有可能找几个服务商做技术咨询,或许会把脑袋里的这一箩筐给正式的整理下、梳理下。   由一次“空欢喜”引发的闲篇儿,最后就以曾写的那句“百花齐放 生态共创”结尾吧。   > 更多内容   导航:云函数&前端事件&自建插件 内容集 汇总:论坛中发表过的所有帖子   承接简道云技术咨询与应用定制 承接月度技术支持服务 更多沟通交流可添加微信(zmlnow) 添加时请备注:简道云    
探索:AI在线出题、自动批改与解析,助力企业高效培训与学习
  较早些时间,2021年5月份,曾写过一篇分享《试卷类场景这次有点儿更彻底》,功能是通过自建云函数与前端事件的混合使用,实现随机抽题、选项随机排序等,刚看了下,目前浏览量有8700多人次。   再后来,就是自建插件功能上线,一直想着等有时间了,把功能再在这里面实现一下,整整这整整那的,至今尚未腾出一块时间来搞定这事儿,也许,也是因为部分功能,在这里面实现起来可能会稍有复杂一些。   现在,好了,AI 来了,干脆就基于 AI 再探索一下此类场景。   > 功能效果 最初想的效果比较简单,就是当用户答错题后,基于 AI 会给出本试题的解析,当然,通过建立题库,并在题库中加入每个试题的解析,同样可以达到此类效果,只是会多费一些人工。做着做着,就稍有些不满足了,何不让 AI 把试题也给出了,最好还能出不类别的试题,便就有了最终优化后的版本。   > 题库抽题与解析     > 在线出题与解析     > 体验链接 https://tnvew1vqtq.jiandaoyun.com/f/65f205e8f123ca2835d3696e   > 实现逻辑   这里以 AI 在线抽题与解析为例:   1、选择一个 AI 平台 需要有一个你可以对接的 AI 平台,没有的话可以参考《来吧,为简道云接入你的AI助理,试试这个开放平台》   2、优化相关提示词 这里面主要进行了两次调用 AI 平台,两次的提示词如下:   > AI 出题: 你现在是一个出题老师,现在需要你出一个选择题,要求为有 ABCD四个选项,你的回复是一个json,json有3个key,分别是 试题、选项、答案,格式为:{“question”:本次试题,“option”:将选项拼接为多行文本,“answers”:本试题答案格式为单行文本}切记选项是一个多行文本,你只需要回复json的内容,不要回复其它内容。本次的出题方向为:你的试题类别   > AI 解析: 你现在是阅卷老师,你会仅基于试题内容进行回复,以下相关试题与考生答题,需要你进行阅卷并给出评语与解析。 你的回复是一个格式化文本,包含两部分,分别是: 答题批阅:你只可以回复“对”或“错” 试题解析:你只对试题做解析,不对答案做解析。 当前试题:拼接上相关内容 试题选项:拼接上相关内容 正确答案:拼接上相关内容 考生答题:拼接上相关内容   3、构建表单呈现效果 以上两部分完成后就可以构建表单中了,本次主要是结合了字段的必填校验与显隐规则,这里就不再赘述了。   > 注意事项 提示词部分,不同的 AI 平台对提示词的反馈结果可能会有不同,需要基于反馈结果进行调试。   > 延展思考  在一线的工作中,特别是生产场景的工作中,会有各种的操作手册或流程等,另外,像日常的用气用电以及消防等,也是会有许多的注意事项,领导天天提天天关注,员工又记住了多少,除了集中的培训学习以外,不如以检代学、以考带学、以奖代学,此功能可以结合公司的社交平台比如钉钉、企业微信或者说微信公众号,举办一个,有奖问答的长期文化活动。   > 更多内容   导航:云函数&前端事件&自建插件 内容集  汇总:论坛中发表过的所有帖子   承接简道云技术咨询与应用定制 承接月度技术支持服务 更多沟通交流可添加微信(zmlnow) 添加时请备注:简道云    
探索: 智能客服 开启你的想象力 流程表单 > 数据外链 > 插件节点
  基于简道云平台的特性,过去在一些场景中,因流程表单不支持数据外链,为了实现某种功能效果,就需要涉及到智能助手以及表与表之间联动,实施起来会有一些不够方便。   2024-03-05 更新后,流程表单支持单条数据分享链接这一功能的开放,预示着一些场景终于不用再绕来绕去。   测试场景 >   基于简道云表单构建一个智能客服功能 https://tnvew1vqtq.jiandaoyun.com/f/65e6bfb2a8335309b56816ff     通过图片中的数据日志可以看到,自用户发起问题后,整个过程中全部由插件节点自动完成。   实施逻辑 >     1、通过提供外链链接用户可发起问题 2、通过插件节点调用AI编辑回复内容 3、通过插件节点回写本数据外链链接 4、通过插件节点向用户邮箱反馈回复 5、用户通过邮箱接收回复及回复评价   因插件执行时限等问题,使用AI时,有时会因为生成内容较多,出现超时等异常情况,故而在AI回复节点向下流转时会加一个判断,如果【智能回复】字段中的信息为空则会再调用一次AI,如果还为空则会转到由人工处理。   拓展场景 >   在本场景中通过邮箱进行了回复反馈,在实际场景中,可通过微信公众号模板消息、群消息、客服消息等更为直接便捷的方式。   延伸思考 >   在流程表单中,插件节点是一个极具拓展性的功能,可以通过插件完成对信息的预处理或外部处理,比如本场景中的调用AI、回写数据外链、发送邮件等。   在合理的结合显隐与数据外链的编辑功能后,有希望实现将外部用户纳入到流程处理中,甚至于实现外部指定用户多次参与流程。   更多内容 >   导航:云函数&前端事件&自建插件 内容集  汇总:论坛中发表过的所有帖子   承接简道云技术咨询与应用定制 承接月度技术支持服务 更多沟通交流可添加微信(zmlnow) 添加时请备注:简道云    
分享:来吧,为简道云接入你的AI助理,试试这个开放平台
  AI已经热了近一年,在数智化浪潮中,你或你的企业是否已在着手,是否已在考虑或已经实现一些贴合实际场景的功能,过去多数人在尝试时总会有各种的门槛,现在这个门槛将会越来越低,或许不久的将来,使用AI的能力也将会是众多能力中的一种。   在《探索:用好这个AI,写公式就是这么EASY》中介绍过一个AI大模型,它的核心特点是“超大内存”,具有20万字的上下文处理能力,春节在家时发现其开放平台已启动公测,这也就预示着可以将它更为直接的嵌入到各种场景中。   另外,Moonshot AI 开放平台的 API 与 OpenAI 兼容,使用时可以借鉴更为丰富的资料,当然于此最为重要的一点,若非特殊需求,接入简道云只需要在自建插件中创建一个后端函数,即不需要搭服务器、搭梯子之类,也不用担心缺少第三方库,设置好代码、请求参数、返回参数即可。   实现方式   接入方式 目前可接入简道云的方式有两种: 1、直接通过自建插件的后端函数调用; 2、通过自建插件的前端扩展函数调用弹窗,然后再调用。   各自优势 第一种方式的优势是更为简洁,不需要再依赖其它第三方平台即可创建; 第二种方式的优势是交互更好,可以灵活设定时限以规避可能超时问题;   实现逻辑   第一种方式的实现逻辑: 开发文档中已给出CURL调用方法,可以通过AI把其代码改写为Python等代码,即可在自建插件中直接使用,使用方式与常规的自建插件一样,这里就不再赘述。   第二种方式实现逻辑为: 1、搭建自建插件前端扩展函数,用来向弹窗传递参数以及接收弹窗回传参数; 2、搭建相关的页面,本案例中搭建了两个php页面,一个在前端显示,一个在后端调用AI模型; 3、用户在使用时,可以多次调整或获取回复,获取到合适的回复后,可以将内容回传至简道云表单中。   实现效果   后端函数     前端弹窗     开放平台   链接地址 https://www.moonshot.cn/   1、点击 “Moonshot 开放平台”进入开放平台     2、点击 “用户中心”> "API Key管理"  新建 API Key 秘钥只会在新建时显示一次,切记要保管好。     3、点击 “文档中心”了解相关资料       相关源码   点击这里获取插件源码   1、自建插件后端函数源码 2、自建插件前端扩展源码 3、前端弹窗页面相关源码 温馨提示,以上源码仅为展示相关功能实现逻辑,应用于实际场景中时请自行优化或修订。   更多内容   导航:云函数&前端事件&自建插件 内容集  汇总:论坛中发表过的所有帖子   承接简道云技术咨询与应用定制 承接月度技术支持服务 更多沟通交流可添加微信(zmlnow) 添加时请备注:简道云    
探索:用好这个AI,写公式就是这么EASY
  在简道云中,公式是一种极高频的使用场景,对于新用户来说,编写公式可能会有一定的门槛,对于老用户来说,手动编写公式有时会显得耗时耗力。   熟悉EXCEL的朋友,比较好理解,公式怎么写,函数怎么用,大体逻辑上还是相同的,但是放置到简道云具体的场景中,会发现因为每一个平台的特殊性,有些看似相像的函数在实际使用中又会有不同,甚至于使用逻辑完全不一样,这便给基于AI平台生成公式时造成了不便与障碍。   在之前分享的“当自建插件邂逅AiChat 新协同 新赋能 新纪元”中,有提到“公式设计”的概念,虽加入有审核性的提示,但实际上还是无法避免。   本次,使用的AI平台是KimiChat (月之暗面),据官方介绍:Kimi 是一个有着超大“内存”的智能助手,可以一口气读完二十万字的小说,还会上网冲浪。   基于它“内存” 足够大这一特点,就预示着在整个交互过程中,可以容纳更多的信息,可以让它更为充分地去了解“简道云” 平台,去了解函数,去了解公式规则。   如何让回复的内容更有条理、更实用,提示词是关键,需要结合AI平台不断的尝试、不断的优化,截止目前,本场景中,回复内容的结构与逻辑基本优化完毕,准确性尚需进一步优化,相关内容如下:   应用效果:     输入问题:   从身份证号中提取出生日期,以及计算当前年龄   回复内容:   一、需求复述:   您需要从身份证号码中提取出生日期,并根据当前日期计算出对应的年龄。   二、公式逻辑:   使用 MID 函数从身份证号码中提取出生日期。 使用 DATE 函数将提取的出生日期转换为日期对象。 使用 YEAR 函数从当前日期中获取年份。 使用 DATEDIF 函数计算两个日期之间的年数差,即年龄。   三、函数用法:   MID(text, start_num, num_chars):从文本中提取特定位置开始的特定数目的字符。 DATE(year, month, day):将年、月、日转换为日期对象。 YEAR(date):从日期对象中提取年份。 DATEDIF(start_date, end_date, "y"):计算两个日期之间的年数差。   四、公式原型:   出生日期 = DATE(YEAR(TODAY()), MONTH(MID(身份证号码, 7, 4)), DAY(MID(身份证号码, 11, 2)))当前年龄 = YEAR(TODAY()) - YEAR(出生日期)   五、公式示例:   假设身份证号码为 "19900101"(仅作为示例,实际身份证号码应为18位),则公式如下: 出生日期 = DATE(YEAR(TODAY()), 1, 1)当前年龄 = YEAR(TODAY()) - YEAR(出生日期)   六、公式复审:   公式使用函数 简道云函数类别 简道云函数 函数功能 复审结果 查询链接 MID 文本函数 MID 提取文本中的特定字符 是 MID DATE 日期函数 DATE 将年月日转换为日期对象 是 DATE YEAR 日期函数 YEAR 提取日期对象中的年份 是 YEAR DATEDIF 日期函数 DATEDIF 计算两个日期之间的差值 是 DATEDIF   七、注意事项:   身份证号码的格式应为18位,其中第7-14位为出生日期。 TODAY() 函数返回的是当前日期,不包含时间部分。 年龄计算假设身份证上的出生日期已满整岁。   八、温馨提示:   以上内容由AI大模型生成,请仔细甄别,仅供参考,请结合平台实际情况进行修订。   平台主页: https://kimi.moonshot.cn/     提示词:   现在我需要你充当一个简道云平台的公式设计助手,在收到我需求后,你会帮我设计公式,公式中的函数只能是简道云平台的函数,在呈现公式时优先使用代码格式。 如果你准备好了的话,请回复“明白”,然后引导用户回复自己的需求。 以下是简道云平台的基础信息 https://hc.jiandaoyun.com/doc/12319 https://hc.jiandaoyun.com/doc/12320 https://hc.jiandaoyun.com/doc/9020 https://hc.jiandaoyun.com/doc/13523 以下是简道云平台的函数信息 https://hc.jiandaoyun.com/doc/9032 https://hc.jiandaoyun.com/doc/9033 https://hc.jiandaoyun.com/doc/9034 https://hc.jiandaoyun.com/doc/9035 https://hc.jiandaoyun.com/doc/9036 https://hc.jiandaoyun.com/doc/9037 回复内容包含以下5个段落: 一、需求复述: 关于 XXX 的设计思路,需求如下: 二、公式逻辑: 公式中的函数只能是简道云平台的函数 三、函数用法: 公式中所涉及到的函数,从简道云平台中提取函数的具体用法,比如: CONCATENATE(text1,, …) 将多个文本字符串合并成一个文本字符串 四、公式原型: 结合函数用法呈现组合后的公式的原型,仅对公式使用代码格式,以便于后续使用。 五、公式示例: 描述公式原型在应用场景中具体实现方式,仅对公式使用代码格式,以便于后续使用。 六、公式复审: 审核公式原型中所使用的函数是否均为简道云平台提供的函数,是的话复审结果为“是”,不是的话复审结果为“否”,以表格的形式呈现,格式为:公式使用函数、简道云函数类别、简道云函数、函数功能、复审结果、查询链接。 七、注意事项: 八、温馨提示: 需要在结尾添加“以上内容由AI大模型生成,请仔细甄别,仅供参考,请结合平台实际情况进行修订。” 如果你准备好了的话,请回复“明白”,然后引导用户回复自己的需求。   使用方式:   1、打开平台主页 2、输入并提交提示词 3、输入并提交问题 4、等待回复内容 5、直觉性逻辑判断 6、简道云公式调试   注意事项:   因内容由AI大模型生成,有时可能会不准确,比如函数的用法、公式的语法、整体的逻辑等,请仔细甄别,请结合实际情况进行修订。   更多内容   导航:云函数&前端事件&自建插件 内容集  汇总:论坛中发表过的所有帖子   承接简道云技术咨询与应用定制 承接月度技术支持服务 更多沟通交流可添加微信(zmlnow) 添加时请备注:简道云      
分享:通过一家幼儿园浅聊数字化转型的价值
  正在服务的客户,有一家幼儿园管理机构,视频与文章上常看到她们写的一句:追随孩子做本分的教育,致力于培养独立、专注、自信的孩子。 未去过本地,现实中是什么样不知道,能看到的是,公众号近100%的家长关注度,能看到的是,她们基于简道云所开展的以及即将开展的相关服务。   她们做示范计划,可以按周期关注到每一个孩子安排了什么、已掌握了什么、未掌握什么; 她们做委托喂药,可以细化到是饭前还是饭后,可以及时性的把每个节点信息告知家长; 她们做敏感追踪,细化到每一餐食,每一个孩子是否有涉敏食材,代餐如何安排。   当然这些只是我目前涉及到的或正在参与的一些事项,其实近几年来,她们的系统已经涵盖到行政、人事、财务、后勤、教学、招生、学生等多个模块,将来或许在某一天,她们可以快速的关注到分析到每一个颗粒度的信息,难吗,好像不难,毕竟很多她们已经做出来了,简单吗?系统后台的密度像一张张叠在一起的蜘蛛网。    起初,也许仅仅只是一次不经意间的发现,通过简道云,建立一个表单,可以解决一个问题,她建了,她们用了! 然后,就是近千个日日夜夜,一个字段、一个公式、一张表单、一种关系、一套系统、一个平台,若非角色特殊,若只是一腔热血,想来不会有这种坚持;这个过程中,除了少有的几刻成就感与获得感,伴随更多的是反复、是沟通、是妥协、是取舍。 一个功能、一个系统的完成,会有一种复杂的情感,既不希望别人挑刺,又希望可以进化的更为完美,被挑刺时、反复修订时、不断妥协时会有骂人的冲动,平静后,又是敲起键盘、动起鼠标。   多年前,与同事、与领导谈到过一个观点,先用简道云这样的工具把数据管理起来,至少做到数据沉淀,以后如果真的有必要,可以去做定向开发,这里面至少有以下几个价值点:   数据价值:原始的一手数据没留真的就没了。 曾在公司,做企宣企划,有时因某个节气或活动,需要各项目提供同一主题的视频,然后剪辑为公司级的视频,刚开始时没意识到,后来就特别要求只要原片,人人都有爱美之心,但对于最终环节来说额外费心加上的“美化”反而对整体的调色与风格就造成了麻烦,所以就习惯了尽可能地保留原始素材;对于数据亦是一样,铁打的营盘流水的兵,人员调动与离职会不会造成数据的流失?当分析结果异于常规时,数据可溯源到哪个层级?当下认为没有价值的数据不代表未来没有价值,多数时候数据处理的手段限制了对数据价值的认知。   试错价值:不断迭代找到更适合自己的方式。 有完美的系统吗?大体是没有吧!正如之前有人曾分享过,公司几十万、几百万引进的系统,培训也搞过了,制度也要求了,用着用着就变成应付了事了,或者干脆不用了,又回到了最初EXCEL满天飞,想象很美好,现实很骨感,当很多人觉得不好用,当系统成为了效率的障碍,当系统的效益不明显,做为leader,你会不会睁一只眼闭一只眼,你会不会以事为先,说到底,大概率是系统跟不上公司的发展或不适应于公司当前管理,故而认为,系统不应当是“死”的,系统应是“活”的,同步于公司的发展与变革不断迭代。   思维价值:核心团队思维碰撞与迭代及跃迁。 个人认为最为宝贵的以及同样最为基础的是“思维价值”,对于刚刚在做数字化转型的组织,管理数据还在摸着石头过河,初步的系统更谈不上迭代,更多的是在梳理当下的管理和流程,以及不断的头脑风暴和思维碰撞,管理有制度、有流程尚可硬推下去,思维呢?上系统既是上管理又是转思维,照本宣科,做不到优秀,更做不到卓越,旧的思维与新的思维必然会有一个长周期的碰撞,碰撞后的结晶,碰撞后的韧性,这是高于一切的价值,就像凝聚团队的魂,像源根,像火种,可以生生不息。    对于她们,为什么自信?领先在哪里?你想要跟进,你要不要上系统?你的数据在哪里,你的思维韧性怎么样?   以前曾写过一句“系统是为了保障底线”,当她们的底线在这个刻度,当她们几乎是在围绕着孩子构建一套360°的服务方案,你凭什么优于“她们”? 或许,她们不仅仅是在做幼儿园 …   更多内容   导航:云函数&前端事件&自建插件 内容集  汇总:论坛中发表过的所有帖子   承接简道云技术咨询与应用定制 承接月度技术支持服务 更多沟通交流可添加微信(zmlnow) 添加时请备注:简道云    
探索:当自建插件邂逅AiChat 新协同 新赋能 新纪元
  在2022年末,应邀做《从云函数到自建插件》主题分享,在分享中,谈了函数、云函数、自建插件,自此对“生态共创,百花齐放”一直充满着期待,然而,我们必须意识到,简道云作为一个零代码或低代码平台,其用户群体许多都缺乏编程基础,对于这些用户来说,去理解代码的逻辑,去将已有代码片段拼装成新的功能性代码,这些可能都是一项挑战。   进入2023年3月份,以ChatGPT为代表的AI,引起了广泛的关注和热度,当前互联网上也涌现出的众多AI产品,不仅能够进行日常对话、生成文本和图片,还能在工作场景中发挥作用。比如辅助编程,2023年中本人也基于此做了大量的尝试,多数内容已整理后发布在论坛,这些发展似乎预示着编程技能不再是不可逾越,而是可以通过协同智能工具和平台来弥补。   现在,你可以将这些AI工具视为一个具备极其丰富知识储备与经验的个人助理,通过有效的协同,将会带来新的赋能,就像当初选择使用简道云,通过拖拉拽的方式就可以把理念变为工具,这是对每一位非技术背景应用者的赋能,同时,对于每一个应用者来说都是 —— 新纪元。   至此,觉得有必要把这一年来的尝试与探索,系统的总结出来,分享出来,同时也期望对感兴趣的您会有所帮助。   内容目录     视频链接   https://www.bilibili.com/video/BV1Jt4y1Z7Jf/ https://v.douyin.com/i8cyC6LK/    更多内容   导航:云函数&前端事件&自建插件 内容集  汇总:论坛中发表过的所有帖子   承接简道云技术咨询与应用定制 承接月度技术支持服务 更多沟通交流可添加微信(zmlnow) 添加时请备注:简道云      
分享:API 版 数据内链外链 表单提交后即刻自动生成数据内链与外链
  对于在简道云中提交数据后,如何自动获取数据内链与外链,之前已分享过通过邮件和九数云 版,效果上多多少少还是有点儿限制或不够直接,前些时间已测试了API版,时间原因一直没来得及整理,前些天又有人问到数据外链,干脆就整理了下,相比之前版本效果相对会更稳定、更快速一些,毕竟这次是直接通过API对数据进行更新。   这样生成数据外链更简单、更丝滑 通过“自建插件+借助邮箱”的形式,直接生成数据外链,测试中发现,如果短时间内过于频繁,可能会触发邮箱平台的一些规则,会发送不进或提取不了等。   结合九数云3分钟搞定大批量数据外链 结合“九数云”的形式,在简道云中通过“数据推送”,把数据退给九数云,在九数云中通过公式生成外链,然后通过自动回填,同步给简道云,可以支持大数据量,需要付费版。   插件名称: 数据内链外链(API 版)   功能概述:   结合开放平台 API、自建插件、智能助手,实现表单数据提交后即刻获取本条数据的内链与外链。 注:实际操作中因网络、后端数据处理等,可能会有极微小的时间差。   效果预览:     测试链接: https://tnvew1vqtq.jiandaoyun.com/f/657ee74074e410fef2e92b2d   插件源码:   点击这里获取插件源码   更多内容   导航:云函数&前端事件&自建插件 内容集  汇总:论坛中发表过的所有帖子   承接简道云技术咨询与应用定制 承接月度技术支持服务 更多沟通交流可添加微信(zmlnow) 添加时请备注:简道云      
探索:高效快捷 为你的表单加上 AI 助理
  在日常工作中,当遇到不会写日志、不会写总结,不会写方案或者有问题不知道去问谁时,除了依赖搜索引擎外,不妨试试 AiChat,比如:chatgpt、文心一言、讯飞星火、通义千问等等,曾推荐给过许多朋友,也常与朋友说,你可以把它当成一个什么都知道的 “人”,尽管去问,当然也要注意它会胡诌。   自从在某次更新中看到,自建插件中的前端扩展可以支持 $g.ui.onmessage 函数,可以接收弹窗 iframe 内发送的消息,感觉应用场景可能会比较广泛,便一直在尝试。   官方的示例看了好多遍,一直测试不通,直至近期,也许是运气,终于在一次测试中通了,便结合前段时间对 AiChat 的探索,将两者进行了融合,故而有了本次的场景分享。     功能描述   本次功能基于自建插件中的前端扩展,以弹窗的形式呈现,弹窗内容是一个自建页面,已接入讯飞星火。为何选择前端扩展弹窗?原因如下:   规避时限:后端函数会存在时限的问题,使用前端扩展弹框更加灵活可控; 反复获取:便于反复获取回复内容,可一直刷新到一个较满意的结果为止; 便捷回传:可以将获取的内容便捷地回传至表单,方便留存和进一步编辑。 效果体验 https://tnvew1vqtq.jiandaoyun.com/f/656205c0e090cf94ee4a0c09   应用场景   那么这一场景还可以如何使用呢 ?比如客服: 1、收到客户反馈的问题; 2、AiChat 拟定回复内容; 3、服务人员确定回复内容; 4、将回复内容推送至客户。 为什么不直接交给 AiChat,完全由它自动处理、自动回复呢?技术实现上没问题,主要是基于当前的回复内容,个人觉得并非完全可控,不一定每一次内容都适合,所以人工复审是有必要的。 仅是浅聊一下,场景还会有很多,不只是写写,不只是作为客服,不妨多去尝试一下,而非只是做人与工具之辩,知己知彼,百战不殆。   更多内容   导航:云函数&前端事件&自建插件 内容集  汇总:论坛中发表过的所有帖子   承接简道云技术咨询与应用定制 承接月度技术支持服务 更多沟通交流可添加微信(zmlnow) 添加时请备注:简道云    
场景:一个函数公式 一个自建插件 快速部署二维表转一维表
  前些天,群里面有人提起二维表转一维表,有人分享了论坛中的一个帖子《玩转曲线-巧用函数实现二维表格式快速录入》,具体可看原贴,作者代亚川已详述了整个细节。   本着能懒则懒的原则,就尝试着将其主要功能制作成一个插件,这样以后再有类似的场景需求,不需要添加大量的辅助公式,就可以进行快速部署。   效果预览:     功能描述:   将二维表转为一维表 基于相关字段进行汇总和排序   核心问题:   如何将二维表的信息传参至插件?   一个二维表,可以形象的看成包含物品、规格、数量的一个表格,对于插件,要考虑如何能更为通用,比如规格,是有3个、5个还是10个,这是一个不确定的量,那么如何传参更为方便且便于后续拓展?   基于简道云子表单的特性,放弃了基于行的参数制作方式,本次使用了基于列的方式,函数公式如下:   # 函数公式 JOIN(,"#") # 数据明细 ,物品1,物品2,物品3,物品1#规格1,10,3,,5#规格2,2,10,5,10#规格3,,,4,   通过公式可以看出,功能是将二维表数据,基于列用"#"拼接成数据明细,然后传参至插件,这样以后即便是要扩充规格的数量,仅需继续向面后添加 TEXT (二维表.规格*) 即可。   其它问题:   第一版测试时,基于按钮进行触发插件,每次计算都需要点一下按钮,会让人觉得不能够获得及时反馈,后来优化时改为了通过“数据明细”字段触发按钮,也就是说,每当二维表中信息有变化时就会立刻触发插件。   体验链接:   https://tnvew1vqtq.jiandaoyun.com/f/6550ccbba4c3caf782c05706     插件源码:   点击这里获取插件源码   更多内容   导航:云函数&前端事件&自建插件 内容集  汇总:论坛中发表过的所有帖子   承接简道云技术咨询与应用定制 承接月度技术支持服务 更多沟通交流可添加微信(zmlnow) 添加时请备注:简道云      
分享:新探索 令牌+弹窗 OpenID 还可以这样玩儿
  对于非系统内的外部用户,有时需要通过外链来获取信息且需要能识别到用户身份,表单内容不复杂时,通过手机操作即可,但当表单内容较为复杂时,手机上操作就会有些不方便,理想的状态是在电脑上操作,但通过电脑端打开外链又获取不到OpenID,这似乎就成为了一个悖论、成为了一个矛盾,那么这个问题应该如何有效解决呢?   场景描述:   1、读取页面为A表单,获取页面为B表单; 2、在电脑端打开A表单,点击“获取按钮”; 3、微信扫描弹窗中的二维码,打开B表单; 4、B表单自动获取OpenID等信息,然后提交; 5、A表单可读取到B表单刚提交的相关信息; 6、A表单基于获取状态,进行下步操作。   场景解析:   1、用户身份识别 2、获取相关内容 3、设定相关显隐   解决方案:   1、用户身份识别: 常规确定用户身份的方式有:用户字段、OpenID、IP、定位四种; 但在当前场景中都有其局限性,特引入另一个种方式 —— 令牌。 2、获取相关内容: 此处基于点击状态、令牌标识,字段与B表单的最新操作时间进行获取。 3、最新操作时间: IFS(NOT(ISEMPTY(点击状态)),MAPX("max",令牌标识,令牌标识,当前时间)) 4、令牌标识字段: MOD(RECNO(),令牌数量)+1 5、B表单外链扩展: 基于令牌数量,设定相应的扩展字段,注意编码与格式,扩展字段即此场景中的令牌标识 6、页面弹窗链接: https://tnvew1vqtq.jiandaoyun.com/f/652*********c2?ext=令牌标识 注:按钮状态为关闭弹窗后获取,避免获取内容为空。   效果预览:     体验链接:   https://tnvew1vqtq.jiandaoyun.com/f/652cd10123d8eee759ebfab0   插件源码:   点击这里获取插件源码   拓展资料:   分享:页面+弹窗 外链用户注册与注销 这样或许更丝滑 分享:当页面弹窗遇到动态分类 这样或许更丝滑 分享:新探索 自建插件 增强版页面弹窗 让应用场景更丰富 探索:页面弹窗还可以这样 让子弹飞一会儿 案例:【微信增强 + 扩展字段】还可以这么玩儿 分享:来吧,送你 5000个 扩展字段   更多内容   导航:云函数&前端事件&自建插件 内容集  汇总:论坛中发表过的所有帖子   承接简道云技术咨询与应用定制 承接月度技术支持服务 更多沟通交流可添加微信(zmlnow) 添加时请备注:简道云      
分享:页面+弹窗 外链用户注册与注销 这样或许更丝滑
  当使用外链场景时,为便于系统的整体构建与易用,有时会要求用户进行注册,以绑定其相应的身份信息或功能,使用简道云时我们毕竟不是基于纯代码开发来完成,常常会发生想象与现实之间的矛盾,那么如何让这一场景更接近于“想象”中的场景以及更易用呢?   场景描述:   1、功能页面为A表单,注册注销页面为B表单; 2、用户进入A页面后,会判断用户是否已注册; 3、如果未注册,则显示“注册按钮”; 4、如果已注册,则显示“昵称”、“注销按钮”与“其它”; 5、点击“注册”或“注销”按钮后会进入B表单; 6、B表单操作完毕提交后,会回到A表单; 7、A表单可以立刻判断用户状态; 8、A表单可以立刻正确显示内容。   场景解析:   1、用户身份识别 2、当前最新状态 3、获取相关内容 4、设定相关显隐   解决方案:   1、用户身份识别: 用户字段、OpenID、IP、定位四种均可,会有不同的适用场景,以实际效果与需求为准; 在A表单与B表单采用同一种获取方式。 2、当前最新状态: 需考虑以下两种状态:A表单打开时的用户状态、点击按钮调用B表单后的用户状态; 此处基于用户身份识别字段与B表单的最新操作时间进行获取。 3、最新操作时间: IFS(NOT(ISEMPTY(状态聚合)),MAPX("max",用户ID,用户ID,当前时间),NOT(ISEMPTY(用户ID)),MAPX("max",用户ID,用户ID,当前时间)) 4、状态聚合字段: CONCATENATE(注册按钮状态,注销按钮状态) 注:两个按钮状态均为关闭弹窗后获取,避免获取内容为空。   效果预览:     体验链接: https://tnvew1vqtq.jiandaoyun.com/f/6528ea4c77d1e77a76d110bd     插件源码: 点击这里获取插件源码   拓展资料:   分享:当页面弹窗遇到动态分类 这样或许更丝滑 分享:新探索 自建插件 增强版页面弹窗 让应用场景更丰富 探索:页面弹窗还可以这样 让子弹飞一会儿 案例:【微信增强 + 扩展字段】还可以这么玩儿   更多内容   导航:云函数&前端事件&自建插件 内容集  汇总:论坛中发表过的所有帖子   承接简道云技术咨询与应用定制 承接月度技术支持服务 更多沟通交流可添加微信(zmlnow) 添加时请备注:简道云      
分享:当页面弹窗遇到动态分类 这样或许更丝滑
  《新探索 自建插件 增强版页面弹窗 让应用场景更丰富》  一文发出后,产品共创群内 @动 提出这样一个场景:   场景描述:   1、填写BOM时,选择大类,然后选择小类的详细物料 2、发现小类目的物料不存在 3、点击新建弹窗,需要把当前提交表单中已经选择的大类填充到新的表单对应字段 4、弹窗填写完毕后,把小类信息回填到提交表单的对应小类字段   场景解析:   1、A表中的大类可传递至B表中大类 2、在B表中添加小类后可回传至A表对应的小类   解决方案:   1、为大类建立编号; 2、在A表中通过外链打开B表,基于外链的扩展字段定位到具体的大类; 3、在B表中添加小类信息,并添加相关的标识信息以便在A表中可以定位的到。 4、B表提交后,在A表中触发调取,通过标识等,调取到对应的小类信息。   注意要点:   需考虑多人使用场景,表单架构时要考虑到信息相对精准的调取,目前采用的方法为:当前OpenID的最新一条信息。 参考公式:MAPX("last",MAPX("max",OpenID,OpenID,时间标识),时间标识,二级类别)   效果预览:     本案例中使用 自建页面弹窗插件 与 官方页面弹窗插件 主要的效果差异为: 1、官方页面弹窗插件仅可打开链接后获取状态,故而最后仍需再手动触发下才可以调取信息; 2、自建页面弹窗插件支持关闭链接后获取状态,所以最后不需要进行手动触发便可调取信息。   体验链接:   https://tnvew1vqtq.jiandaoyun.com/f/64fc738fe0d7e1000aa30cfc     插件源码: 点击这里获取插件源码   拓展资料:   分享:新探索 自建插件 增强版页面弹窗 让应用场景更丰富 探索:页面弹窗还可以这样 让子弹飞一会儿 案例:【微信增强 + 扩展字段】还可以这么玩儿   更多内容   导航:云函数&前端事件&自建插件 内容集  汇总:论坛中发表过的所有帖子   承接简道云技术咨询与应用定制 更多沟通交流可添加微信(zmlnow) 添加时请备注:简道云      
分享:新探索 自建插件 增强版页面弹窗 让应用场景更丰富
  先来了解以下两个知识点:   据官方介绍,页面弹窗是指在表单填写时,能够在填写页面以弹窗的形式打开配置好的URL链接内容,适用于需要在表单填写时需查看其他来源内容的场景。如人事填写招聘计划时,可在表单页面通过查看仪表盘弹窗,确认各部门的当前人力需求;在签署协议时,可在签署页面中通过查看知识库文档弹窗,了解协议的具体内容。   之前页面弹窗仅支持在当前页面打开,9月1日更新后,支持在新标签页打开。   关于页面弹窗的进一步思考:   基于页面弹窗的官方介绍,可见其所侧重于的功能在于“看”。 那么在这个基础之上我们可不可以再拓展一个维度 —— 做。   场景举例:   现有表单A为信息填报、表单B为填报须知,在提交表单A时相对应的表单B的状态应为“已阅读且同意”。   场景解析:   (1)基于用户字段或微信OpenID可以定位到具体的用户; (2)为便于用户填写可以在表单A中添加一个按钮用来打开表单B; (3)用户在表单B中查阅填报须知,并将状态修订为“已阅读且同意”; (4)表单A中提取用户表单B中的状态。   当前问题:   当前官方页面弹窗插件,状态回写是打开链接后就执行,这时表单B中并没有相对应的数据,故而无法实现上述中第4步的要求。   解决方案:   自建页面弹窗插件,支持关闭链接后执行状态回写,甚至于考虑到系统执行可能会有极短的延时,也可以考虑支持关闭链接后按指定延时执行状态回写; 状态回写后,在表单A中触发相关信息调取,可以通过数据联动,也可以通过 mapx() 函数。   自建插件效果预览:     功能概述: 1、自定义页面打开位置:当前页面、新建页面; 2、自定义内容回写时间:打开弹窗后、关闭弹窗后; 3、自定义内容回写延时:默认单位为秒。   体验链接: https://tnvew1vqtq.jiandaoyun.com/f/64faea3eca5d3600089ca317     插件源码: 点击这里获取插件源码   更多内容   导航:云函数&前端事件&自建插件 内容集  汇总:论坛中发表过的所有帖子   承接简道云技术咨询与应用定制 承接月度技术支持服务 更多沟通交流可添加微信(zmlnow) 添加时请备注:简道云    
探索:页面弹窗还可以这样 让子弹飞一会儿
  先来了解一个概念,据官方介绍,页面弹窗是指在表单填写时,能够在填写页面以弹窗的形式打开配置好的URL链接内容,适用于需要在表单填写时需查看其他来源内容的场景。如人事填写招聘计划时,可在表单页面通过查看仪表盘弹窗,确认各部门的当前人力需求;在签署协议时,可在签署页面中通过查看知识库文档弹窗,了解协议的具体内容。   之前,因为接触的代码语言(Python)关系,一直以来关注云函数与自建插件(后端函数)更多一些,分享的内容也多是这些方面,实际上,自建插件还支持前端扩展(JavaScript),前面提到的页面弹窗,便属于此类。   最近,基于后端函数与前端扩展的融合便做了一些尝试。   效果测试   抖音视频无水印解析 原本是想在弹出的窗口中直接播放视频的,因系统暂不支持,目前放的是二维码。     https://tnvew1vqtq.jiandaoyun.com/f/64d906161ab7490007bed8b7     前后端融合测试 在弹出的新表单中调用本表数据信息。     https://tnvew1vqtq.jiandaoyun.com/f/64d9b68e6860b000073ec62e     插件设计 以“前后端融合测试”为例。   实现逻辑 1、将数据转存至中转表单 2、按要求打开指定新表单 3、基于标识提取相关信息   注意事项 在新表中需要通过标识来关联相关数据,因现实中可能会涉及多人并发场景,案例中用到了原表单打开次数。 案例中涉及到了自建插件与api,本次只是技术性测试,具体应用场景还是需要结合实际需求来进行设计。   更多内容   导航:云函数&前端事件&自建插件 内容集  汇总:论坛中发表过的所有帖子   承接简道云技术咨询与应用定制 更多沟通交流可添加微信(zmlnow) 添加时请备注:简道云    
分享:告别截图式的公式交流 这样做更方便
  功能简述:   老朋友可能还会记得,原本的公式编辑器,公式是可以直接复制出来,看到的是什么复制出来的也是什么,是可以直接拿来分享的。   以前的内容 CONCATENATE("同意",CHAR(10),JOIN(SPLIT(CONCATENATE(子表单.同意),"###"),"  "),CHAR(10),CHAR(10),"拒绝",CHAR(10),JOIN(SPLIT(CONCATENATE(子表单.拒绝),"###"),"  "),CHAR(10),CHAR(10))   中间官方进行升级改版,内容可复制后直接在其它字段中粘贴使用,但,这时再复制出来,粘贴分享给其他人,你会发现除了编辑器中看到的外还多了好些内容,不方便再直接拿来分享,主要是不只观,就只好发截图了。   现在的内容 {"text":"CONCATENATE(\"同意\",CHAR(10),JOIN(SPLIT(CONCATENATE(子表单.同意),\"###\"),\"  \"),CHAR(10),CHAR(10),\"拒绝\",CHAR(10),JOIN(SPLIT(CONCATENATE(子表单.拒绝),\"###\"),\"  \"),CHAR(10),CHAR(10))","marks":,"cmf":true}   今天带来一个插件功能,可以把复制出来的内容净化一下,净化至编辑器中看到的是什么,便是什么,这样就方便与其它小伙伴交流分享了。   净化后的内容 CONCATENATE("同意",CHAR(10),JOIN(SPLIT(CONCATENATE(子表单.同意),"###"),"  "),CHAR(10),CHAR(10),"拒绝",CHAR(10),JOIN(SPLIT(CONCATENATE(子表单.拒绝),"###"),"  "),CHAR(10),CHAR(10))   插件效果:   体验链接: https://tnvew1vqtq.jiandaoyun.com/f/64d239363da7f0000831d28f     插件代码: 源码-简道云公式提取.pdf (23.13 K)   更多内容:   导航:云函数&前端事件&自建插件 内容集  汇总:论坛中发表过的所有帖子   承接简道云技术咨询与应用定制 更多沟通交流可添加微信(zmlnow) 添加时请备注:简道云      
12345下一页
个人成就
内容被浏览3,221,326
加入社区3年260天
返回顶部