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

Google Apps Script表格录入表单如何根据输入选择对应输出工作表

实现思路
  • 新增字段提取:若你使用单独的月份下拉框,直接读取对应单元格的月份值;若从日期字段提取月份,可通过日期格式化方法得到你需要的月份格式(如Jan、January),需和你预先创建的工作表命名规则完全匹配
  • 拼接目标工作表名称:将读取到的DeviceID与月份值按照你设定的命名规则拼接
  • 校验工作表存在性:调用getSheetByName()方法获取目标工作表后,先判断返回值是否为空,避免命名不匹配导致脚本报错
  • 写入数据:复用现有写入汇总表的逻辑,将相同数据写入匹配到的目标工作表即可,可保留写入汇总表的逻辑作为数据备份
代码修改参考

在你现有submitData()函数中if (validateEntry()==true)的判断内部,原有写入Database的代码之前,新增以下逻辑:

// --------------新增:匹配目标工作表逻辑开始--------------
// 读取DeviceID
const deviceId = shUserForm.getRange("C6").getValue().toString().trim();
let monthStr = "";
/* 二选一使用:
1. 若有单独的月份下拉单元格(示例为C7,需替换为你实际的单元格位置)
monthStr = shUserForm.getRange("C7").getValue().toString().trim();
2. 若从开始日期C8提取月份,下面代码获取3位月份缩写,要全称把'MMM'改为'MMMM'
*/
const startDate = shUserForm.getRange("C8").getValue();
monthStr = Utilities.formatDate(startDate, Session.getScriptTimeZone(), "MMM");

// 拼接工作表名称,需和你预先创建的工作表命名完全一致
const targetSheetName = `${deviceId}-${monthStr}`;
const targetSheet = myGoogleSheet.getSheetByName(targetSheetName);

// 校验工作表是否存在
if (!targetSheet) {
  ui.alert(`未找到对应工作表:${targetSheetName},请确认输入内容或预先创建对应工作表`);
  return;
}
// --------------新增:匹配目标工作表逻辑结束--------------

原有写入Database的代码可保留作为汇总备份,再新增一段写入目标分表的代码即可:

// 写入目标分表
const targetBlankRow = targetSheet.getLastRow() + 1;
targetSheet.getRange(targetBlankRow,1).setValue(shUserForm.getRange("C4").getValue());
targetSheet.getRange(targetBlankRow,2).setValue(deviceId);
targetSheet.getRange(targetBlankRow,3).setValue(startDate);
targetSheet.getRange(targetBlankRow,4).setValue(shUserForm.getRange("C10").getValue());
targetSheet.getRange(targetBlankRow,5).setValue(shUserForm.getRange("C12").getValue());
targetSheet.getRange(targetBlankRow,6).setValue(shUserForm.getRange("C14").getValue());
targetSheet.getRange(targetBlankRow,7).setValue(shUserForm.getRange("C16").getValue());
targetSheet.getRange(targetBlankRow,8).setValue(shUserForm.getRange("C18").getValue());
targetSheet.getRange(targetBlankRow,9).setValue(shUserForm.getRange("C20").getValue());
targetSheet.getRange(targetBlankRow,10).setValue(shUserForm.getRange("C22").getValue());
targetSheet.getRange(targetBlankRow,11).setValue(shUserForm.getRange("C24").getValue());
官方模块指引
  • 日期格式化相关可查阅Utilities.formatDate方法说明,支持自定义各类日期输出格式
  • 工作表、单元格操作可查阅SpreadsheetApp.Sheet类、SpreadsheetApp.Range类的官方说明,包含所有表格操作的参数定义
  • 后续如果需要优化表单下拉选项联动、自动创建缺失的目标工作表,可查阅SpreadsheetApp.DataValidation类、Spreadsheet.insertSheet()方法的相关说明

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 17:24:03