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

如何用Google App Script生成可自动更新的汽车数据表格

Google Apps Script 实现自动更新的汽车数据表格

以下是满足你需求的完整脚本,使用forEach和Map方法实现,支持每月自动识别新增数据并更新表格格式:

function updateAutomobileTable() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const targetSheet = ss.getSheetByName("汽车数据"); // 替换为你的目标工作表名称
  const rawDataSheet = ss.getSheetByName("原始数据"); // 替换为存储原始数据的工作表名称
  const maxCol = 3;
  const brands = ["Honda", "Audi", "Lexus"];

  // 清除目标工作表原有内容,确保格式统一
  targetSheet.clear();

  // 1. 构建第1行:合并A1:C1并显示Automobile
  const titleRange = targetSheet.getRange(1, 1, 1, maxCol);
  titleRange.merge().setValue("Automobile").setHorizontalAlignment("center");

  // 2. 构建第2行:合并B2:C2并显示Make,A2留空
  const makeRange = targetSheet.getRange(2, 2, 1, maxCol - 1);
  makeRange.merge().setValue("Make").setHorizontalAlignment("center");

  // 3. 填充第3行品牌数据
  brands.forEach((brand, index) => {
    targetSheet.getRange(3, index + 1).setValue(brand);
  });

  // 读取原始数据并映射品牌对应的基础值和价格
  const rawData = rawDataSheet.getDataRange().getValues();
  const carDataMap = new Map();
  // 初始化Map结构
  brands.forEach(brand => carDataMap.set(brand, { baseValue: "", price: "" }));

  // 遍历原始数据,填充Map
  rawData.forEach(row => {
    const [key, value] = row;
    // 处理品牌基础值
    if (brands.includes(key)) {
      carDataMap.get(key).baseValue = value;
    }
    // 处理Price数据,按顺序匹配品牌
    else if (key === "Price") {
      const emptyPriceIndex = Array.from(carDataMap.values()).findIndex(item => item.price === "");
      if (emptyPriceIndex !== -1) {
        const targetBrand = brands[emptyPriceIndex];
        carDataMap.get(targetBrand).price = value;
      }
    }
  });

  // 填充第4行:品牌对应的基础值
  brands.forEach((brand, index) => {
    targetSheet.getRange(4, index + 1).setValue(carDataMap.get(brand).baseValue);
  });

  // 4. 设置第5行为空行(无需额外操作,不填充内容即可)

  // 5. 构建第6行:合并A6:C6并显示Price
  const priceTitleRange = targetSheet.getRange(6, 1, 1, maxCol);
  priceTitleRange.merge().setValue("Price").setHorizontalAlignment("center");

  // 填充第7行:品牌对应的价格
  brands.forEach((brand, index) => {
    targetSheet.getRange(7, index + 1).setValue(carDataMap.get(brand).price);
  });

  // 可选:设置表格列宽优化显示
  targetSheet.setColumnWidths(1, maxCol, 120);
}

代码关键部分说明

  1. 工作表初始化:指定目标表格和原始数据表格的名称,确保脚本能正确读取和写入数据。
  2. 表头格式处理:使用merge()方法合并指定单元格,setHorizontalAlignment("center")设置文字居中,符合格式要求。
  3. 品牌数据填充:通过forEach遍历品牌数组,快速填充第3行的品牌名称。
  4. 原始数据映射:
    • 用Map存储每个品牌的基础值和价格,确保数据关联清晰。
    • 遍历原始数据时,通过includes()判断是否为品牌条目,通过findIndex()匹配未填充价格的品牌,实现Price数据的顺序对应。
  5. 自动更新逻辑:每次运行脚本都会清空目标表格并重新构建,确保新增的原始数据会被自动识别并更新到表格中。

自动触发设置

要实现每月自动更新,设置时间驱动触发器:

  1. 在Google Apps Script编辑器中,点击左侧的「触发器」图标(时钟形状)。
  2. 点击「添加触发器」,设置以下参数:
    • 选择函数:updateAutomobileTable
    • 选择事件源:「时间驱动」
    • 选择基于时间的触发器类型:「月计时器」
    • 设置你需要的每月执行时间(比如每月1号凌晨)
  3. 保存触发器,脚本会每月自动运行并更新表格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 14:45:42