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

如何用Google Apps Script查找首行匹配日期并复制整行仅粘贴数值

功能实现Google Apps Script代码
function copyTodayColumnValuesOnly() {
  // 获取当前活跃的表格和工作表
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getActiveSheet();
  // 获取第一行所有数据
  const firstRow = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0];
  // 获取今天的日期,清零时分秒避免时间戳差异导致匹配失败
  const today = new Date();
  today.setHours(0, 0, 0, 0);

  // 遍历第一行查找匹配今日日期的列
  for (let i = 0; i < firstRow.length; i++) {
    const cellDate = firstRow[i];
    // 仅判定日期类型的单元格
    if (cellDate instanceof Date) {
      cellDate.setHours(0, 0, 0, 0);
      if (cellDate.getTime() === today.getTime()) {
        // 数组索引从0开始,表格列号从1开始,所以+1得到对应列号
        const targetCol = i + 1;
        // 获取该列从第二行到最后一行的范围(跳过第一行的日期表头)
        const targetRange = sheet.getRange(2, targetCol, sheet.getLastRow() - 1, 1);
        // 仅粘贴数值覆盖原有公式
        targetRange.copyTo(targetRange, SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
        // 找到匹配列后直接退出循环,不需要继续遍历
        break;
      }
    }
  }
}
使用说明
  • 打开目标Google Sheets,点击顶部菜单栏「扩展程序」->「Apps 脚本」进入脚本编辑器
  • 删除编辑器内默认的空白代码,将上述代码完整粘贴后点击顶部保存按钮,自定义项目名称后完成保存
  • 首次运行需要按照系统提示完成授权,允许脚本访问你的表格内容
  • 如果需要每日自动执行该操作,可以在脚本编辑器左侧点击「触发器」,新增触发器时选择上述函数,触发类型设置为「时间驱动」,按需指定每日运行的时间点即可
注意事项
  • 若第一行可能存在多个匹配今日的日期列,删除代码中的break;行即可处理所有匹配的列
  • 若需要将第一行的日期表头也转为数值,可将targetRange的起始行参数从2改为1,行数参数从sheet.getLastRow() - 1改为sheet.getLastRow()
  • 代码默认处理当前活跃工作表,若需要指定固定工作表,可将const sheet = ss.getActiveSheet()修改为const sheet = ss.getSheetByName("你的工作表名称"),替换引号内内容为实际工作表名即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 13:36:05