分享:解决贪吃蛇般巨长的公式【 简道云函数公式美化助手 】来了

简道云应用场景探索者

 

长期使用着简道云的亲们,你遇到过这种情况吗?当一个函数公式要去微调,看着贪吃蛇般巨长的公式,迎面而来一种无法下手的挫败感。

 

当然一个问题的形成,有其环境因素,也有其历史原因,可现在需要痛苦的是当下的自己,不是吗 ?

 

可能是继承自EXCEL的函数公式习惯,在简道云中编辑函数公式时,大多数是不太考虑层次结构,更别说注释及文档等,最终所呈现的就像是一条贪吃蛇。

 

在编辑函数公式的当时,因其是一步一步的推敲及测试所得,是一种正序的逻辑,所以当时做任何微调都不太算额外耗费精力,但当一个较长时期之后,这个问题可能就会体现出来。

 

也许以前,这种事儿无解,现在好在有了AI,借助AI工具可以帮助我们去重新理解公式的含义。

 

基于AI ,曾也发专贴 👉《用好这个AI,写公式就是这么EASY分享过通过 KIMI 写简道云函数公式的方式,当然,现在也可以通过 👉 微分享智能助理 来生成公式或解析公式,单以生成公式这一场景来说,如果自己愿意尝试,KIMI 的内容可能会更为精确些,另外,讯飞星火 近期已发新版,也可以通过分享的提示词去尝试一下。

 

下即将开始本期内容,围绕“简道云函数公式美化助手”展开,一则,了解一下其内在的逻辑,若以后有用到,可能会略为有益,再则,分享一下本次解构问题的逻辑。

 

> 简道云函数公式美化助手

 

 

>> 功能介绍

 

本功能致力于提高您的工作效率。可重新格式化简道云平台上的函数公式,使公式的层次结构更加清晰,从而提高其可读性和维护性。

 

>> 提供结果

 

1. 原始公式: 📝 展示从函数公式中提取的原始公式部分,保持其原始状态。

2. 美化公式: 🎨 提供仅经过格式美化的公式,以增强视觉呈现效果。

3. 完整公式: 📋 提供可以直接粘贴到函数公式编辑框中的公式,它将自动匹配原绑定的字段,简化操作流程。

 

> 使用示例

 

 

> 测试链接

 

👉 点击这里直接进入函数公式美化助手

 

> 实现逻辑

 

>> 参考示例

 

 

以 “当前进度”公式为例 进行后续内容   👉 点击这里查阅表单

 

1. 原始公式

 

CONCATENATE(CONCATENATE(REPT(已完成标识,INT(当前值/目标值*10)),REPT(未完成标识,INT((1-当前值/目标值)*10)))," - ",TEXT(当前值/目标值,"#%"))

 

2. 美化公式

 

CONCATENATE(
    CONCATENATE(
        REPT(
            已完成标识,INT(
                当前值/目标值*10
            )
        )
        ,REPT(
            未完成标识,INT((
                    1-当前值/目标值
                )
                *10
            )
        )
    )
    ," - ",TEXT(
        当前值/目标值,"#%"
    )
)

 

>> 结构解析

 

 

在公式编辑中 点击 复制后 可获得以下信息

 

{"text":"CONCATENATE(CONCATENATE(REPT(已完成标识,INT(当前值/目标值*10)),REPT(未完成标识,INT((1-当前值/目标值)*10))),\" - \",TEXT(当前值/目标值,\"#%\"))","marks":[{"from":{"line":0,"ch":29},"to":{"line":0,"ch":34},"field":"_widget_1705037332585","entry":""},{"from":{"line":0,"ch":39},"to":{"line":0,"ch":42},"field":"_widget_1705037332584","entry":""},{"from":{"line":0,"ch":43},"to":{"line":0,"ch":46},"field":"_widget_1705037332583","entry":""},{"from":{"line":0,"ch":57},"to":{"line":0,"ch":62},"field":"_widget_1705038272137","entry":""},{"from":{"line":0,"ch":70},"to":{"line":0,"ch":73},"field":"_widget_1705037332584","entry":""},{"from":{"line":0,"ch":74},"to":{"line":0,"ch":77},"field":"_widget_1705037332583","entry":""},{"from":{"line":0,"ch":96},"to":{"line":0,"ch":99},"field":"_widget_1705037332584","entry":""},{"from":{"line":0,"ch":100},"to":{"line":0,"ch":103},"field":"_widget_1705037332583","entry":""}],"cmf":true}

 

使用 JSON 格式化工具解析后可获得以下信息

 

