WPS AirScript脚本合集(十三):查看自动化流程执行脚本入参的值和类型

此篇文章内容是通过自动化流程触发执行AirScript脚本时查看脚本入参的值和类型。

由于脚本编辑器的功能比较简洁以及自动化流程执行AirScript脚本的配置界面相对独立,

如下图错误信息告知Application.Record.UpdateRecords()函数中SheetId的值类型无效,要求string或number;

相关代码为

const recordid = Context.argv.recordid
... ...
Application.Record.UpdateRecords({
    SheetId: sheetid,
    Records: [{
      ... ...
      }
    }],
  });

SheetId的值由recordid传入,recordid = Context.argv.recordid,所以是Context.argv.recordid的值类型无效,那问题来了,请问Context.argv.recordid的值是什么类型呢?

报错日志没写,自动化流程配置界面也没得调试,脚本编辑器就算脚本有尝试通过console.log输出,运行日志连显示的机会也没有,于是考虑

专门写个脚本,通过return输出自动化流程执行脚本入参的值和类型,配合自动化流程将返回值写入到指定字段中进行查看

下面举个例子来演示下

一、多维表格数据表及字段结构

1、表名:自动化字类型查询

2、视图名:表格视图

3、字段设置:

◉ 字段名称:触发自动化字段 - 字段类型:文本 - 禁止录入重复值:否 - 默认值:无;

◉ 字段名称:表ID变量值 - 字段类型:文本 - 禁止录入重复值:否 - 默认值:无;

◉ 字段名称:表ID变量类型 - 字段类型:文本 - 禁止录入重复值:否 - 默认值:无;

◉ 字段名称:记录ID变量值 - 字段类型:文本 - 禁止录入重复值:否 - 默认值:无;

◉ 字段名称:记录ID变量类型 - 字段类型:文本 - 禁止录入重复值:否 - 默认值:无;

二、AirScript脚本

微信公众号文章详见https://mp.weixin.qq.com/s/sXAUaHflkq4CtBX8iR6DSQ

const sheetid = Context.argv.sheetid
const typesheetid = typeof sheetid
console.log("当前表ID的值:", sheetid)
console.log("当前表ID的类型:", typeof sheetid)

const recordid = Context.argv.recordid
const typerecordid = typeof recordid
console.log("当前记录ID的值:", recordid)
console.log("当前记录ID的类型:", typeof recordid);

return { 
  sheetid: `${sheetid}`,
  typesheetid: `${typesheetid}`,
  recordid: `${recordid}`,
  typerecordid: `${typerecordid}`
};

三、自动化流程设置

注意“执行AirScript脚本”-配置参数-脚本入参和脚本返回值需切换英文输入法输入,如果第3步“修改记录”-配置参数-设置字段值点击+号无“第2步AirScript脚本的返回值”,需检查第2步“执行AirScript脚本”中配置参数-脚本入参和脚本返回值输入内容是否正确!

注意事项:

1、脚本入参默认为空对象,即Context.argv = {},所以脚本中Context.argv.后面的内容需和脚本入参中的键名称一致,脚本返回值同理

当脚本中Context.argv.后面的内容和脚本入参中的键名称一致,可正常返回内容,即表ID变量值、表ID变量值类型、记录ID变量值和记录ID变量类型

那不一致会怎么样呢?当然是识别不到参数输出undefined啦

2、即使脚本中Context.argv.后面的内容和脚本入参中的键名称一致,可正常返回内容,但表ID变量值类型和记录ID变量类型都是object,不符合前面开头讲的所需参数类型为string或number,如何处理呢?

修改代码取sheetid以及recoedid第一个数据,如下内容:

为什么这样就可以呢?由于看不到具体的object内容,俺也不知道!

也许老天爷知道吧,END!

广东省
浏览 375
3
5
分享
5 +1
2
3 +1
全部评论 2
 
WPS_1615165357
之所以都是Object这是因为JS的原因,因为这里返回的是Object Array类型,就是数组 [1,2,3] instanceof Array ;可以通过instanceof看到
· 浙江省
回复
bokuto
· 广东省
回复