如何使用AppScript拆分考勤应用的逗号分隔文本至表格行?
解决逗号分隔考勤数据拆分到表格多行的问题
直接修改你的AppScript代码,实现将逗号分隔的学生姓名和考勤状态拆分到独立单元格并分行展示:
function doPost(e) { return ceksheet(e); } function ceksheet(e){ var ss = SpreadsheetApp.getActive(); var sh = ss.getSheetByName(e.parameter.SH); //CREATE if (e.parameter.func == "Create") { var ts = e.parameter.TIMESTAMP; var user = e.parameter.USER; var tgl = e.parameter.TANGGAL; var kls = e.parameter.KELAS; var nama = e.parameter.NAMA; var ket = e.parameter.KETERANGAN; var data = false; var lr = sh.getLastRow(); // 检查TIMESTAMP是否已存在 for(var i=1;i<=lr;i++){ var data_ts = sh.getRange(i, 1).getValue(); if(data_ts==ts){ data=true; break; // 找到重复后直接跳出循环,提升效率 } } if (data){ var result= "ID Sudah ada"; }else{ // 拆分逗号分隔的字符串,去除前后空格 var namaArray = nama.split(',').map(item => item.trim()); var ketArray = ket.split(',').map(item => item.trim()); // 检查姓名和状态数量是否匹配 if(namaArray.length !== ketArray.length){ var result = "数据不匹配:NAMA和KETERANGAN数量不一致"; }else{ // 循环添加每一行数据 namaArray.forEach((namaItem, index) => { sh.appendRow([ts, user, tgl, kls, namaItem, ketArray[index]]); }); var result = "Berhasil Input " + namaArray.length + " 条数据"; } } return ContentService.createTextOutput(result).setMimeType(ContentService.MimeType.TEXT); } }
关键修改说明:
- 拆分字符串:使用
split(',')将逗号分隔的NAMA和KETERANGAN拆分为数组,并用map(item => item.trim())去除每个项的前后空格,避免数据中多余的空格影响表格展示。 - 数据一致性检查:添加数组长度校验,确保每个学生都对应一个考勤状态,防止数据错位。
- 循环添加行:遍历拆分后的数组,为每个学生单独添加一行,同时复用
TIMESTAMP、USER、TANGGAL、KELAS这些公共字段。 - 优化重复检查:找到重复的
TIMESTAMP后直接跳出循环,提升代码运行效率。
内容的提问来源于stack exchange,提问作者Mr Irsan
相关产品推荐
相关产品推荐

