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);
相关推荐
TMT星球8 小时前
WPS 365推出“AI医药报告写作助手”,撰写效率提升超60%
人工智能·wps
骆驼爱记录10 小时前
Word侧边页码设置全攻略
前端·自动化·word·excel·wps·新人首发
龙之叶1 天前
关闭WPS自动弹出登录窗
wps
SUNTON_INDUSTRY1 天前
亲测口碑好的UPS备用电源智能锡膏柜
wps
骆驼爱记录1 天前
Word通配符技巧:高效文档处理指南
开发语言·c#·自动化·word·excel·wps·新人首发
骆驼爱记录1 天前
Word表格题注自动设置全攻略
开发语言·c#·自动化·word·excel·wps·新人首发
骆驼爱记录3 天前
Excel邮件合并嵌入图片技巧
自动化·word·excel·wps·新人首发
avi91113 天前
Unity Data Excel读取方法+踩坑记;和WPS Excel的一些命令
unity·游戏引擎·excel·wps·data
爱上妖精的尾巴4 天前
8-1 WPS JS宏 String.raw等关于字符串的3种引用方式
前端·javascript·vue.js·wps·js宏·jsa