{
	"text": "CONCATENATE(CONCATENATE(REPT(已完成标识,INT(当前值/目标值*10)),REPT(未完成标识,INT((1-当前值/目标值)*10))),\" - \",TEXT(当前值/目标值,\"#%\"))",
	"marks": [{
		"from": {
			"line": 0,
			"ch": 29
		},
		"to": {
			"line": 0,
			"ch": 34
		},
		"field": "_widget_1705037332585",
		"entry": ""
	},
	{
		"from": {
			"line": 0,
			"ch": 39
		},
		"to": {
			"line": 0,
			"ch": 42
		},
		"field": "_widget_1705037332584",
		"entry": ""
	},
	{
		"from": {
			"line": 0,
			"ch": 43
		},
		"to": {
			"line": 0,
			"ch": 46
		},
		"field": "_widget_1705037332583",
		"entry": ""
	},
	{
		"from": {
			"line": 0,
			"ch": 57
		},
		"to": {
			"line": 0,
			"ch": 62
		},
		"field": "_widget_1705038272137",
		"entry": ""
	},
	{
		"from": {
			"line": 0,
			"ch": 70
		},
		"to": {
			"line": 0,
			"ch": 73
		},
		"field": "_widget_1705037332584",
		"entry": ""
	},
	{
		"from": {
			"line": 0,
			"ch": 74
		},
		"to": {
			"line": 0,
			"ch": 77
		},
		"field": "_widget_1705037332583",
		"entry": ""
	},
	{
		"from": {
			"line": 0,
			"ch": 96
		},
		"to": {
			"line": 0,
			"ch": 99
		},
		"field": "_widget_1705037332584",
		"entry": ""
	},
	{
		"from": {
			"line": 0,
			"ch": 100
		},
		"to": {
			"line": 0,
			"ch": 103
		},
		"field": "_widget_1705037332583",
		"entry": ""
	}],
	"cmf": true
}

 

当我们将JSON中的信息折叠后可得出以下内容

 

{
    "text": "CONCATENATE(CONCATENATE(REPT(已完成标识,INT(当前值/目标值*10)),REPT(未完成标识,INT((1-当前值/目标值)*10))),\" - \",TEXT(当前值/目标值,\"#%\"))",
    "marks": Array[8],
    "cmf": true
}

 

经过与公式编辑框中的内容对比,以上 JSON内容 可得出以下结论:

 

1、text 部分为可视的公式部分内容;

2、marks 部分为公式中字段的位置信息,所在行,以及起止位置;

3、cmf 部分经测试 当为 true 时可绑定 marks 中信息对 text 中的字段起作用。 

 

>> 构建过程

 

1、定位字段

在一个函数公式中除了函数以外,还有字段以及用户自定义的信息,故而直接以显示内容不易区分部分信息是字段还是用户自定义信息,此处,暂较为适宜的方式是通过 marks 中的信息,找到函数公式中的每一个字段。

2、添加标识

在遍历函数公式信息的同时,会通上述的方式,找到每一个字段,并将字段的格式调整为 “S_原字段内容_E”的格式,以便于后续格式调整后重构位置信息。

3、清洗公式

因每位用户不同的公式编辑习惯,在公式中可能会存在已添加的控制格式类的信息,比如:换行或空格,清洗公式的目的是清洗掉公式中已有的此类信息,以便于后续美化公式时的一致性及减少重复的冗余的格式化。

4、美化公式

主要方式是遍历清洗后的公式,当发现“ ( ”与“ ) ”时调整换行与缩进。

5、添加标记

遍历美化公式后的公式,确定字段所在的行与起止位置,结合 marks 已有的信息,重构一个新的 marks 。

6、整合内容

结合美化后的公式以及重构的 marks 构建一个新的 JSON 信息,以实现粘贴进公式编辑框后可自动重新绑定字段信息,解决手动逐一绑定时即耗精力又可能出错的问题。

 

> 注意事项

 

1、本功能中尚未设定任何审核机制,在使用美化后的公式之前,请务必进行仔细甄别,以确保其准确性和适用性。

2、如果你的公式中存在 “ S_ ” 、“ _E ”  、“ \n ”  等信息,美化后的公式可能会不适宜直接使用,请仔细甄别。

3、在构建字段名或其它非需运算的场景时,建议谨慎使用与运算符相同的字符,避免造成的误读的可能性。

 

> 更多内容

 

导航:云函数&前端事件&自建插件 内容集

汇总:论坛中发表过的所有帖子

 

承接简道云技术咨询与应用定制

承接月度技术支持服务

更多沟通交流可添加微信(zmlnow)

添加时请备注:简道云

 

 

参与人数 +1 F币 +80 理由
苏瑞 + 80 【2024原创内容激励奖励】给你32个赞!

查看全部评分

发表于 2024-5-27 09:46:06
发表于 2024-5-27 10:59:43
您好,感谢您对本次原创内容激励计划的支持。您的本次投稿内容基于解决贪吃蛇般巨长的公式提出简道云函数公式美化助手。在简道云使用过程中很多用户可能会因为公式的大量堆叠,没有体现层次性和逻辑性就很难理解和修改。你此次提出的内容能够很大程度改善这种问题和现象,具有很强的实用性。同时在图片展示过程中可以标注一下,突出侧重点。在结构解析时也可以结合文字备注说明,增强可读性,提升用户阅读体验感。再次感谢您的投稿,期待您的下一篇内容。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

返回顶部 返回列表