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非云文档链接或图片链接”哦~

场景三:点击按钮强制刷新

场景四:URL非云文档链接或图片链接

广东省
浏览 529
2
3
分享
3 +1
2 +1
全部评论