แก้ไขการแจ้งเตือนไลน์ ในแบบบันทึกเวลาเรียน


ก่อนหน้านี้ผมได้แจกแอปแบบบันทึกเวลาเรียน (เปิดดู) แล้วมีสมาชิกอยากได้ข้อความในการแจ้งเตือนไลน์โดยเพิ่มสถิติการมาเรียนรายวัน มีการแจ้งชื่อนักเรียนขาดเรียน นักเรียนลาเรียน ผมจึงทำคลิปอธิบายเผื่อบางท่านสามารถนำไปต่อยอดหรือประยุกต์ไปเป็นอย่างอื่นได้

คลิปอธิบาย



ตัวอย่างการแจ้งเตือน 1


หรือแทนที่โค้ดนี้ใน โค้ด.gs

function saveAtd(obj){
  let dateRow = ss.getSheetByName(obj.sheet).getRange('D52:MT52').getDisplayValues()[0]
  let col = dateRow.indexOf(obj.date)+4
 
  !obj.r1 ? obj.r1 = '' : obj.r1;  !obj.r2 ? obj.r2 = '' : obj.r2;  !obj.r3 ? obj.r3 = '' : obj.r3;
  !obj.r4 ? obj.r4 = '' : obj.r4;  !obj.r5 ? obj.r5 = '' : obj.r5;  !obj.r6 ? obj.r6 = '' : obj.r6;
  !obj.r7 ? obj.r7 = '' : obj.r7;  !obj.r8 ? obj.r8 = '' : obj.r8;  !obj.r9 ? obj.r9 = '' : obj.r9;
  !obj.r10 ? obj.r10 = '' : obj.r10;  !obj.r11 ? obj.r11 = '' : obj.r11;  !obj.r12 ? obj.r12 = '' : obj.r12;
  !obj.r13 ? obj.r13 = '' : obj.r13;  !obj.r14 ? obj.r14 = '' : obj.r14;  !obj.r15 ? obj.r15 = '' : obj.r15;
  !obj.r16 ? obj.r16 = '' : obj.r16;  !obj.r17 ? obj.r17 = '' : obj.r17;  !obj.r18 ? obj.r18 = '' : obj.r18;
  !obj.r19 ? obj.r19 = '' : obj.r19;  !obj.r20 ? obj.r20 = '' : obj.r20;  !obj.r21 ? obj.r21 = '' : obj.r21;
  !obj.r22 ? obj.r22 = '' : obj.r22;  !obj.r23 ? obj.r23 = '' : obj.r23;  !obj.r24 ? obj.r24 = '' : obj.r24;
  !obj.r25 ? obj.r25 = '' : obj.r25;  !obj.r26 ? obj.r26 = '' : obj.r26;  !obj.r27 ? obj.r27 = '' : obj.r27;
  !obj.r28 ? obj.r28 = '' : obj.r28;  !obj.r29 ? obj.r29 = '' : obj.r29;  !obj.r30 ? obj.r30 = '' : obj.r30;
  !obj.r31 ? obj.r31 = '' : obj.r31;  !obj.r32 ? obj.r32 = '' : obj.r32;  !obj.r33 ? obj.r33 = '' : obj.r33;
  !obj.r34 ? obj.r34 = '' : obj.r34;  !obj.r35 ? obj.r35 = '' : obj.r35;  !obj.r36 ? obj.r36 = '' : obj.r36;
  !obj.r37 ? obj.r37 = '' : obj.r37;  !obj.r38 ? obj.r38 = '' : obj.r38;  !obj.r39 ? obj.r39 = '' : obj.r39;
  !obj.r40 ? obj.r40 = '' : obj.r40;

  if(obj.hday_text == ''){
    let valueToSave = [[obj.r1],[obj.r2],[obj.r3],[obj.r4],[obj.r5],[obj.r6],[obj.r7],[obj.r8],[obj.r9],[obj.r10],
      [obj.r11],[obj.r12],[obj.r13],[obj.r14],[obj.r15],[obj.r16],[obj.r17],[obj.r18],[obj.r19],[obj.r20],
      [obj.r21],[obj.r22],[obj.r23],[obj.r24],[obj.r25],[obj.r26],[obj.r27],[obj.r28],[obj.r29],[obj.r30],
      [obj.r31],[obj.r32],[obj.r33],[obj.r34],[obj.r35],[obj.r36],[obj.r37],[obj.r38],[obj.r39],[obj.r40],['']]

    ss.getSheetByName(obj.sheet).getRange(6,col,41,1).setValues(valueToSave)
    let stName = ss.getSheetByName(obj.sheet).getRange('B6:B46').getValues().map(row => row[0])

    let come = valueToSave.filter(r => r[0] == '✓').length
    let leave = []
    let miss = []

    for(i = 0; i<stName.length; i++){
      if(valueToSave[i][0] == 'ข'){
        miss.push(stName[i])
      }
    }

    for(i = 0; i<stName.length; i++){
      if(valueToSave[i][0] == 'ล' || valueToSave[i][0] == 'ป'){
        leave.push(stName[i])
      }
    }

  let missAlert = miss.length > 0 ? 'ขาดเรียนวันนี้ : '+miss+'\n' : '';
  let leaveAlert = leave.length > 0 ? 'ลาเรียนวันนี้ : '+leave : '';
   
  if(config[5][5] == 'TRUE' && config[5][8].length == 43){
    var token = config[5][8]
    var msg = "ชั้น "+obj.sheet+" ได้บันทึกการมาเรียนของวันที่ "+obj.date+" เรียบร้อย\n"+
              "มาเรียน "+ come +" คน ขาด "+ miss.length + " คน ลา "+ leave.length + " คน\n"+missAlert+leaveAlert
    //var img = UrlFetchApp.fetch("xxxxxลิ้งค์ภาพxxxxx").getBlob().getAs('image/png');
    sendLine(token,msg) //,img
  }
  }else{
    ss.getSheetByName(obj.sheet).getRange(6,col,41,1).setValues([
      ['丨'],['丨'],['丨'],['丨'],['丨'],['丨'],['丨'],['丨'],['丨'],['丨'],['丨'],['丨'],['丨'],['丨'],['丨'],
      ['丨'],['丨'],['丨'],['丨'],['丨'],['丨'],['丨'],['丨'],['丨'],['丨'],['丨'],['丨'],['丨'],['丨'],['丨'],
      ['丨'],['丨'],['丨'],['丨'],['丨'],['丨'],['丨'],['丨'],['丨'],['丨'],[obj.hday_text]
      ])
  }


  return obj.date
}


