通过 API 创建和编辑 Tally 表单。适用于编程构建调查、反馈表或问卷。支持文本、多选、复选框、评分(通过变通方法)等多种题型。
Tally 格式 API. 创建和编辑 Tally. so 程序化通过 REST API. 认证.是一项面向实际任务的技能,主要用于Endpoints.是一项面向实际任务的技能,主要用于Action.;Method.;
Update form.;PATCH.;Get resublishments.;Block Structu 程序化地形成.;它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
通过 Tally.so 提供的 REST API 以编程方式创建和编辑表单。
TALLY_KEY=$(cat ~/.config/tally/api_key)
| 操作 | 方法 | 端点 |
|---|---|---|
| 列出表单 | GET | https://api.tally.so/forms |
| 获取单个表单 | GET | https://api.tally.so/forms/{id} |
| 更新表单 | PATCH | https://api.tally.so/forms/{id} |
| 获取提交记录 | GET | https://api.tally.so/forms/{id}/submissions |
Tally 表单由 区块(blocks) 构成。问题需由 多个共享同一 groupUuid 的区块组成:
{
"uuid": "q1-title",
"type": "TITLE",
"groupUuid": "group-q1",
"groupType": "QUESTION",
"payload": {
"safeHTMLSchema": [["Question text here", [["tag", "span"]]]]
}
},
{
"uuid": "q1-input",
"type": "INPUT_TEXT",
"groupUuid": "group-q1",
"groupType": "QUESTION",
"payload": {"isRequired": true}
}
关键点: TITLE 区块与输入区块必须使用相同的 groupUuid。
FORM_TITLE — 表单标题及提交按钮TEXT — 段落文本HEADING_1、HEADING_2、HEADING_3 — 分节标题TITLE — 问题标签(位于 QUESTION 类型分组内)DIVIDER — 分隔线INPUT_TEXT — 短文本INPUT_NUMBER — 数字INPUT_EMAIL — 邮箱INPUT_DATE — 日期选择器INPUT_PHONE_NUMBER — 电话号码TEXTAREA — 长文本MULTIPLE_CHOICE_OPTION — 单选(groupType: MULTIPLE_CHOICE)CHECKBOX — 多选(groupType: CHECKBOXES)DROPDOWN_OPTION — 下拉选项RATING — 星标无法正常显示LINEAR_SCALE — 量表无法正常显示临时解决方案: 使用 MULTIPLE_CHOICE_OPTION 配合星标 emoji(⭐)模拟评分控件。
{
"uuid": "title-001",
"type": "FORM_TITLE",
"groupUuid": "group-title",
"groupType": "FORM_TITLE",
"payload": {
"title": "My Survey",
"button": {"label": "Submit"}
}
}
{
"uuid": "sec1-head",
"type": "HEADING_2",
"groupUuid": "group-sec1",
"groupType": "TEXT",
"payload": {
"safeHTMLSchema": [["📊 Section Title", [["tag", "span"]]]]
}
}
{
"uuid": "q1-title",
"type": "TITLE",
"groupUuid": "group-q1",
"groupType": "QUESTION",
"payload": {
"safeHTMLSchema": [["What is your name?", [["tag", "span"]]]]
}
},
{
"uuid": "q1-input",
"type": "INPUT_TEXT",
"groupUuid": "group-q1",
"groupType": "QUESTION",
"payload": {"isRequired": true}
}
{
"uuid": "q2-title",
"type": "TITLE",
"groupUuid": "group-q2",
"groupType": "QUESTION",
"payload": {
"safeHTMLSchema": [["How did you hear about us?", [["tag", "span"]]]]
}
},
{
"uuid": "q2-opt1",
"type": "MULTIPLE_CHOICE_OPTION",
"groupUuid": "group-q2",
"groupType": "MULTIPLE_CHOICE",
"payload": {"isRequired": true, "index": 0, "isFirst": true, "isLast": false, "text": "Social media"}
},
{
"uuid": "q2-opt2",
"type": "MULTIPLE_CHOICE_OPTION",
"groupUuid": "group-q2",
"groupType": "MULTIPLE_CHOICE",
"payload": {"isRequired": true, "index": 1, "isFirst": false, "isLast": true, "text": "Friend referral"}
}
{
"uuid": "q3-title",
"type": "TITLE",
"groupUuid": "group-q3",
"groupType": "QUESTION",
"payload": {
"safeHTMLSchema": [["What features interest you?", [["tag", "span"]]]]
}
},
{
"uuid": "q3-cb1",
"type": "CHECKBOX",
"groupUuid": "group-q3",
"groupType": "CHECKBOXES",
"payload": {"index": 0, "isFirst": true, "isLast": false, "text": "Feature A"}
},
{
"uuid": "q3-cb2",
"type": "CHECKBOX",
"groupUuid": "group-q3",
"groupType": "CHECKBOXES",
"payload": {"index": 1, "isFirst": false, "isLast": true, "text": "Feature B"}
}
{
"uuid": "q4-title",
"type": "TITLE",
"groupUuid": "group-q4",
"groupType": "QUESTION",
"payload": {
"safeHTMLSchema": [["How would you rate our service?", [["tag", "span"]]]]
}
},
{
"uuid": "q4-opt1",
"type": "MULTIPLE_CHOICE_OPTION",
"groupUuid": "group-q4",
"groupType": "MULTIPLE_CHOICE",
"payload": {"isRequired": true, "index": 0, "isFirst": true, "isLast": false, "text": "⭐ Poor"}
},
{
"uuid": "q4-opt2",
"type": "MULTIPLE_CHOICE_OPTION",
"groupUuid": "group-q4",
"groupType": "MULTIPLE_CHOICE",
"payload": {"isRequired": true, "index": 1, "isFirst": false, "isLast": false, "text": "⭐⭐ Fair"}
},
{
"uuid": "q4-opt3",
"type": "MULTIPLE_CHOICE_OPTION",
"groupUuid": "group-q4",
"groupType": "MULTIPLE_CHOICE",
"payload": {"isRequired": true, "index": 2, "isFirst": false, "isLast": false, "text": "⭐⭐⭐ Good"}
},
{
"uuid": "q4-opt4",
"type": "MULTIPLE_CHOICE_OPTION",
"groupUuid": "group-q4",
"groupType": "MULTIPLE_CHOICE",
"payload": {"isRequired": true, "index": 3, "isFirst": false, "isLast": false, "text": "⭐⭐⭐⭐ Very good"}
},
{
"uuid": "q4-opt5",
"type": "MULTIPLE_CHOICE_OPTION",
"groupUuid": "group-q4",
"groupType": "MULTIPLE_CHOICE",
"payload": {"isRequired": true, "index": 4, "isFirst": false, "isLast": true, "text": "⭐⭐⭐⭐⭐ Excellent"}
}
TALLY_KEY=$(cat ~/.config/tally/api_key)
# 先备份
curl -s "https://api.tally.so/forms/{ID}"
-H "Authorization: Bearer $TALLY_KEY" > /tmp/backup.json
# 执行更新
curl -s "https://api.tally.so/forms/{ID}"
-X PATCH
-H "Authorization: Bearer $TALLY_KEY"
-H "Content-Type: application/json"
-d @/tmp/form.json
# 验证结果
curl -s "https://api.tally.so/forms/{ID}"
-H "Authorization: Bearer $TALLY_KEY" | jq '.blocks | length'
MULTIPLE_CHOICE 类型配合 ⭐ emoji,避免直接使用 RATING 类型.blocks | length 是否与预期一致相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 133.9万人学习
共49课时 | 82.5万人学习