wps在线表格使用AirScript填充图片

概述

业务中有时会使用一些第三方表格来记录数据;比如常用的wps在线智能表格;

其中可以嵌入一些脚本实现一些简单的交互;

比如点击按钮从可访问的url中下载图片然后嵌入到表格的单元格中;

我在使用时跟着api文档敲了下发现不行;

后来搜了下资料,发现还需要配合特殊的配置才能生效

按钮触发图片下载填充

官方文档
https://bbs.wps.cn/topic/56066

大概分3块步骤;

1-配置按钮

2-配置脚本

3-配置流程(流程配置中需要配置上对应的入参变量,变量name要和脚本中的匹配)

这里直接捞官网demo中的按钮相关配置图了

流程配置中的入参配置

脚本demo

javascript 复制代码
// 验证链接类型函数
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);
};

function refreshImgFile(recordid){

  // 读取字段值
  let urlValue = Application
                        .Sheets("数据表模板")
                        .Views("数据表模板")
                        .RecordRange(recordid, "@图片URL")
                        .Value;

  if(!urlValue){
    urlValue = Application.Sheets("数据表模板").RecordRange(recordid, "@图片URL");
  }

  console.log("URL地址:", urlValue);
  if(!urlValue){
    console.log("URL地址不存在");
    return {
      message: "URL地址不存在"
    }
  }

  const fileName = `附件_${recordid}`;
  const fileExt = urlValue.split('.').pop().toLowerCase();

  console.log("附件名称:", fileName);

  const validMatch = isValidLink(urlValue);
  console.log("URL是否为有效链接:", validMatch);

  if(!validMatch) {
    // 清空附件
    Application.Sheets("数据表模板").RecordRange(recordid, "@图片和附件").Value = null;
    // 返回错误信息
    console.log("URL非云文档链接或图片链接");
    return {
      message: "URL非云文档链接或图片链接"
    }
  };

  const fullFileName = fileName + '.' + fileExt;
  console.log('文件name', fullFileName);

  // 设置附件
  Application.Sheets("数据表模板").RecordRange(recordid, "@图片和附件").Value = DBCellValue([{
    fileData: urlValue,
    fileName: fullFileName
  }]);

  console.log("附件设置成功!");
  return {
    message: "附件设置成功!"
  }
};

const buttonRecordIds = Context.argv.recordid
console.log("button当前记录ID:", buttonRecordIds);

if (Array.isArray(buttonRecordIds)) {
  // 多条
  buttonRecordIds.forEach((id) => {
    refreshImgFile(id);
  })
  return;
}

const selectedRecordIds = Application.Selection.GetSelectionRecordIds();
console.log("selected记录IDS:", selectedRecordIds);
let selectedRecordId = null;
if(selectedRecordIds && selectedRecordIds.length > 0){
  selectedRecordId = selectedRecordIds[0][0];
}

const recordid = buttonRecordIds || selectedRecordId;

if (!recordid) {
  return { message: '未获取到当前记录,请从表格行按钮触发' };
}

refreshImgFile(recordid);
相关推荐
xiaopai9451 小时前
EPC项目动态成本管控:从WPS静态表格到全过程数字化系统的演进与验证方法
wps·epc项目管理·建米软件
灵析表格6 小时前
WPS Excel官方函数扩展库数据安全加密校验函数深度研究报告:Excel国密SM3/SM4加解密、MD5摘要、UUID、Base64与URL编解码全栈解析
excel·wps
zbtlink10 小时前
路由器安全深度解析:从WPA3协议到自动化审计
网络·网络安全·智能路由器·wps
xiaopai9451 天前
用WPS做EPC资金计划表:什么时候是表格问题,什么时候已经变成数据关系问题?
wps·建米软件·epc资金计划
扬帆破浪1 天前
文档自动检查:用 Claude Code、OpenClaw 审 WPS 文件:预览、批注、改正文
运维·服务器·wps
stitchshaw3 天前
wps:在一张PPT中画多个子图
powerpoint·wps
PythonFun3 天前
告别VLOOKUP!XLOOKUP模糊匹配实操指南
wps
灵析表格4 天前
灵析表格手机号处理函数深度分析报告
前端·网络·json·wps·灵析表格·excel公式盒子
xiaopai9454 天前
工程项目管理系统选型:WPS/Excel为何难以替代专业系统的数据关联逻辑
excel·wps·项目管理系统·建米软件
灵析表格4 天前
Excel连接MySQL的函数化革命:灵析表格MySQL函数族业务应用分析
数据库·mysql·adb·excel·wps·灵析表格·excel公式盒子