WPS AirScript脚本合集(十六):使用脚本获取图片URL自动生成图片写入“图片与附件”字段
一、多维表格数据表及字段结构
1、数据表名:URL生成图
2、视图名称:表格视图
3、字段设置:
字段名称:URL地址 - 字段类型:文本 - 禁止录入重复值:否 - 默认值:无
字段名称:附件名称 - 字段类型:文本 - 禁止录入重复值:否 - 默认值:无
字段名称:图片和附件 - 字段类型:图片和附件 -显示样式:以列表样式显示 - 图片上传方式:无需勾选 仅可通过移动端拍摄上传
字段名称:脚本执行情况 - 字段类型:文本 - 禁止录入重复值:否 - 默认值:无
字段名称:强制刷新按钮 - 字段类型:按钮 - 执行操作:点击按钮时,触发执行AirScript脚本 - 执行成功的提示:( ´▽` )ノ刷新成功 - 按钮名称:点击按钮强制刷新 - 按钮颜色:绿色
二、开发指南相关字段说明
WPS开放平台开发指南https://open.wps.cn/documents/app-integration-dev/guide/self-app/summary.html有相关字段说明,感兴趣的小伙伴可以自行前往研究学习下~
三、AirScript脚本说明
公众号文章链接见https://mp.weixin.qq.com/s/SZTyGezJV56ny-ZKjL3n9g
const recordid = Context.argv.recordid || Application.Selection.GetSelectionRecordIds()[0][0];
console.log("当前记录ID:", recordid);
// 读取字段值
let urlValue = Application.Sheets("URL生成图").Views("表格视图").RecordRange(recordid, "@URL地址").Value;
let fileName = Application.Sheets("URL生成图").Views("表格视图").RecordRange(recordid, "@附件名称").Value;
console.log("URL地址:", urlValue);
console.log("附件名称:", fileName);
// 验证链接类型函数
function isValidLink(url) {
/// 验证WPS云文档链接格式:必须以http或https开头,后跟特定路径
const wpsPattern = /^https?:\/\/www\.kdocs\.cn\/l\//;
// 图片验证:必须以http或https开头,且包含常见图片扩展名
const imagePattern = /^https?:\/\/.*\.(png|jpe?g|gif|bmp|webp|svg)(\?|$|!|&|#)/i;
return wpsPattern.test(url) || imagePattern.test(url);
}
console.log("URL是否为有效链接:", isValidLink(urlValue));
// 验证并处理链接
if (isValidLink(urlValue)) {
// 如果是图片链接但fileName未指定扩展名,自动添加
if (fileName && !fileName.includes('.')) {
// 根据URL自动判断文件类型
if (urlValue.includes('.jpg') || urlValue.includes('.jpeg')) {
fileName += '.jpg';
} else if (urlValue.includes('.png')) {
fileName += '.png';
} else if (urlValue.includes('.gif')) {
fileName += '.gif';
} else if (urlValue.includes('.bmp')) {
fileName += '.bmp';
} else if (urlValue.includes('.webp')) {
fileName += '.webp';
} else if (urlValue.includes('.svg')) {
fileName += '.svg';
} else {
// 默认为无格式
fileName += '';
}
}
// 设置附件
Application.Sheets("URL生成图").RecordRange(recordid, "@图片和附件").Value = DBCellValue([{
fileData: urlValue,
fileName: fileName
}]);
console.log("附件设置成功!");
return {
message: "附件设置成功!"
}
} else {
// 清空附件
Application.Sheets("URL生成图").RecordRange(recordid, "@图片和附件").Value = null;
// 返回错误信息
console.log("URL非云文档链接或图片链接");
return {
message: "URL非云文档链接或图片链接"
}
}
脚本编辑器中运行结果如下所示:
四、自动化流程设置
4.1 新增或修改记录时自动生成
4.2 点击按钮强制刷新生成
五、自动化流程运行输出示例
场景一:共享文档链接+自动生成
这里有个好玩的小现象可以留意下~“图片和附件”字段的图标会根据附件名称的后缀进行改变。
比如附件名称字段仅文件名称,没有类型后缀,此时“图片和附件”字段的图标会是一个灰色的问号;
如果附件名称字段有文件名称+类型后缀,如docx、csv、ppt之类的,此时“图片和附件”字段的图标根据文件类型进行变化,如docx后缀是蓝色的文稿图标,csv后缀是绿色的表格图标,ppt后缀是橙色的幻灯片图标,但本质上图标不会改变文件类型
举个例子,URL地址是一个docx文件的共享链接,附件名称假设为“我是PPT.pptx”,此时图片与附件字段会显示一个橙色的幻灯片图标,加文件名称“我是PPT.pptx”,但点击附件内容,此时文件还是个共享的docx文件,并不会随着附件名称变成一个PPT
场景二:可公开访问的图片链接+自动生成
因为网络上可公开访问的图片链接千奇百怪,所以脚本程序限制了图片链接必须以http或https开头,且包含常见图片扩展名结尾,如png、jpg、jpeg、gif、bmp、webp、svg
资源有限,所以浅浅测试了下jpeg和png,其他千奇百怪的图片链接如程序判断不通过,大概率会判断为“URL非云文档链接或图片链接”哦~