ð āļĢāļ°āļāļāļัāļāļึāļāļุāļāļāļēāļĢāļĻึāļāļĐāļē Scholarship Management System
āļ§ัāļāļี้āļāļāđāļ่āļāļัāļāļีāļāļŦāļึ่āļ Web Application āļŠāļģāļŦāļĢัāļāļāļēāļāđāļāļŠāļāļēāļāļĻึāļāļĐāļē āļืāļ “āļĢāļ°āļāļāļัāļāļึāļāļุāļāļāļēāļĢāļĻึāļāļĐāļē” (Scholarship Management System) āļัāļāļāļēāļ้āļ§āļĒ Google Apps Script + Google Sheets + HTML + CSS + JavaScript āļŠāļēāļĄāļēāļĢāļāļāļģāđāļāļāļĢāļ°āļĒุāļāļ์āđāļ้āļŠāļģāļŦāļĢัāļāļāļēāļāļุāļāļāļēāļĢāļĻึāļāļĐāļēāļāļāļāđāļĢāļāđāļĢีāļĒāļāđāļ้āļัāļāļี
āļĢāļ°āļāļāļāļāļāđāļāļāļĄāļēāđāļื่āļāļ่āļ§āļĒāļĨāļāļāļēāļĢāļัāļāļึāļāļ้āļāļĄูāļĨāđāļāļāļāļĢāļ°āļāļēāļĐ āđāļĨāļ°āļĢāļ§āļāļĢāļ§āļĄāļ้āļāļĄูāļĨāļุāļāļāļēāļĢāļĻึāļāļĐāļēāđāļĨāļ°āļĢāļēāļĒāļื่āļāļัāļāđāļĢีāļĒāļāļู้āđāļ้āļĢัāļāļุāļāđāļ§้āđāļāļĢāļ°āļāļāđāļีāļĒāļ§ āļŠāļēāļĄāļēāļĢāļāđāļิ่āļĄ āđāļ้āđāļ āļĨāļ āļ้āļāļŦāļē āļŠāļĢุāļāļ้āļāļĄูāļĨ āđāļĨāļ°āļัāļāļิāļĄāļ์āļĢāļēāļĒāļāļēāļāđāļ้
✨ āļāļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļāļāļāļāļĢāļ°āļāļ
āļĢāļ°āļāļāļāļĢāļ°āļāļāļāļ้āļ§āļĒāļัāļāļ์āļัāļāļŦāļĨัāļ āđāļ่āļ
ð Dashboard āļŠāļĢุāļāļ้āļāļĄูāļĨāļุāļāļāļēāļĢāļĻึāļāļĐāļē
ð āļัāļāļึāļāļ้āļāļĄูāļĨāļุāļāļāļēāļĢāļĻึāļāļĐāļē
ðĻð āļัāļāļึāļāļĢāļēāļĒāļื่āļāļัāļāđāļĢีāļĒāļāļู้āļĢัāļāļุāļ
✏️ āđāļ้āđāļāļ้āļāļĄูāļĨ
ð️ āļĨāļāļ้āļāļĄูāļĨ
ð āļ้āļāļŦāļēāđāļĨāļ°āļāļĢāļāļāļ้āļāļĄูāļĨ
ð° āļŠāļĢุāļāļāļģāļāļ§āļāđāļิāļāļุāļ
ð āļāļĢāļāļāļāļēāļĄāļีāļāļēāļĢāļĻึāļāļĐāļēāđāļĨāļ°āļ āļēāļāđāļĢีāļĒāļ
ðŦ āļāļĢāļāļāļāļēāļĄāļĢāļ°āļัāļāļั้āļ
ð āļัāļāļāļēāļĢāļĢāļēāļĒāļāļēāļĢāļัāļ§āđāļĨืāļāļāļāļēāļ Google Sheets
⚙️ āļั้āļāļ่āļēāļĢāļ°āļāļāļ่āļēāļāļŦāļ้āļē Settings
ð āļĢāļ°āļāļ Admin āļŠāļģāļŦāļĢัāļāļัāļāļāļēāļĢāļ้āļāļĄูāļĨ
ð Password āļāļģāđāļ§้āđāļāļŦāļ่āļ§āļĒāļāļ§āļēāļĄāļāļģāļĢāļ°āļŦāļ§่āļēāļāđāļ้āļāļēāļ
ð āđāļĄāļูāļĢāļēāļĒāļāļēāļ
ð️ āđāļŠāļāļāļัāļ§āļāļĒ่āļēāļāļĢāļēāļĒāļāļēāļāļāļāļŦāļ้āļēāļāļāļ่āļāļāļิāļĄāļ์
ðĻ️ āļิāļĄāļ์āļĢāļēāļĒāļāļēāļ A4
ð āļุ่āļĄ Google Sheet āđāļāļ Icon
ð āļู่āļĄืāļāļāļēāļĢāđāļ้āļāļēāļāđāļāļāļĨāļ°āđāļีāļĒāļ
ðą Responsive āļĢāļāļāļĢัāļāļāļāļĄāļิāļ§āđāļāļāļĢ์ āđāļ็āļāđāļĨ็āļ āđāļĨāļ°āđāļāļĢāļĻัāļāļ์āļĄืāļāļืāļ
ðĨ️ āļĢูāļāđāļāļāļŦāļ้āļēāļāļ
āļĢāļ°āļāļāļāļāļāđāļāļāļ้āļ§āļĒ Bootstrap 5 āđāļ้āļāļĢูāļāđāļāļ Modern Dashboard
āļāļĢāļ°āļāļāļāļ้āļ§āļĒ
1. Sidebar Menu
āđāļ้āļŠāļģāļŦāļĢัāļāđāļ้āļēāļึāļāļŠ่āļ§āļāļ่āļēāļ āđ āļāļāļāđāļāļĢāđāļāļĢāļĄ āđāļ่āļ
Dashboard
āļุāļāļāļēāļĢāļĻึāļāļĐāļē
āļู้āļĢัāļāļุāļ
āļĢāļēāļĒāļāļēāļ
āļัāļāļāļēāļĢāļัāļ§āđāļĨืāļāļ
āļั้āļāļ่āļēāļĢāļ°āļāļ
Google Sheet
āļู่āļĄืāļ
āļāļāđāļāļĢāļĻัāļāļ์āļĄืāļāļืāļ Sidebar āļŠāļēāļĄāļēāļĢāļāđāļิāļ–āļิāļāđāļ้ āļāļģāđāļŦ้āđāļ้āļāļēāļāļāļāļŦāļ้āļēāļāļāļāļāļēāļāđāļĨ็āļāđāļ้āļŠāļ°āļāļ§āļ
ð Dashboard
āļŦāļ้āļē Dashboard āđāļ้āļŠāļģāļŦāļĢัāļāļูāļ āļēāļāļĢāļ§āļĄāļāļāļāļ้āļāļĄูāļĨ āđāļ่āļ
āļāļģāļāļ§āļāļุāļāļั้āļāļŦāļĄāļ āđāļŠāļāļāļāļģāļāļ§āļāļĢāļēāļĒāļāļēāļĢāļุāļāļāļēāļĢāļĻึāļāļĐāļēāļี่āļĄีāļāļĒู่āđāļāļĢāļ°āļāļ
āļāļģāļāļ§āļāļัāļāđāļĢีāļĒāļāļี่āđāļ้āļĢัāļāļุāļ āđāļŠāļāļāļāļģāļāļ§āļāļู้āļĢัāļāļุāļāļั้āļāļŦāļĄāļ
āļāļāļāļĢāļ°āļĄāļēāļāļุāļ āļāļģāļāļ§āļāļĒāļāļāđāļิāļāļุāļāļāļēāļāļ้āļāļĄูāļĨāļี่āļัāļāļึāļāđāļ§้
āļŠāļāļēāļāļ°āļุāļ āļŠāļēāļĄāļēāļĢāļāļāļģāļ้āļāļĄูāļĨāļĄāļēāđāļŠāļāļāđāļ็āļ Card āļŦāļĢืāļāļāļĢāļēāļāđāļื่āļāļ่āļ§āļĒāđāļŦ้āļู้āļูāđāļĨāļĢāļ°āļāļāđāļŦ็āļāļ āļēāļāļĢāļ§āļĄāđāļ้āļ่āļēāļĒāļึ้āļ
ð āļĢāļ°āļāļāļัāļāļāļēāļĢāļุāļāļāļēāļĢāļĻึāļāļĐāļē
āļŠāļēāļĄāļēāļĢāļāļัāļāļึāļāļĢāļēāļĒāļĨāļ°āđāļีāļĒāļāļāļāļāļุāļ āđāļ่āļ
āļีāļāļēāļĢāļĻึāļāļĐāļē
āļ āļēāļāđāļĢีāļĒāļ
āļื่āļāļุāļāļāļēāļĢāļĻึāļāļĐāļē
āļāļĢāļ°āđāļ āļāļุāļ
āļŦāļ่āļ§āļĒāļāļēāļ/āļู้āđāļŦ้āļุāļ
āļāļģāļāļ§āļāđāļิāļāļ่āļāļāļ
āļāļāļāļĢāļ°āļĄāļēāļāļĢāļ§āļĄ
āļ§ัāļāļี่āđāļĢิ่āļĄāļ้āļ
āļ§ัāļāļี่āļŠิ้āļāļŠุāļ
āđāļื่āļāļāđāļ
āļĢāļēāļĒāļĨāļ°āđāļีāļĒāļ
āļŠāļāļēāļāļ°
āļ้āļāļĄูāļĨāļŠāļēāļĄāļēāļĢāļ āđāļิ่āļĄ / āđāļ้āđāļ / āļĨāļ / āļ้āļāļŦāļē āđāļ้āđāļāļŦāļ้āļēāđāļีāļĒāļ§
ðĻð āļĢāļ°āļāļāļัāļāļึāļāļู้āļĢัāļāļุāļ
āļŠāļģāļŦāļĢัāļāļัāļāļึāļāļĢāļēāļĒāļื่āļāļัāļāđāļĢีāļĒāļāļี่āđāļ้āļĢัāļāļุāļ āđāļāļĒāļŠāļēāļĄāļēāļĢāļāđāļ็āļāļ้āļāļĄูāļĨ āđāļ่āļ
- āđāļĨāļāļāļĢāļ°āļāļģāļัāļ§āļัāļāđāļĢีāļĒāļ
- āļāļģāļāļģāļŦāļ้āļē
- āļื่āļ
- āļāļēāļĄāļŠāļุāļĨ
- āļĢāļ°āļัāļāļั้āļ
- āļŦ้āļāļ
- āļุāļāļāļēāļĢāļĻึāļāļĐāļēāļี่āđāļ้āļĢัāļ
- āļāļģāļāļ§āļāđāļิāļ
- āļ§ัāļāļี่āļāļุāļĄัāļิ
- āļŠāļāļēāļāļ°
- āļŦāļĄāļēāļĒāđāļŦāļุ
āļĢāļ°āļāļāļŠāļēāļĄāļēāļĢāļāđāļื่āļāļĄāđāļĒāļāļ้āļāļĄูāļĨāļู้āļĢัāļāļุāļāļัāļāļ้āļāļĄูāļĨāļุāļāļāļēāļĢāļĻึāļāļĐāļēāđāļ้
ð āđāļĄāļูāļĢāļēāļĒāļāļēāļ
āļุāļāđāļ่āļāļีāļāļŠ่āļ§āļāļŦāļึ่āļāļืāļ āļĢāļ°āļāļāļĢāļēāļĒāļāļēāļāđāļāļ Preview āļ่āļāļāļิāļĄāļ์
āļู้āđāļ้āļŠāļēāļĄāļēāļĢāļāļāļģāļŦāļāļāđāļื่āļāļāđāļ āđāļ่āļ
- āļāļĢāļ°āđāļ āļāļĢāļēāļĒāļāļēāļ
- āļีāļāļēāļĢāļĻึāļāļĐāļē
- āļ āļēāļāđāļĢีāļĒāļ
- āļĢāļ°āļัāļāļั้āļ
- āļุāļāļāļēāļĢāļĻึāļāļĐāļē
- āļŠāļāļēāļāļ°
- āļāļģāļ้āļāļŦāļē
āļāļēāļāļั้āļāļāļ ð️ āđāļŠāļāļāļĢāļēāļĒāļāļēāļ
āļĢāļ°āļāļāļāļ°āļĒัāļāđāļĄ่āļิāļĄāļ์āļัāļāļี āđāļ่āļāļ°āđāļŠāļāļāļĢāļēāļĒāļāļēāļāļāļģāļĨāļāļāđāļāļĢูāļāđāļāļāļāļĢāļ°āļāļēāļĐ A4 āļāļāļŦāļ้āļēāļāļāļ่āļāļ
āļู้āđāļ้āļŠāļēāļĄāļēāļĢāļāļāļĢāļ§āļāļŠāļāļāļāļ§āļēāļĄāļูāļāļ้āļāļāļ่āļāļāļāļ ðĻ️ āļิāļĄāļ์āļĢāļēāļĒāļāļēāļ
āļ่āļ§āļĒāļĨāļāļัāļāļŦāļēāļิāļĄāļ์āļ้āļāļĄูāļĨāļิāļāļŦāļĢืāļāđāļŠีāļĒāļāļĢāļ°āļāļēāļĐāđāļāļĒāđāļĄ่āļāļģāđāļ็āļ
ð āļĢูāļāđāļāļāļĢāļēāļĒāļāļēāļ
āļĢāļ°āļāļāļĢāļāļāļĢัāļāļัāļ§āļāļĒ่āļēāļāļĢāļēāļĒāļāļēāļ 2 āļāļĢāļ°āđāļ āļ
1. āļĢāļēāļĒāļāļēāļāļ้āļāļĄูāļĨāļุāļāļāļēāļĢāļĻึāļāļĐāļē
āļāļĢāļ°āļāļāļāļ้āļ§āļĒ
| āļĨāļģāļัāļ | āļี/āļ āļēāļāđāļĢีāļĒāļ | āļื่āļāļุāļ | āļāļĢāļ°āđāļ āļ | āļู้āđāļŦ้āļุāļ | āļ่āļāļāļ | āļāļāļāļĢāļ°āļĄāļēāļ | āļŠāļāļēāļāļ° |
|---|
āļ้āļēāļĒāļĢāļēāļĒāļāļēāļāļĄีāļāļēāļĢāļāļģāļāļ§āļ āļāļģāļāļ§āļāļุāļāļั้āļāļŦāļĄāļ āđāļĨāļ° āļāļāļāļĢāļ°āļĄāļēāļāļĢāļ§āļĄ āđāļāļĒāļัāļāđāļāļĄัāļิ
2. āļĢāļēāļĒāļāļēāļāļĢāļēāļĒāļื่āļāļู้āļĢัāļāļุāļ
āļāļĢāļ°āļāļāļāļ้āļ§āļĒ
| āļĨāļģāļัāļ | āđāļĨāļāļāļĢāļ°āļāļģāļัāļ§ | āļื่āļ-āļāļēāļĄāļŠāļุāļĨ | āļั้āļ/āļŦ้āļāļ | āļุāļāļāļēāļĢāļĻึāļāļĐāļē | āļāļģāļāļ§āļāđāļิāļ | āļ§ัāļāļี่ | āļŠāļāļēāļāļ° |
|---|
āļ้āļēāļĒāļĢāļēāļĒāļāļēāļāļŠāļĢุāļ
- āļāļģāļāļ§āļāļัāļāđāļĢีāļĒāļ
- āļāļģāļāļ§āļāļู้āđāļ้āļĢัāļāļุāļ
- āļāļģāļāļ§āļāđāļิāļāļĢāļ§āļĄ
āļāļĢ้āļāļĄāļื้āļāļี่āļĨāļāļื่āļāļู้āļัāļāļāļģāđāļĨāļ°āļู้āļāļĢāļ§āļāļŠāļāļ
ð āļĢāļ°āļāļ Login āļŠāļģāļŦāļĢัāļāļู้āļูāđāļĨ
āļŠ่āļ§āļāļี่āđāļี่āļĒāļ§āļ้āļāļāļัāļāļāļēāļĢāđāļ้āđāļāļ้āļāļĄูāļĨāļŠāļēāļĄāļēāļĢāļāļāļģāļŦāļāļāđāļŦ้āļู้āļูāđāļĨāļĢāļ°āļāļ Login āļ่āļāļāđāļ้āļāļēāļ
āļัāļ§āļāļĒ่āļēāļāđāļāļ§āļิāļāļāļēāļĢāļāļĢāļ§āļāļŠāļāļāļĢāļŦัāļŠāļ่āļēāļ
function adminLogin(password) {
const settings = getSettingsObject_();
const correctPassword =
String(settings.AdminPassword || '1234');
if (String(password) !== correctPassword) {
return {
success: false,
message: 'āļĢāļŦัāļŠāļ่āļēāļāđāļĄ่āļูāļāļ้āļāļ'
};
}
const token = Utilities.getUuid();
CacheService
.getScriptCache()
.put(
'ADMIN_' + token,
'1',
21600
);
return {
success: true,
token: token
};
}
āđāļāļ§āļāļēāļāļี้āļ่āļ§āļĒāđāļŦ้āļู้āđāļ้āđāļĄ่āļāļģāđāļ็āļāļ้āļāļāļāļĢāļāļāļĢāļŦัāļŠāļ่āļēāļāđāļŦāļĄ่āļุāļāļāļĢั้āļāļี่āļāļāļัāļāļāļēāļĢāļ้āļāļĄูāļĨāļĢāļ°āļŦāļ§่āļēāļ Session āđāļีāļĒāļ§āļัāļ
ð Google Sheets āđāļ็āļāļāļēāļāļ้āļāļĄูāļĨ
āļ้āļāļีāļāļāļāļĢāļ°āļāļāļี้āļืāļāđāļĄ่āļāļģāđāļ็āļāļ้āļāļāļĄี Server Database āđāļĒāļāļ่āļēāļāļŦāļēāļ
āđāļ้ Google Sheets āđāļ็āļāļāļēāļāļ้āļāļĄูāļĨāđāļāļĒāļāļĢāļ
āļัāļ§āļāļĒ่āļēāļāđāļāļĢāļāļŠāļĢ้āļēāļ Sheet āļี่āļŠāļēāļĄāļēāļĢāļāđāļ้āđāļ้ āđāļ่āļ
Scholarships
Recipients
Options
Settings
āļĢāļ°āļāļāļŠāļēāļĄāļēāļĢāļāļāļĢāļ§āļāļŠāļāļ Sheet āļāļāļāđāļĢิ่āļĄāļ้āļāđāļ้
āļัāļ§āļāļĒ่āļēāļ
function setupSystem() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
createSheetIfNotExists_(
ss,
'Scholarships',
[
'ID',
'AcademicYear',
'Term',
'ScholarshipName',
'ScholarshipType',
'Provider',
'AmountPerStudent',
'TotalBudget',
'StartDate',
'EndDate',
'Condition',
'Status',
'Detail',
'CreatedAt',
'UpdatedAt'
]
);
createSheetIfNotExists_(
ss,
'Recipients',
[
'ID',
'ScholarshipID',
'StudentID',
'Prefix',
'FirstName',
'LastName',
'Level',
'Room',
'Amount',
'ApprovedDate',
'Status',
'Remark',
'CreatedAt',
'UpdatedAt'
]
);
createSheetIfNotExists_(
ss,
'Options',
[
'Type',
'Value',
'SortOrder',
'Active'
]
);
createSheetIfNotExists_(
ss,
'Settings',
[
'Key',
'Value',
'Description'
]
);
return 'Setup completed';
}
⚙️ Sheet : Settings
āļĢāļ°āļāļāđāļ้ Sheet Settings āļŠāļģāļŦāļĢัāļāļāļģāļŦāļāļāļ่āļēāļ่āļēāļ āđ āđāļāļĒāđāļĄ่āļāļģāđāļ็āļāļ้āļāļāđāļ้āļēāđāļāđāļ้ Source Code
āļัāļ§āļāļĒ่āļēāļ
Key Value
------------------------------------------
AppName āļĢāļ°āļāļāļัāļāļึāļāļุāļāļāļēāļĢāļĻึāļāļĐāļē
SchoolName āđāļĢāļāđāļĢีāļĒāļāļัāļ§āļāļĒ่āļēāļāļ§ิāļāļĒāļēāļāļĄ
AdminPassword 1234
LogoURL URL āļĢูāļāđāļĨāđāļ้
GoogleSheetURL URL Google Sheet
Developer āļื่āļāļู้āļัāļāļāļē
DeveloperURL URL āļู้āļัāļāļāļē
āđāļĄื่āļāļ้āļāļāļāļēāļĢāđāļāļĨี่āļĒāļāļื่āļāđāļĢāļāđāļĢีāļĒāļ āļื่āļāļĢāļ°āļāļ āđāļĨāđāļ้ āļŦāļĢืāļāļĨิāļāļ์ Google Sheet āļŠāļēāļĄāļēāļĢāļāđāļ้āļāļēāļāļŦāļ้āļē Settings āđāļ้
ð āļุ่āļĄāđāļิāļ Google Sheet
āļัāļ§āļāļĒ่āļēāļ HTML
<button
type="button"
class="btn btn-success"
onclick="openGoogleSheet()">
<i class="bi bi-file-earmark-spreadsheet-fill"></i>
</button>
JavaScript
function openGoogleSheet() {
const url =
appState.settings.GoogleSheetURL;
if (!url) {
Swal.fire({
icon: 'warning',
title: 'āđāļĄ่āļāļ URL',
text: 'āļāļĢุāļāļēāļāļģāļŦāļāļ GoogleSheetURL āđāļ Settings'
});
return;
}
window.open(
url,
'_blank'
);
}
āļึāļāļŠāļēāļĄāļēāļĢāļāđāļāļĨี่āļĒāļ URL āđāļ้āļāļēāļ Settings āđāļāļĒāđāļĄ่āļ้āļāļāđāļ้ JavaScript āļุāļāļāļĢั้āļ
⏳ Loading Animation
āļĢāļ°āļāļāļĄี Loading Overlay āđāļื่āļāđāļ้āļāļู้āđāļ้āļ§่āļēāļĢāļ°āļāļāļāļģāļĨัāļāļāļĢāļ°āļĄāļ§āļĨāļāļĨ
āļัāļ§āļāļĒ่āļēāļ
function showLoading(message) {
const loading =
document.getElementById('loadingOverlay');
const text =
document.getElementById('loadingText');
if (text) {
text.textContent =
message || 'āļāļģāļĨัāļāļāļĢāļ°āļĄāļ§āļĨāļāļĨ...';
}
if (loading) {
loading.classList.add('show');
}
}
function hideLoading() {
const loading =
document.getElementById('loadingOverlay');
if (loading) {
loading.classList.remove('show');
}
}
āđāļāļāļēāļĢāđāļĢีāļĒāļāļ้āļāļĄูāļĨāđāļ้āļĢูāļāđāļāļ
showLoading('āļāļģāļĨัāļāđāļŦāļĨāļāļ้āļāļĄูāļĨ...');
try {
const data =
await gas(
'getScholarships',
[{}]
);
appState.scholarships = data;
renderScholarships();
} catch (error) {
showError(
error.message
);
} finally {
hideLoading();
}
āļāļēāļĢāđāļ้ finally āļĄีāļāļ§āļēāļĄāļŠāļģāļัāļ āđāļāļĢāļēāļ°āļ่āļ§āļĒāđāļŦ้ Loading āļูāļāļิāļāđāļĄ้āļāļēāļĢāđāļĢีāļĒāļāļ้āļāļĄูāļĨāđāļิāļ Error āļĨāļāļัāļāļŦāļē Loading āļ้āļēāļāļāļāļŦāļ้āļēāļāļ
⚡ āļāļēāļĢāļāļĢัāļāļāļ§āļēāļĄāđāļĢ็āļ§āļāļāļāļĢāļ°āļāļ
āļĢāļ°āļāļāļāļāļāđāļāļāđāļŦ้āđāļĢีāļĒāļāļ้āļāļĄูāļĨ āđāļāļāļēāļ°āļŠ่āļ§āļāļี่āļāļģāđāļ็āļ
āļัāļ§āļāļĒ่āļēāļāđāļ่āļ
āđāļĄื่āļāđāļ้āļē Dashboard āļึāļāđāļŦāļĨāļāļ้āļāļĄูāļĨ Dashboard
āđāļĄื่āļāđāļ้āļēāđāļĄāļูāļĢāļēāļĒāļāļēāļ āļึāļāđāļāļĢีāļĒāļĄāļ้āļāļĄูāļĨāļŠāļģāļŦāļĢัāļāļĢāļēāļĒāļāļēāļ
āđāļĄื่āļāļāļāđāļŠāļāļāļĢāļēāļĒāļāļēāļ āļึāļāđāļĢีāļĒāļ
google.script.run
.withSuccessHandler(function(data) {
renderReportPreview(data);
})
.withFailureHandler(function(error) {
Swal.fire({
icon: 'error',
title: 'āđāļิāļāļ้āļāļิāļāļāļĨāļēāļ',
text: error.message
});
})
.getReportData(filters);
āđāļĄ่āļāļģāđāļ็āļāļ้āļāļāđāļŦāļĨāļāļ้āļāļĄูāļĨāļั้āļāļŦāļĄāļāđāļŦāļĄ่āļุāļāļāļĢั้āļāļี่āđāļāļĨี่āļĒāļāļŦāļ้āļē
ðĻ️ āļัāļ§āļāļĒ่āļēāļāđāļ้āļāļิāļĄāļ์āļĢāļēāļĒāļāļēāļ
āđāļĄื่āļāļŠāļĢ้āļēāļ Preview āđāļĨ้āļ§ āļŠāļēāļĄāļēāļĢāļāļāļģ HTML āļี่āđāļŠāļāļāļāļĒู่āļāļāļŦāļ้āļēāļāļāđāļāļŠāļĢ้āļēāļāļŦāļ้āļēāļิāļĄāļ์āđāļŦāļĄ่
function printReport() {
const preview =
document.getElementById('reportPreview');
if (!preview) {
return;
}
const printWindow =
window.open(
'',
'_blank',
'width=1200,height=800'
);
printWindow.document.write(`
<!DOCTYPE html>
<html lang="th">
<head>
<meta charset="UTF-8">
<title>
āļĢāļēāļĒāļāļēāļāļุāļāļāļēāļĢāļĻึāļāļĐāļē
</title>
<style>
@page {
size: A4 portrait;
margin: 10mm;
}
body {
font-family: 'Sarabun', sans-serif;
font-size: 11px;
}
table {
width: 100%;
border-collapse: collapse;
}
th,
td {
border: 1px solid #444;
padding: 5px;
}
thead {
display: table-header-group;
}
tr {
page-break-inside: avoid;
}
</style>
</head>
<body>
${preview.innerHTML}
<script>
window.onload = function() {
setTimeout(function() {
window.print();
}, 400);
};
<\/script>
</body>
</html>
`);
printWindow.document.close();
}
ð️ āđāļāļĢāļāļŠāļĢ้āļēāļāđāļāļĨ์āđāļāļĢāđāļāļĢāļĄ
āđāļāļĢāđāļ็āļāļ์āđāļ่āļāļāļāļāđāļ็āļ 4 āđāļāļĨ์āļŦāļĨัāļ
Scholarship Management System
│
├── code.gs
│
├── index.html
│
├── javascript.html
│
└── style.html
code.gs
āļāļģāļŦāļ้āļēāļี่āđāļ็āļ Backend āđāļ่āļ
- āļิāļāļ่āļ Google Sheets
- CRUD
- āļāļĢāļ§āļāļŠāļāļāđāļĨāļ°āļŠāļĢ้āļēāļ Sheet
- Login
- Settings
- Options
- Dashboard
- Report
index.html
āđāļ็āļāđāļāļĢāļāļŠāļĢ้āļēāļāļŦāļ้āļēāļāļ āđāļ่āļ
- Sidebar
- Dashboard
- Form
- Table
- Report Preview
- Modal
- Loading
javascript.html
āļāļ§āļĢāļĄีāđāļ็āļ
<script>
// JavaScript āļāļāļāļĢāļ°āļāļ
</script>
āļāļģāļŦāļ้āļēāļี่āļāļ§āļāļุāļĄ
- āļāļēāļĢāđāļāļĨี่āļĒāļāļŦāļ้āļē
- Form
- CRUD
- Loading
- SweetAlert2
- Report
- Settings
style.html
āđāļ้āļŠāļģāļŦāļĢัāļ CSS āļāļāļāļĢāļ°āļāļ āđāļ่āļ
- Dashboard
- Sidebar
- Card
- Responsive
- Loading Animation
- Report A4
- Print Preview
ð āļ§ิāļีāļŠāļĢ้āļēāļāđāļāļĢāđāļāļĢāļĄ
āļั้āļāļāļāļāļี่ 1
āļŠāļĢ้āļēāļ Google Sheets āđāļŦāļĄ่āļŠāļģāļŦāļĢัāļāđāļ้āđāļ็āļāļāļēāļāļ้āļāļĄูāļĨ
āļāļēāļāļั้āļāđāļĨืāļāļ
āļŠ่āļ§āļāļāļĒāļēāļĒ → Apps Script
āļั้āļāļāļāļāļี่ 2
āļŠāļĢ้āļēāļāđāļāļĨ์āļāļģāļāļ§āļ 4 āđāļāļĨ์
code.gs
index.html
javascript.html
style.html
āđāļĨ้āļ§āļāļģ Source Code āļāļāļāđāļ่āļĨāļ°āđāļāļĨ์āđāļāļ§āļēāļāđāļŦ้āļāļĢāļāļัāļ
āļั้āļāļāļāļāļี่ 3
āļĢัāļāļัāļāļ์āļัāļ
setupSystem();
āļāļĢั้āļāđāļĢāļāđāļีāļĒāļāļāļĢั้āļāđāļีāļĒāļ§
Google āļāļ°āļāļāļŠิāļāļิ์āļāļēāļĢāđāļ้āļēāļึāļ Spreadsheet āđāļŦ้āļāļģāđāļิāļāļāļēāļĢāļāļุāļāļēāļ
āļŦāļĨัāļāļāļēāļāļั้āļāļĢāļ°āļāļāļāļ°āļŠāļĢ้āļēāļ Sheet āļี่āļāļģāđāļ็āļāđāļŦ้āļัāļāđāļāļĄัāļิ
āļั้āļāļāļāļāļี่ 4
Deploy āđāļāļĢāđāļāļĢāļĄ
āđāļĨืāļāļ
Deploy → New deployment
āļāļēāļāļั้āļāđāļĨืāļāļ
Type:
Web app
Execute as:
Me
Who has access:
Anyone
āļāļ Deploy
āļāļēāļāļั้āļāļāļģ URL Web App āđāļāđāļิāļāđāļ้āļāļēāļ
ðą āļĢāļāļāļĢัāļāļāļēāļĢāđāļ้āļāļēāļāļāļāļĄืāļāļืāļ
āļŦāļ้āļēāđāļ§็āļāđāļ้ Responsive Layout āļāļģāđāļŦ้āļŠāļēāļĄāļēāļĢāļāđāļ้āļāļēāļāļ่āļēāļ
- Desktop
- Notebook
- Tablet
- Smartphone
āđāļ้āļāļēāļ URL āđāļีāļĒāļ§āļัāļ
āđāļŦāļĄāļēāļ°āļัāļāļĢāļ°āļāļāđāļĢāļāđāļĢีāļĒāļāļี่āļāļĢูāļŦāļĢืāļāđāļ้āļēāļŦāļ้āļēāļี่āļāļēāļāļ้āļāļāļัāļāļึāļāļ้āļāļĄูāļĨāļ่āļēāļāđāļāļĢāļĻัāļāļ์āļĄืāļāļืāļ
ð āļุāļāđāļ่āļāļāļāļāļāļēāļĢāđāļ้ Google Apps Script
āļāļēāļĢāļัāļāļāļēāļĢāļ°āļāļāđāļāļĨัāļāļĐāļāļ°āļี้āđāļŦāļĄāļēāļ°āļัāļāļŠāļāļēāļāļĻึāļāļĐāļē āđāļāļĢāļēāļ°āļŠāļēāļĄāļēāļĢāļāđāļ้āļāļĢิāļāļēāļĢāđāļ Google Workspace āļี่āļĄีāļāļĒู่āđāļĨ้āļ§āļĄāļēāļāļĢāļ°āļĒุāļāļ์āđāļ้
- āđāļĄ่āļ้āļāļāļิāļāļั้āļ Web Server āđāļิ่āļĄ
- āđāļĄ่āļ้āļāļāļŠāļĢ้āļēāļ MySQL Server
- āđāļĨāļ°āļŠāļēāļĄāļēāļĢāļāđāļ้
- Google Sheets āđāļ็āļāļāļēāļāļ้āļāļĄูāļĨ
- āļāļĢ้āļāļĄāļัāļāļāļē Web Application āļ้āļ§āļĒ
- Google Apps Script
āļāļģāđāļŦ้āļŠāļēāļĄāļēāļĢāļāļŠāļĢ้āļēāļāļĢāļ°āļāļāļāļēāļāļāļāļēāļāđāļĨ็āļāļึāļāļāļāļēāļāļāļĨāļēāļāļŠāļģāļŦāļĢัāļāđāļĢāļāđāļĢีāļĒāļāđāļ้āļ่āļāļāļ้āļēāļāļĢāļ§āļāđāļĢ็āļ§
ðĄ āļŠāļēāļĄāļēāļĢāļāļัāļāļāļēāļ่āļāļĒāļāļāļāļ°āđāļĢāđāļ้āļีāļ?
āļĢāļ°āļāļāļัāļāļึāļāļุāļāļāļēāļĢāļĻึāļāļĐāļēāļŠāļēāļĄāļēāļĢāļāđāļิ่āļĄāļāļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļāļ่āļāđāļāđāļ้āļีāļ āđāļ่āļ
- ð· āļĢูāļāļัāļāđāļĢีāļĒāļ
- ð āđāļāļāđāļāļāļŠāļēāļĢāļāļĢāļ°āļāļāļāļāļēāļĢāļāļāļุāļ
- ☁️ āļัāļāđāļŦāļĨāļāđāļāļĨ์āđāļ้āļē Google Drive
- ✍️ āļĨāļēāļĒāđāļ็āļāļĢัāļāđāļิāļāļุāļ
- ð āļŠāļĢ้āļēāļ PDF āļัāļāđāļāļĄัāļิ
- ð āļāļĢāļēāļāļŠāļĢุāļāļุāļāđāļĒāļāļāļēāļĄāļี
- ðŦ āļŠāļĢุāļāļุāļāđāļĒāļāļĢāļ°āļัāļāļั้āļ
- ðĻð āļāļĢāļ°āļ§ัāļิāļāļēāļĢāđāļ้āļĢัāļāļุāļāļĢāļēāļĒāļุāļāļāļĨ
- ð āļĢāļ°āļāļāđāļ้āļāđāļืāļāļ
- ðą LINE Chatbot
- ð§ Email Notification
- ð āđāļĒāļāļŠิāļāļิ์ āļāļĢู / āđāļ้āļēāļŦāļ้āļēāļี่ / āļู้āļāļĢิāļŦāļēāļĢ / Admin
- ð Export Excel / PDF
- ð āļ้āļāļŦāļēāļัāļāđāļĢีāļĒāļāļāļēāļāļāļēāļāļ้āļāļĄูāļĨāļัāļāđāļĢีāļĒāļāļāļāļāđāļĢāļāđāļĢีāļĒāļ
❤️ āļŠāļĢุāļ
Scholarship Management System – āļĢāļ°āļāļāļัāļāļึāļāļุāļāļāļēāļĢāļĻึāļāļĐāļē
āđāļ็āļāļีāļāļŦāļึ่āļāļัāļ§āļāļĒ่āļēāļāļāļāļāļāļēāļĢāļāļģ Google Apps Script āļĄāļēāļāļĢāļ°āļĒุāļāļ์āđāļ้āļัāļāļāļēāļāļāļĢิāļŦāļēāļĢāļัāļāļāļēāļĢāļ āļēāļĒāđāļāļŠāļāļēāļāļĻึāļāļĐāļē āđāļāļĒāļĢāļ§āļāļĢāļ§āļĄāļั้āļāđāļ่āļāļēāļĢāļัāļāļึāļāļุāļ āļัāļāļึāļāļู้āļĢัāļāļุāļ āļāļĢāļ§āļāļŠāļāļāļ้āļāļĄูāļĨ āļŠāļĢุāļāļĒāļāļ āđāļāļāļāļึāļāļāļēāļĢāļัāļāļāļģāļĢāļēāļĒāļāļēāļāđāļĨāļ°āļิāļĄāļ์āđāļāļāļŠāļēāļĢ
āđāļāļ§āļิāļāļŠāļģāļัāļāļืāļ
“āļัāļāļึāļāļāļĢั้āļāđāļีāļĒāļ§ āļ้āļāļŦāļēāđāļ้ āļŠāļĢุāļāđāļ้ āđāļĨāļ°āļิāļĄāļ์āļĢāļēāļĒāļāļēāļāđāļ้āļāļēāļāļĢāļ°āļāļāđāļีāļĒāļ§”
āđāļŦāļĄāļēāļ°āļŠāļģāļŦāļĢัāļāļāļģāđāļāļĻึāļāļĐāļē āļัāļāļāļēāļ่āļ āđāļĨāļ°āļāļĢัāļāđāļŦ้āļāļĢāļāļัāļāļĢูāļāđāļāļāļāļēāļĢāļāļĢิāļŦāļēāļĢāļุāļāļāļēāļĢāļĻึāļāļĐāļēāļāļāļāđāļ่āļĨāļ°āđāļĢāļāđāļĢีāļĒāļ
ðŧ āđāļāļāđāļāđāļĨāļĒีāļี่āđāļ้
Google Apps ScriptGoogle SheetsHTML5CSS3JavaScriptBootstrap 5SweetAlert2Bootstrap Icons
ð āļŦāļĄāļēāļĒāđāļŦāļุ
Source Code āļัāļ§āđāļ็āļĄāļāļāļāļĢāļ°āļāļāļāļĢāļ°āļāļāļāļ้āļ§āļĒ
1. code.gs — Backend / Google Sheets / CRUD / Settings / Report
2. index.html — āļŦāļ้āļē Web Application
3. javascript.html — JavaScript āļั่āļ Client
4. style.html — CSS / Responsive / Dashboard / Print
āļŠāļēāļĄāļēāļĢāļāļāļģāđāļāļĢāļāļŠāļĢ้āļēāļāđāļāļāļĢัāļāđāļ้āļัāļāļĢāļ°āļāļāļāļēāļāļื่āļāđāļāđāļĢāļāđāļĢีāļĒāļāđāļ้ āđāļ่āļ āļĢāļ°āļāļāļุāļāļัāļāļัāļĒāļื้āļāļāļēāļ āļĢāļ°āļāļāļ่āļ§āļĒāđāļŦāļĨืāļāļัāļāđāļĢีāļĒāļ āļĢāļ°āļāļāļŠāļ§ัāļŠāļิāļāļēāļĢ āļŦāļĢืāļāļĢāļ°āļāļāļิāļāļāļēāļĄāļāļēāļĢāļĢัāļāđāļิāļāļŠāļัāļāļŠāļุāļ
#GoogleAppsScript #GoogleSheets #WebApp #āļĢāļ°āļāļāļุāļāļāļēāļĢāļĻึāļāļĐāļē #ScholarshipManagementSystem #āļĢāļ°āļāļāđāļĢāļāđāļĢีāļĒāļ #āļāļĢูāļĒุāļāļิāļิāļัāļĨ #CodingForTeacher #āļĢāļ°āļāļāļŠāļēāļĢāļŠāļāđāļāļĻāđāļĢāļāđāļĢีāļĒāļ #Bootstrap5 #JavaScript
