动作表达式修改建议
你好,使用《常用语Pro》修订 58 时,发现几处表达式在 Quicker V2 的 QkEval 引擎下会报语法错误。结合动作定义和错误报告,整理了以下修改建议,供参考。
一、字体颜色、背景色的初始化表达式
“更新后首次运行”分支中的“批量赋值”步骤,使用了类似写法:
$=!string.IsNullOrEmpty({字体颜色字段列}) ? {字体颜色字段列} :
{
// 计算列名
return ...;
}
三元运算符 ?: 的分支不能直接使用 { … } 语句块,因此会报“表达式项 { 无效”。相邻的字体背景色表达式也有同样的问题。
建议改为先判断已有设置并返回,然后继续计算:
$=if (!string.IsNullOrEmpty({字体颜色字段列}))
{
return {字体颜色字段列};
}
// 在这里接原来的列名计算代码
// 使用 return 返回计算结果
字体背景色同样处理。这一问题发生在解析阶段,即使已有颜色列设置,也无法通过条件判断绕过。
二、文件名比较表达式
错误报告中还发现该动作运行过程中出现以下写法:
if ({是文件夹}) {
{原名称} + {扩展名} != {可创建的名称}
}
else {
{原名称} != {可创建的名称}
}
建议改成明确返回结果的写法,例如:
$={是文件夹}
? ({原名称} + {扩展名} != {可创建的名称})
: ({原名称} != {可创建的名称})
这段代码未在当前分享动作的内嵌定义中找到,可能来自调用的共享子程序,烦请检查相关依赖。
三、列名计算的边界问题
除了语法问题,颜色列的自动计算还有几个边界情况:
AA、AB 等列时会被忽略。Y 时会得到 A,为 Z 时会得到反斜杠;按 Excel 列顺序应分别得到 AA、AB。maxLetter[0],建议增加空值、空字符串检查。建议统一按“Excel 列名转列号 → 加偏移 → 转回列名”的方式处理,同时保留用户已经配置的列。
以上语法改写已通过静态语法检查,尚未做完整动作运行验证。修改后可重点检查“更新后首次运行”、已有颜色配置,以及列名跨越 Z 的情况。