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

Google Sheets技术需求:当日期到达时锁定单元格目标值

实现方案

核心思路

通过Google Apps Script创建定时触发脚本,每日自动检查主表日期:当日期等于当天时,将对应目标值从动态公式转换为静态数值(锁定),后续即使降水数据消失也不会改变;未到当天的日期保留原公式,维持可更新状态,确保临近日期的天气预报能同步更新目标值。

具体步骤

1. 打开脚本编辑器

在你的Google表格中,点击顶部菜单栏「扩展程序」→「Apps Script」,进入脚本编辑界面。

2. 粘贴脚本代码

function lockTargetValues() {
  const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  const mainSheet = spreadsheet.getSheetByName("主表名称"); // 替换为你的第一个标签页实际名称
  const today = new Date();
  today.setHours(0, 0, 0, 0); // 统一时间为当天零点,避免时分秒干扰判断

  // 假设日期在A列、目标值在C列,从第2行开始为数据行,可根据实际列位置调整
  const dateRange = mainSheet.getRange("A2:A" + mainSheet.getLastRow());
  const dates = dateRange.getValues();
  const targetRange = mainSheet.getRange("C2:C" + mainSheet.getLastRow());
  const targetFormulas = targetRange.getFormulas();
  const targetValues = targetRange.getValues();

  // 遍历每行数据,判断并锁定当天的目标值
  for (let i = 0; i < dates.length; i++) {
    const rowDate = dates[i][0];
    if (rowDate instanceof Date) {
      rowDate.setHours(0, 0, 0, 0);
      if (rowDate.getTime() === today.getTime()) {
        if (targetFormulas[i][0]) {
          mainSheet.getRange(i + 2, 3).setValue(targetValues[i][0]);
        }
      }
    }
  }
}

3. 配置定时触发器

  • 在脚本编辑器左侧点击「触发器」图标(闹钟样式);
  • 点击「添加触发器」,按以下配置:
    • 选择运行函数:lockTargetValues
    • 部署类型:「基于时间的触发器」
    • 时间驱动类型:「每天」
    • 执行时间:设置为每日凌晨(如00:00-01:00),确保当天一开始就完成锁定

4. 自定义适配

  • 替换代码中"主表名称"为你第一个标签页的实际名称;
  • 若日期列/目标值列不是A/C列,修改getRange的参数(比如日期在B列则改为"B2:B...",目标值在D列则将getRange(i + 2, 3)改为getRange(i + 2, 4));
  • 首次运行脚本需完成Google授权,按页面提示操作即可。

原理说明

脚本每日自动执行:识别当天日期对应的目标值单元格,将动态公式替换为当前计算出的静态数值,彻底锁定该值;未到当天的单元格保留原INDEX MATCH公式,继续随降水数据更新,兼顾锁定历史值和实时更新临近值的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 07:36:34