跳到主要内容

我用机器人调用维格表API,没有达到想要的效果怎么办?机器人常见报错怎么解决?

在使用维格机器人调用维格表的API过程中,可能会出现机器人执行结果未达到预期的情况,此时可能是机器人运行出现了问题;通过点击这个机器人右上角的“运行历史”可以查看运行记录,通过对运行记录的分析,可以推断出问题所在,然后进行修改。

而对于运行历史的分析,主要是针对执行操作的“输入”与“输出”的值

常见问题及可能的解决方案如下:

1. 身份认证失败

  • 提示

{ "code": 401, "message": "身份认证失败", "success": false }

  • 可能原因

通常是因为请求头中未传输正确的身份认证信息

  • 解决思路

检查机器人配置中,发送网络请求操作中的请求头。

请求头中有键值对为下列的内容,避免出现文本错误。

注意Bearer与API Token中间有一个空格

Authorization:Bearer 您的API Token

2. JSON格式错误

  • 提示

    { "error": "Bad Request", "message": "Unexpected end of JSON input", "statusCode": 400 }

    返回数据中有提到“JSON”字样的错误信息。

  • 可能原因

此类错误通常是因为请求体不符合JSON的语法规范而导致的。

  • 解决思路

JSON语法规范可查看:JSON 语法 | 菜鸟教程

也可通过在线的JSON校验工具,来校验请求体的格式:JSON在线解析及格式化验证 - JSON.cn

通常可能是因为漏写或多写一个逗号、括号等等导致的;

也有可能在插入的维格表变量(通常是多行文本)中包含了影响JSON语法的符号,如换行、半角的逗号与引号等。

所以我们可以先校验一下剔除掉维格变量后的请求体是否正确,如果正确,可再校验一下机器人运行历史中输入的值是否正确,从而进一步确认问题。

3. fields相关格式错误

  • 提示

此类提示的特点是,状态码为200,但是返回数据中“code”为400,同时“message”中会明确提到某个列类型必须为xx类型

  • 可能原因

此类报错通常是因为我们通过API向某张表中的某一列写入或更新值时,请求体中想要写入的值,与该列所需要的值类型不符合导致的,比如上图中,我们想要写入的列是多选类型,此时请求体中写入的值为文本,所以就会报错。

  • 解决思路

明确每种列类型所需的值,我们写入的值通常分为文本、数组、数字三类,与列类型对应关系如下:
文本:单行文本、多行文本、单选、网址、电话、邮箱
数组:多选、附件、成员、神奇关联
数字:数字、货币、百分比、评分

针对数组型需格外注意:
多选与神奇关联,是由多个文本构成的数组;
附件是由多个对象构成的数组,对象中至少传输“name”与“token”
成员是由多个对象构成的数组,对象中至少传输“type”与“name”

对于时间类型,除传输时间戳外,还可以通过一下方法:
如果是固定日期,可以用手写,如: "日期": "2022-09-09"
如果是插入维格表的变量,插入上述文本格式变量也可以,或者插入日期类型的变量即可

每个字段的具体写法可参考下表,或在每张表中的API看板中的示例。

{
"fields":{
"标题":"标题",
"选项":[
"多选1",
"选项2"
],
"附件":[
{
"name":"forza-horizon-5.torrent",
"token":"space/2022/09/09/693fd238d18a42de86c83d24992d591c"
}
],
"单选":"选项1",
"评分":5,
"日期":1663257600000,
"成员":[
{
"type":"Member",
"name":"单文辉"
}
],
"勾选":true,
"神奇关联":[
"recb5h1dAWUBn",
"recW3JblrwY1Y"
]
}
}

4. 找不到维格表

  • 提示

{ "code": 301, "message": "找不到指定的维格表", "success": false }

  • 可能原因

通常是因为API通过请求地址中的维格表ID去寻找对应表时,没有找到

  • 解决思路

检查请求地址,确认域名正确,并且维格表ID没有错误

5. 未定义属性

  • 提示

{ "code": 500, "message": "Cannot read properties of undefined (reading 'id')", "success": false }

  • 可能原因

此错误出现的原因通常是因请求体中没有正确传输接口所必须的字段,如“fields”字段,如更新接口中的“recordId”字段。

  • 解决思路

确保“fields”字段存在,并且拼写正确;确保更新接口的请求体中有“recordId”字段,并且拼写正确。

6. 指定的记录不存在

  • 提示

    { "code": 400, "message": "recordId 指定的记录不存在", "success": false }

  • 可能原因

通常出现在更新记录接口,没有找到记录ID为“recordId”字段所传输的值的记录。

  • 解决思路

检查请求地址中所使用的维格表ID下,是否存在“recordId”字段中所提到的记录