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

求助:编写Google Sheets宏实现数据替换与格式整理

Google Sheets Apps Script 宏实现方案

功能概述

  • 批量整合原表列数据生成指定格式的Subject列
  • 提取Request Date列生成新表的Date列
  • 相比公式方案,脚本一次性读写数据,大幅降低表格卡顿问题

完整脚本代码

function formatTimesheet() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sourceSheet = ss.getSheetByName("原数据表"); // 替换为你的原工作表名称
  const targetSheet = ss.getSheetByName("转换后数据表") || ss.insertSheet("转换后数据表");
  
  // 读取原表数据(跳过表头行)
  const sourceData = sourceSheet.getDataRange().getValues().slice(1);
  if (sourceData.length === 0) return;
  
  // 转换数据格式
  const targetData = sourceData.map(row => {
    const [dept, name, duration, payCode, reqDate] = row;
    // 严格按照要求生成Subject文本
    const subject = `${dept}:${name}(${duration},${payCode})`;
    return [subject, reqDate];
  });
  
  // 写入目标表
  targetSheet.clearContents();
  // 设置表头
  targetSheet.getRange(1, 1, 1, 2).setValues([["Subject", "Date"]]);
  // 写入转换后的数据
  targetSheet.getRange(2, 1, targetData.length, 2).setValues(targetData);
  
  SpreadsheetApp.getUi().alert("数据转换完成!");
}

使用指南

  1. 打开目标Google Sheets,点击「扩展程序」→「Apps脚本」
  2. 删除编辑器中的默认代码,粘贴上述脚本
  3. 将脚本中的"原数据表"替换为你实际的原工作表名称
  4. 点击保存按钮,给脚本命名(例如FormatTimesheet)
  5. 返回表格,点击「扩展程序」→「FormatTimesheet」→「formatTimesheet」,首次运行需完成授权验证

优势说明

  • 一次性读写所有数据,避免公式反复计算导致的表格缓慢
  • 自动生成符合标点要求的Subject内容,无需手动调整格式
  • 自动创建目标工作表(如果不存在),无需提前准备

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 03:05:59