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);
相关推荐
河北之花9 小时前
数据结构、栈和队列、循环队列、树状结构
wps
骆驼爱记录5 天前
Word三线表制作全攻略
自动化·word·wps·新人首发
JEECG低代码平台5 天前
JeecgBoot低代码平台从 WPS 切换到 OnlyOffice 的开发配置指南
低代码·wps
usdoc文档预览6 天前
Word文件转PDF、WPS在线打印、js提取Word文件内容、轻松将Word文档转为PDF
pdf·word·wps·在线预览·word转pdf·在线编辑·ofd在线预览解析
骆驼爱记录7 天前
3步删除Word目录空白行
自动化·word·excel·wps·新人首发
爱上妖精的尾巴7 天前
8-18 WPS JS宏 正则表达式-边界匹配
开发语言·javascript·正则表达式·wps·jsa
南风微微吹7 天前
计算机二级WPS office历年真题试卷及答案解析14套电子版PDF(2026年3月最新)
pdf·wps·计算机二级wps
南风微微吹7 天前
小黑课堂计算机一级WPSoffice题库软件下载安装教程(2026年3月最新版)
wps·计算机一级wps
TMT星球7 天前
开启iPad专业办公时代 WPS for Pad原生桌面级Office正式上线
ios·ipad·wps
k期7 天前
Visio文件在WPS中显示不全解决方法
wps