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

如何用Google Apps Script在Google Sheet创建月份下拉并自动更新指定单元格

解决方案:Google Sheet 月份联动自动化设置

步骤1:创建A列月份下拉列表

  • 选中A列(或你需要设置下拉的目标单元格范围)
  • 点击菜单栏「数据」→「数据验证」
  • 在弹出窗口中配置:
    • 条件选择「列表项」
    • 输入月份选项:1月,2月,3月,4月,5月,6月,7月,8月,9月,10月,11月,12月(如果习惯用数字输入,也可以填1,2,3,4,5,6,7,8,9,10,11,12,后续代码对应调整即可)
    • 勾选「显示下拉箭头」,点击「保存」

步骤2:编写Apps Script实现联动逻辑

替换你现有的代码,使用以下带触发事件的脚本:

function onEdit(e) {
  // 获取当前编辑的工作表和单元格
  const activeSheet = e.source.getActiveSheet();
  const editedCell = e.range;

  // 仅处理A列的编辑操作
  if (editedCell.getColumn() === 1) {
    let monthNum;
    const inputVal = editedCell.getValue();
    
    // 中文月份转数字(如果用数字输入可删除这段映射)
    const monthMap = {
      "1月":1, "2月":2, "3月":3, "4月":4, "5月":5, "6月":6,
      "7月":7, "8月":8, "9月":9, "10月":10, "11月":11, "12月":12
    };
    monthNum = monthMap[inputVal] || (typeof inputVal === 'number' && inputVal >=1 && inputVal <=12 ? inputVal : null);

    // 非有效月份则终止执行
    if (!monthNum) return;

    const currentYear = new Date().getFullYear();
    // 计算该月份最后一天:传入下月1号的日期参数,设置日期为0会自动跳转到上月最后一天
    const lastDay = new Date(currentYear, monthNum, 0);
    
    // 更新P8为该月份最后一天
    activeSheet.getRange("P8").setValue(lastDay);
    // 设置L列和M列所有行的值为"1.250",这里取表格最后一行作为范围终点
    const lastRow = activeSheet.getLastRow();
    activeSheet.getRange(`L1:M${lastRow}`).setValue("1.250");
  }
}

脚本说明

  • onEdit(e)是Google Sheet内置的触发函数,表格单元格被编辑时会自动运行
  • 先判断编辑操作是否发生在A列,再将输入的月份转为数字(兼容中文和数字两种输入格式)
  • 利用Date对象特性计算月份最后一天,避免手动判断每月天数
  • 批量设置L、M列的值,比逐个单元格操作更高效

部署提示

  1. 打开目标Google Sheet,点击「扩展程序」→「Apps脚本」
  2. 替换现有代码为上述脚本,点击「保存」并给项目命名
  3. 返回表格编辑A列的月份选项,即可触发自动更新

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 09:01:00