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

如何使用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);
  }
}

关键修改说明:

  1. 拆分字符串:使用split(',')将逗号分隔的NAMA和KETERANGAN拆分为数组,并用map(item => item.trim())去除每个项的前后空格,避免数据中多余的空格影响表格展示。
  2. 数据一致性检查:添加数组长度校验,确保每个学生都对应一个考勤状态,防止数据错位。
  3. 循环添加行:遍历拆分后的数组,为每个学生单独添加一行,同时复用TIMESTAMP、USER、TANGGAL、KELAS这些公共字段。
  4. 优化重复检查:找到重复的TIMESTAMP后直接跳出循环,提升代码运行效率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 22:52:41