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

利用Google Sheets脚本:勾选复选框时清除多工作表指定单元格范围

Google Sheets 脚本解决方案

1. 清除多个命名工作表的指定单元格范围

封装通用函数批量处理,支持自定义要清除的工作表与对应范围:

// 批量清除多工作表指定范围内容
function clearMultipleSheetsRanges() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  // 配置:键为工作表名,值为该表需清除的范围数组
  const sheetRanges = {
    "Sheet1": ["A1:C5", "E10:E15"],
    "Sheet2": ["B3:D7", "F2:F8"],
    "SurfaceApps": ["E6:E8", "E14:E16"]
  };

  Object.entries(sheetRanges).forEach(([name, ranges]) => {
    const sheet = ss.getSheetByName(name);
    if (!sheet) return; // 跳过不存在的工作表
    ranges.forEach(range => sheet.getRange(range).clearContent());
    // 如需清除格式/批注,改用 sheet.getRange(range).clear({contentsOnly: false})
  });
}

2. 勾选SurfaceApps!D4时同步清除多表范围

修改onEdit函数,加入目标工作表的清除逻辑,同时判断复选框状态:

function onEdit(e) {
  const range = e.range;
  const sheet = range.getSheet();

  // 仅触发条件:SurfaceApps工作表的D4单元格
  if (sheet.getName() === "SurfaceApps" && range.rowStart === 4 && range.columnStart === 4) {
    const isChecked = range.isChecked();
    // 仅在勾选时执行清除(取消勾选时不执行可保留此判断,否则移除)
    if (isChecked) {
      // 清除当前工作表的指定范围
      const currentRanges = ["E6:E8", "E14:E16", "E29:E30"];
      currentRanges.forEach(r => sheet.getRange(r).clearContent());

      // 清除「Target Sheet name」工作表的额外范围
      const targetSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Target Sheet name");
      if (targetSheet) {
        const targetRanges = ["A2:A10", "C3:C7"]; // 替换为实际需要清除的范围
        targetRanges.forEach(r => targetSheet.getRange(r).clearContent());
      }
    }
  }
}

关键说明

  • 确认Target Sheet name的名称与实际工作表完全一致,否则会跳过该表的清除操作
  • clearContent()仅清除单元格内容,若需同时清除格式,使用clear()方法,如clear({formatOnly: true})仅清格式,clear()清除所有内容和格式
  • 若需要在取消复选框时也执行清除,删除if (isChecked)判断即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 12:56:35