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