动作表达式修改建议

功能建议 · 7 次浏览
CL 创建于 21小时15分钟前

动作表达式修改建议

你好,使用《常用语Pro》修订 58 时,发现几处表达式在 Quicker V2 的 QkEval 引擎下会报语法错误。结合动作定义和错误报告,整理了以下修改建议,供参考。

一、字体颜色、背景色的初始化表达式

“更新后首次运行”分支中的“批量赋值”步骤,使用了类似写法:

$=!string.IsNullOrEmpty({字体颜色字段列}) ? {字体颜色字段列} :
{
    // 计算列名
    return ...;
}

三元运算符 ?: 的分支不能直接使用 { … } 语句块,因此会报“表达式项 { 无效”。相邻的字体背景色表达式也有同样的问题。

建议改为先判断已有设置并返回,然后继续计算:

$=if (!string.IsNullOrEmpty({字体颜色字段列}))
{
    return {字体颜色字段列};
}

// 在这里接原来的列名计算代码
// 使用 return 返回计算结果

字体背景色同样处理。这一问题发生在解析阶段,即使已有颜色列设置,也无法通过条件判断绕过。

二、文件名比较表达式

错误报告中还发现该动作运行过程中出现以下写法:

if ({是文件夹}) {
    {原名称} + {扩展名} != {可创建的名称}
}
else {
    {原名称} != {可创建的名称}
}

建议改成明确返回结果的写法,例如:

$={是文件夹}
    ? ({原名称} + {扩展名} != {可创建的名称})
    : ({原名称} != {可创建的名称})

这段代码未在当前分享动作的内嵌定义中找到,可能来自调用的共享子程序,烦请检查相关依赖。

三、列名计算的边界问题

除了语法问题,颜色列的自动计算还有几个边界情况:

  • 字体颜色计算只保留单字母列,已有 AAAB 等列时会被忽略。
  • 背景色通过字符加 2 计算,最大列为 Y 时会得到 A,为 Z 时会得到反斜杠;按 Excel 列顺序应分别得到 AAAB
  • 背景色计算直接读取 maxLetter[0],建议增加空值、空字符串检查。

建议统一按“Excel 列名转列号 → 加偏移 → 转回列名”的方式处理,同时保留用户已经配置的列。

以上语法改写已通过静态语法检查,尚未做完整动作运行验证。修改后可重点检查“更新后首次运行”、已有颜色配置,以及列名跨越 Z 的情况。


回复内容
lanyu_er 21小时2分钟前
#1

感谢老大测试;上面几个问题之前在本地版已经解决;且在解决之前,1.x本身不会报错,2.0场景下,还有其他报错,还在排查,所以没着急更新分享。

注:问题二的报错来源于这个子程序:【文件处理】(基础)指定路径已存在时,重命名(子程序): https://getquicker.net/subprogram?id=36bc72ca-ff54-45e4-9401-08d9620ff65a&version=14


另外这个子程序在2.0也无法使用:返回指定id动作的标题、说明、图标、右键菜单(子程序): https://getquicker.net/subprogram?id=12d64a98-871e-435f-366a-08dd1295b1db&version=1

回复主贴