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

基于下拉列表选择值执行Google Apps Script的整合需求

通用清除Google Sheets指定工作表内容的解决方案

核心思路

将各工作表的清除规则集中配置为一个对象,通用函数根据下拉选择的工作表名称(或ALL SHEETS)批量执行对应的清除操作,避免重复编写大量冗余函数。

完整实现代码

// 定义各工作表的清除规则配置
const SHEET_CLEAR_CONFIG = {
  "Planning": {
    clearRangesH: ['H5:H13', 'H17:H26', 'H30:H31', 'H35:H41'],
    clearRangesO: ['O5:O13', 'O17:O26', 'O30:O31', 'O35:O41'],
    resetCellsN: ['N4', 'N16', 'N29', 'N34']
  },
  "Framing": {
    clearRangesH: ['H5:H19', 'H23:H42', 'H46:H66', 'H70:H84'],
    clearRangesO: ['O5:O19', 'O23:O42', 'O46:O66', 'O70:O84'],
    resetCellsN: ['N4', 'N22', 'N45', 'N69']
  },
  "Foundation": {
    clearRangesH: ['H5:H10', 'H14:H22', 'H26:H41', 'H45:H55', 'H59:H62'],
    clearRangesO: ['O5:O10', 'O14:O22', 'O26:O41', 'O45:O55', 'O59:O62'],
    resetCellsN: ['N4', 'N13', 'N25', 'N44', 'N58']
  }
};

function clearSelectedSheetFields() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const summarySheet = ss.getSheetByName("Summary Sheet");
  const selectedSheetName = summarySheet.getRange("J4").getValue().trim();

  // 确认弹窗
  const ui = SpreadsheetApp.getUi();
  const response = ui.alert("Reset Confirmation", "Do you want to Clear the Sheets?", ui.ButtonSet.YES_NO);
  if (response === ui.Button.NO) return;

  // 确定需要处理的工作表列表
  let sheetsToProcess = [];
  if (selectedSheetName === "ALL SHEETS") {
    sheetsToProcess = Object.keys(SHEET_CLEAR_CONFIG);
  } else if (SHEET_CLEAR_CONFIG.hasOwnProperty(selectedSheetName)) {
    sheetsToProcess = [selectedSheetName];
  } else {
    ui.alert("Error", "Invalid sheet selected!", ui.ButtonSet.OK);
    return;
  }

  // 遍历处理每个工作表
  sheetsToProcess.forEach(sheetName => {
    const sheet = ss.getSheetByName(sheetName);
    if (!sheet) return;

    // 清空H列指定范围
    SHEET_CLEAR_CONFIG[sheetName].clearRangesH.forEach(range => {
      sheet.getRange(range).setValue('');
    });

    // 重置O列指定范围为false
    SHEET_CLEAR_CONFIG[sheetName].clearRangesO.forEach(range => {
      sheet.getRange(range).setValue(false);
    });

    // 重置N列指定单元格为0.00
    SHEET_CLEAR_CONFIG[sheetName].resetCellsN.forEach(cell => {
      sheet.getRange(cell).setValue(0.00);
    });
  });

  ss.toast(`Amounts have been Reset from ${selectedSheetName}`);
}

使用说明

  1. 删除原有的所有clearXXXfields函数,将上述代码粘贴到Google Apps Script编辑器中
  2. 在Google Sheets界面,将清除按钮的点击事件绑定到clearSelectedSheetFields函数
  3. 后续新增子工作表时,只需在SHEET_CLEAR_CONFIG对象中添加对应工作表的规则配置,无需修改函数逻辑

代码优势

  • 规则集中管理,维护成本低
  • 同时支持单表清除和全表批量清除
  • 消除重复代码,降低出错概率

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 21:27:38