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);
相关推荐
被放养的研究生1 天前
WPS 通配符神技:一键上标参考文献 + 中英文自动加空格
笔记·排版·wps·通配符
sxjk19872 天前
WPS表格REGEXP公式提取车牌学习
学习·wps·表格·数据处理
第五文修2 天前
wps表格内编写一个JSA宏用来背单词
excel·wps
努力成为大牛吧2 天前
Word/WPS 论文参考文献排版及交叉引用注意事项
word·wps
扬帆破浪4 天前
开源免费的WPS AI 软件 察元AI文档助手:链路 002:executeAssistantFromRibbon 与任务进度窗
人工智能·开源·wps
程序员 _孜然4 天前
关闭WPS右键菜单(win10,2026)
wps
浅水鲤鱼5 天前
WPS功能区不登录变灰色,如何不登录继续使用
wps
扬帆破浪5 天前
免费开源的WPS AI插件 察元AI助手:generateMultimodalAsset:类型校验与分支派发
人工智能·开源·ai编程·wps
扬帆破浪5 天前
免费开源的WPS AI插件 察元AI助手:installGlobalErrorLogger:启动写盘与 Vue 错误钩子
人工智能·开源·ai编程·wps
扬帆破浪6 天前
免费开源的WPS AI插件 察元AI助手:脱密加密模块:Web Crypto 与口令校验
人工智能·开源·ai编程·wps