You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

会议胸牌邮件合并:基于Hex码修改Google Slides形状颜色的Apps Script需求

解决Google Slides邮件合并后批量修改胸牌背景颜色的问题

原代码的问题分析

  • 文本内容获取错误:getText()返回的是TextRange对象,需调用asString()转为字符串才能匹配正则规则
  • Hex码判断逻辑错误:带#的标准Hex颜色码长度为7位,原代码错误判断为6位,且未正确处理文本内容格式
  • 颜色对象创建错误:需使用SlidesApp提供的newRgbColor()和newSolidFill()方法创建颜色对象,而非直接实例化类
  • 目标形状定位不可靠:依赖索引shapes[0]定位背景形状容易出错,建议通过形状名称精准查找

修正后的可行代码

function updateSlideBadgeColors() {
  const presentation = SlidesApp.getActivePresentation();
  const slides = presentation.getSlides();
  
  // 遍历所有幻灯片
  slides.forEach((slide, index) => {
    let colorCode = null;
    const textBoxes = slide.getTextBoxes();
    
    // 查找包含有效Hex颜色码的文本框
    for (const textBox of textBoxes) {
      const textContent = textBox.getText().asString().trim();
      // 匹配带#的6位Hex颜色码(支持大小写)
      if (textContent.match(/^#[0-9A-F]{6}$/i)) {
        colorCode = textContent;
        break;
      }
    }
    
    if (!colorCode) {
      console.warn(`第 ${index + 1} 张幻灯片:未找到有效Hex颜色码`);
      return;
    }
    
    // 将Hex颜色码转换为RGB值
    const red = parseInt(colorCode.substring(1, 3), 16);
    const green = parseInt(colorCode.substring(3, 5), 16);
    const blue = parseInt(colorCode.substring(5, 7), 16);
    const rgbColor = SlidesApp.newRgbColor(red, green, blue);
    
    // 查找提前命名的背景形状(需先给模板中的背景形状设置名称)
    const targetShape = slide.getShapes().find(shape => shape.getName() === "BadgeBackground");
    
    if (!targetShape) {
      console.warn(`第 ${index + 1} 张幻灯片:未找到名为BadgeBackground的背景形状`);
      return;
    }
    
    // 设置背景形状的填充颜色
    const solidFill = SlidesApp.newSolidFill().setColor(rgbColor);
    targetShape.getFill().setSolidFill(solidFill);
  });
}

使用步骤

  1. 给模板中的背景形状命名:打开胸牌模板幻灯片,选中彩色背景形状,右键点击「形状选项」→「排列与大小」,在「名称」栏输入BadgeBackground,邮件合并后所有幻灯片的背景形状会保留该名称
  2. 运行脚本:打开幻灯片的脚本编辑器(路径:工具→脚本编辑器),粘贴修正后的代码,保存后点击运行按钮,完成权限授权即可执行批量修改

关键改进说明

  • 修正文本内容获取与Hex码匹配逻辑,确保能准确提取有效颜色码
  • 使用SlidesApp官方API创建颜色和填充对象,避免API调用错误
  • 通过形状名称精准定位目标背景,避免索引定位的不确定性
  • 增加详细的错误日志输出,方便排查单张幻灯片的异常情况

内容的提问来源于stack exchange,提问作者Stephen Jones

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 09:44:50