如何用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); }
代码关键部分说明
- 工作表初始化:指定目标表格和原始数据表格的名称,确保脚本能正确读取和写入数据。
- 表头格式处理:使用
merge()方法合并指定单元格,setHorizontalAlignment("center")设置文字居中,符合格式要求。 - 品牌数据填充:通过
forEach遍历品牌数组,快速填充第3行的品牌名称。 - 原始数据映射:
- 用
Map存储每个品牌的基础值和价格,确保数据关联清晰。 - 遍历原始数据时,通过
includes()判断是否为品牌条目,通过findIndex()匹配未填充价格的品牌,实现Price数据的顺序对应。
- 用
- 自动更新逻辑:每次运行脚本都会清空目标表格并重新构建,确保新增的原始数据会被自动识别并更新到表格中。
自动触发设置
要实现每月自动更新,设置时间驱动触发器:
- 在Google Apps Script编辑器中,点击左侧的「触发器」图标(时钟形状)。
- 点击「添加触发器」,设置以下参数:
- 选择函数:
updateAutomobileTable - 选择事件源:「时间驱动」
- 选择基于时间的触发器类型:「月计时器」
- 设置你需要的每月执行时间(比如每月1号凌晨)
- 选择函数:
- 保存触发器,脚本会每月自动运行并更新表格。
内容的提问来源于stack exchange,提问作者Van Latte
相关产品推荐
相关产品推荐

