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);
相关推荐
专注VB编程开发20年13 小时前
WPS 重营销、轻基础底层,劫持注册表让office没法用
wps
wujian831114 小时前
怎么把Kimi里的表格完整复制到wps内
人工智能·ai·wps·豆包·deepseek·ai导出鸭
系统集成架构师2 天前
WPS 多维表格新增数据,如何自动同步到腾讯文档?
wps
xqg13164 天前
WPS 配置优化
wps
梦幻通灵4 天前
WPS的word表格序号递增实现方案
wps
熟悉的新风景5 天前
word,wps使用技巧
word·wps
我没胡说八道5 天前
论文AI改写工具深度实测测评|避坑对比、优劣短板、场景适配全解析
人工智能·经验分享·深度学习·aigc·论文·wps
专注VB编程开发20年6 天前
逍遥Pya IDE -- 可视化Python开发工具,类似VBA WPS(JSA)
ide·python·wps
transuperb11 天前
WPS-word画出完美的三线表
word·写作·wps
扬帆破浪11 天前
开源免费的WPS AI 软件 察元AI文档助手:链路 053:AIAssistantDialog 选区翻译的 streamChatCompletion
开源·wps