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

如何修改Google Sheets脚本实现指定单元格字体大小动态调整

解决方案

核心问题在于原脚本只处理了存在"Heading"的情况,没覆盖需要重置字体的场景。正确逻辑是先把B列所有单元格统一设为12号字体,再单独把符合条件的单元格下方设为18号,这样无论"Heading"被添加或移除,都能保证不符合规则的单元格自动恢复默认字体。

修改后的脚本如下:

function onEdit() {
  const sheetName = "Sheet1"; // 请设置目标工作表名称
  const fontSizeLarge = 18; // 需要放大的字体尺寸
  const fontSizeDefault = 12; // 默认字体尺寸
  const targetColumn = 2; // 目标列(B列对应数字2)
  const triggerText = "Heading";

  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
  const lastRow = sheet.getLastRow();
  
  // 第一步:全局重置B列所有单元格为默认12号字体
  sheet.getRange(1, targetColumn, lastRow).setFontSize(fontSizeDefault);
  
  // 第二步:找到所有含"Heading"的单元格,设置其正下方单元格为18号
  // 排除最后一行,避免越界报错
  const triggerCells = sheet.getRange(1, targetColumn, lastRow - 1)
    .createTextFinder(triggerText)
    .matchEntireCell(true)
    .findAll();
  
  if (triggerCells.length > 0) {
    const belowRangeList = triggerCells.map(cell => cell.offset(1, 0).getA1Notation());
    sheet.getRangeList(belowRangeList).setFontSize(fontSizeLarge);
  }
}

修改要点说明

  • 全局重置优先:先把B列所有单元格设为12号,彻底解决"Heading"移除后无法恢复字体的问题。
  • 规避越界问题:查找触发单元格时排除最后一行,防止最后一行是"Heading"时,offset(1,0)指向不存在的行导致报错。
  • 逻辑简化:先统一规则再单独处理特殊情况,代码更易懂,也避免了原脚本的遗漏场景。

验证场景

  1. 在B列某单元格输入"Heading",其下方单元格自动变为18号,其余保持12号。
  2. 删除该单元格的"Heading"内容,其下方单元格自动恢复为12号。
  3. 多个"Heading"单元格共存时,各自下方单元格独立生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 12:01:21