# 在动作中存储用户设置 有些动作可能会需要允许使用者做一些自定义的设置,例如: - 所依赖的某个程序的路径; - 调用API服务接口所需要的账号凭据; - 用户习惯设置; 相关内容: - [状态存取](https://getquicker.net/KC/Help/Doc/statestorage):保存设置信息; - [表单](https://getquicker.net/KC/Help/Doc/form):修改设置信息的界面; - [右键菜单](https://getquicker.net/KC/Help/Doc/action-custom-context-menu):为动作添加设置菜单; - [动作参数判断](https://getquicker.net/KC/Help/Doc/quicker_in_param):判断是否应该显示表单; # 实现原理 **(1)为需要支持自定义设置的变量开启“保存变量的值(作为状态使用)”选项。**
开启此选项后,如果修改了变量的值,则下次运行动作时会自动使用这个值作为变量的初始值。
![image.png](https://cdn.nlark.com/yuque/0/2024/png/272392/1709509346999-238592c6-7401-4647-b33b-4fd6564c7be9.png#averageHue=%23faf9f9&clientId=uf967882c-cd89-4&from=paste&height=421&id=u1ff7270b&originHeight=631&originWidth=732&originalType=binary&ratio=1.5&rotation=0&showTitle=false&size=50086&status=done&style=none&taskId=u988d56fe-348c-4f2a-b731-5d96352c463&title=&width=488) **(2)必要时,使用表单窗口等用户界面步骤,请用户修改变量的值:** - 判断变量的值不合法时,如变量中未存储程序路径或路径不合法。 - 用户通过右键菜单启动了设置界面。 - 判断发现用户启动动作时按住了`Ctrl`键等。 # 示例动作 本教程将以“[一译](https://getquicker.net/Sharedaction?code=3b4e1cbc-9fbc-4686-764f-08d950c2afd2)”动作为示例,向您介绍如何在动作中实现自定义设置的存储和设置。 动作简介:使用指定的翻译引擎对选中的内容进行翻译。并根据设定,将翻译结果写入剪贴板或发送到窗口替换掉选择的文字。 在这个动作中,将添加这些用户自定义项:
![image.png](https://cdn.nlark.com/yuque/0/2022/png/272392/1642919209798-7bd9445b-665e-4d0d-ad04-4ebbcfbd8fb8.png#averageHue=%23fafafa&clientId=u91428ef9-d0c4-4&from=paste&height=327&id=ud9c9a661&originHeight=490&originWidth=750&originalType=binary&ratio=1&rotation=0&showTitle=false&size=29463&status=done&style=none&taskId=u97c744fd-f07b-47aa-a66d-3c91b14bf8f&title=&width=500) ## 1. 定义要存储自定义设置的变量 ![image.png](https://cdn.nlark.com/yuque/0/2022/png/272392/1642919830446-3d902c0e-5167-48af-8170-86e37bec82ca.png#averageHue=%23f4f3f1&clientId=u91428ef9-d0c4-4&from=paste&height=470&id=ube115179&originHeight=705&originWidth=1095&originalType=binary&ratio=1&rotation=0&showTitle=false&size=122564&status=done&style=none&taskId=uf8f4784e-4cd9-459a-81cc-e3044102344&title=&width=730)
在动作中,使用这些变量存储自定义设置: - vendor:存储选择使用的厂商 - srcLang:翻译内容的源语言 - dstLang:翻译内容的目标语言 - autoPaste:是否自动粘贴翻译结果 例如,vendor变量的设置如下图所示:
![image.png](https://cdn.nlark.com/yuque/0/2024/png/272392/1709509382839-07652f49-c7d4-40fc-a4aa-53af92f43088.png#averageHue=%23fafafa&clientId=uf967882c-cd89-4&from=paste&height=421&id=ue842ca21&originHeight=631&originWidth=732&originalType=binary&ratio=1.5&rotation=0&showTitle=false&size=46185&status=done&style=none&taskId=u02390efb-29ff-4052-be63-f0b0305eb5a&title=&width=488) ## 2. 使用右键菜单触发设置窗口 关于右键菜单,请参考《[为动作设计右键菜单](https://getquicker.net/KC/Help/Doc/action-custom-context-menu)》。 在动作选项中,可以看到定义里右键菜单数据:
`[fa:Light_Cog:#FF0000]动作设置|settings`
![image.png](https://cdn.nlark.com/yuque/0/2022/png/272392/1642920080202-b18b4b9e-79a8-4e3c-8ceb-d8f51e97ea94.png#averageHue=%23f6f5f4&clientId=u91428ef9-d0c4-4&from=paste&height=395&id=u923e5f4f&originHeight=593&originWidth=625&originalType=binary&ratio=1&rotation=0&showTitle=false&size=44481&status=done&style=none&taskId=u20f481f6-3e97-48fb-88ec-555a25bcd1e&title=&width=416.6666666666667)
它用于显示一个带有红色齿轮图标的菜单项“动作设置”,点击该右键菜单后,会触发动作并为动作传递参数settings。
![image.png](https://cdn.nlark.com/yuque/0/2022/png/272392/1642920346019-cf1d15ca-24fa-4c9e-9034-75805f98b150.png#averageHue=%23f9f9f9&clientId=u91428ef9-d0c4-4&from=paste&height=280&id=u8fcc64f8&originHeight=420&originWidth=550&originalType=binary&ratio=1&rotation=0&showTitle=false&size=18574&status=done&style=none&taskId=ubc741f36-7b52-42c6-aaa0-e891fed9129&title=&width=366.6666666666667) 在动作中判断输入参数是否为菜单项的值“settings”,如果是的话,就显示设置界面然后结束动作。
![image.png](https://cdn.nlark.com/yuque/0/2022/png/272392/1642920444480-a046b2fb-d705-4b38-9a39-26d9561981d4.png#averageHue=%23f6f4f0&clientId=u91428ef9-d0c4-4&from=paste&height=123&id=u295f2c24&originHeight=185&originWidth=826&originalType=binary&ratio=1&rotation=0&showTitle=false&size=19017&status=done&style=none&taskId=u504f9ef6-ff1d-49a1-a607-f773ced0f53&title=&width=550.6666666666666)
`{quicker_in_param}`是动作收到的参数。判断条件为:
![image.png](https://cdn.nlark.com/yuque/0/2022/png/272392/1642920488915-ada1a1c3-6f0c-4089-be9b-518b5fe84695.png#averageHue=%23fcfbfb&clientId=u91428ef9-d0c4-4&from=paste&height=377&id=ucfd4c87d&originHeight=565&originWidth=1257&originalType=binary&ratio=1&rotation=0&showTitle=false&size=35243&status=done&style=none&taskId=u78b00183-11bf-4816-9009-294faa2eeb8&title=&width=838)
条件符合时,使用[多字段表单](https://getquicker.net/KC/Help/Doc/form)窗口编辑4个变量值:
![image.png](https://cdn.nlark.com/yuque/0/2022/png/272392/1642920563358-f1591506-ce14-4a24-9866-b96e3870a6d9.png#averageHue=%23f8f7f7&clientId=u91428ef9-d0c4-4&from=paste&height=549&id=uebf9562a&originHeight=824&originWidth=977&originalType=binary&ratio=1&rotation=0&showTitle=false&size=74172&status=done&style=none&taskId=ud391c7de-4101-4716-92d1-ff55de92f75&title=&width=651.3333333333334) 当参数值不是“settings”时,执行正常的动作逻辑:获取选中文本->翻译->输出结果:
![image.png](https://cdn.nlark.com/yuque/0/2022/png/272392/1642920735578-01a1ab8c-29f1-4e89-976a-1219f1832a55.png#averageHue=%23f6f5f2&clientId=u91428ef9-d0c4-4&from=paste&height=346&id=uae196f5e&originHeight=519&originWidth=1006&originalType=binary&ratio=1&rotation=0&showTitle=false&size=54275&status=done&style=none&taskId=u7136edfd-6c4c-4b4d-8953-0ff53fdcec0&title=&width=670.6666666666666)