ตัวอย่างการแจ้งเตอน 2
โค้ดฟังก์ชั่น saveAtd()

function saveAtd(obj){
  let dateRow = ss.getSheetByName(obj.sheet).getRange('D52:MT52').getDisplayValues()[0]
  let col = dateRow.indexOf(obj.date)+4
 
  !obj.r1 ? obj.r1 = '' : obj.r1;  !obj.r2 ? obj.r2 = '' : obj.r2;  !obj.r3 ? obj.r3 = '' : obj.r3;
  !obj.r4 ? obj.r4 = '' : obj.r4;  !obj.r5 ? obj.r5 = '' : obj.r5;  !obj.r6 ? obj.r6 = '' : obj.r6;
  !obj.r7 ? obj.r7 = '' : obj.r7;  !obj.r8 ? obj.r8 = '' : obj.r8;  !obj.r9 ? obj.r9 = '' : obj.r9;
  !obj.r10 ? obj.r10 = '' : obj.r10;  !obj.r11 ? obj.r11 = '' : obj.r11;  !obj.r12 ? obj.r12 = '' : obj.r12;
  !obj.r13 ? obj.r13 = '' : obj.r13;  !obj.r14 ? obj.r14 = '' : obj.r14;  !obj.r15 ? obj.r15 = '' : obj.r15;
  !obj.r16 ? obj.r16 = '' : obj.r16;  !obj.r17 ? obj.r17 = '' : obj.r17;  !obj.r18 ? obj.r18 = '' : obj.r18;
  !obj.r19 ? obj.r19 = '' : obj.r19;  !obj.r20 ? obj.r20 = '' : obj.r20;  !obj.r21 ? obj.r21 = '' : obj.r21;
  !obj.r22 ? obj.r22 = '' : obj.r22;  !obj.r23 ? obj.r23 = '' : obj.r23;  !obj.r24 ? obj.r24 = '' : obj.r24;
  !obj.r25 ? obj.r25 = '' : obj.r25;  !obj.r26 ? obj.r26 = '' : obj.r26;  !obj.r27 ? obj.r27 = '' : obj.r27;
  !obj.r28 ? obj.r28 = '' : obj.r28;  !obj.r29 ? obj.r29 = '' : obj.r29;  !obj.r30 ? obj.r30 = '' : obj.r30;
  !obj.r31 ? obj.r31 = '' : obj.r31;  !obj.r32 ? obj.r32 = '' : obj.r32;  !obj.r33 ? obj.r33 = '' : obj.r33;
  !obj.r34 ? obj.r34 = '' : obj.r34;  !obj.r35 ? obj.r35 = '' : obj.r35;  !obj.r36 ? obj.r36 = '' : obj.r36;
  !obj.r37 ? obj.r37 = '' : obj.r37;  !obj.r38 ? obj.r38 = '' : obj.r38;  !obj.r39 ? obj.r39 = '' : obj.r39;
  !obj.r40 ? obj.r40 = '' : obj.r40;

  if(obj.hday_text == ''){
    let valueToSave = [[obj.r1],[obj.r2],[obj.r3],[obj.r4],[obj.r5],[obj.r6],[obj.r7],[obj.r8],[obj.r9],[obj.r10],
      [obj.r11],[obj.r12],[obj.r13],[obj.r14],[obj.r15],[obj.r16],[obj.r17],[obj.r18],[obj.r19],[obj.r20],
      [obj.r21],[obj.r22],[obj.r23],[obj.r24],[obj.r25],[obj.r26],[obj.r27],[obj.r28],[obj.r29],[obj.r30],
      [obj.r31],[obj.r32],[obj.r33],[obj.r34],[obj.r35],[obj.r36],[obj.r37],[obj.r38],[obj.r39],[obj.r40],['']]

    ss.getSheetByName(obj.sheet).getRange(6,col,41,1).setValues(valueToSave)
    let stName = ss.getSheetByName(obj.sheet).getRange('B6:B46').getValues().map(row => row[0])

    let come = valueToSave.filter(r => r[0] == '✓').length
    let leave = []
    let miss = []
    let leavNum = 1
    let missNum = 1

    for(i = 0; i<stName.length; i++){
      if(valueToSave[i][0] == 'ข'){
        miss.push((missNum++)+'.'+stName[i]+'\n')
      }
    }

    for(i = 0; i<stName.length; i++){
      if(valueToSave[i][0] == 'ล' || valueToSave[i][0] == 'ป'){
        leave.push((leavNum++)+'.'+stName[i]+'\n')
      }
    }

  let missAlert = miss.length > 0 ? '\nขาดเรียนวันนี้:\n'+miss+'\n' : '';
  let leaveAlert = leave.length > 0 ? 'ลาเรียนวันนี้:\n'+leave : '';
   
  if(config[5][5] == 'TRUE' && config[5][8].length == 43){
    var token = config[5][8]
    var msg = "ชั้น "+obj.sheet+" ได้บันทึกการมาเรียนของวันที่ "+obj.date+" เรียบร้อย\n"+
              "มาเรียน "+ come +" คน ขาด "+ miss.length + " คน ลา "+ leave.length + " คน\n"+missAlert.replaceAll(',','')+leaveAlert.replaceAll(',','')
    //var img = UrlFetchApp.fetch("xxxxxลิ้งค์ภาพxxxxx").getBlob().getAs('image/png');
    sendLine(token,msg) //,img
  }
  }else{
    ss.getSheetByName(obj.sheet).getRange(6,col,41,1).setValues([
      ['丨'],['丨'],['丨'],['丨'],['丨'],['丨'],['丨'],['丨'],['丨'],['丨'],['丨'],['丨'],['丨'],['丨'],['丨'],
      ['丨'],['丨'],['丨'],['丨'],['丨'],['丨'],['丨'],['丨'],['丨'],['丨'],['丨'],['丨'],['丨'],['丨'],['丨'],
      ['丨'],['丨'],['丨'],['丨'],['丨'],['丨'],['丨'],['丨'],['丨'],['丨'],[obj.hday_text]
      ])
  }


  return obj.date
}
แสดงความคิดเห็น (0)
ใหม่กว่า เก่ากว่า