Online quizzes & printable practice papers — for modern schools
System administration access
Default: admin / Admin@123 — change after first login
Welcome back,
Good day,
Supports CSV (UTF-8), Excel (.xlsx), JSON
Build print-ready question papers, answer keys & OMR sheets from your Question Bank.
—
RolePlatform summary and quick actions
Design your certificate in Google Slides using the placeholder tags below, then share it (Anyone with link → Viewer) and paste the URL or ID here.
Deploy the GAS script (provided below) in your Google account. Paste the deployed Web App URL here — Mss ExamPro will call it when generating a certificate.
Type these tags exactly inside your Google Slide. Mss ExamPro replaces them with real values when generating each student's certificate.
{{STUDENT_NAME}}
Student's full name
{{QUIZ_TITLE}}
Quiz / exam name
{{SCORE}}
Score obtained (e.g. 45)
{{TOTAL_MARKS}}
Maximum marks (e.g. 50)
{{PERCENTAGE}}
Score percentage (e.g. 90%)
{{RANK}}
Quiz rank (e.g. #3)
{{DATE}}
Certificate issue date
{{SCHOOL_NAME}}
School / organization name
{{TEACHER_NAME}}
Issuing teacher's name
{{CERT_ID}}
Unique certificate ID
{{PLACEHOLDER}} tags above exactly as shown.Code.gs with the script below.TEMPLATE_ID = your presentation ID.// पढ़ाई से प्रतियोगिता तक — Google Slides Certificate Generator
// ─────────────────────────────────────────────────────
// SETUP: In Script Properties (⚙ Project settings → Script Properties)
// add: TEMPLATE_ID = your-slide-presentation-id
// DEPLOY: Web App | Execute as: Me | Access: Anyone
// ─────────────────────────────────────────────────────
const QSP_TAGS = {
'{{STUDENT_NAME}}': 'student_name',
'{{QUIZ_TITLE}}': 'quiz_title',
'{{SCORE}}': 'score',
'{{TOTAL_MARKS}}': 'total_marks',
'{{PERCENTAGE}}': 'percentage',
'{{RANK}}': 'rank',
'{{DATE}}': 'date',
'{{SCHOOL_NAME}}': 'school_name',
'{{TEACHER_NAME}}': 'teacher_name',
'{{CERT_ID}}': 'cert_id',
};
function doGet(e) {
try {
const p = e.parameter || {};
// Ping / health check
if (p.action === 'ping') {
return json({ ok: true, msg: 'Mss ExamPro GAS connected ✅' });
}
const templateId = PropertiesService.getScriptProperties()
.getProperty('TEMPLATE_ID');
if (!templateId) return jsonErr('TEMPLATE_ID not set in Script Properties');
// Copy the template presentation
const copy = DriveApp.getFileById(templateId)
.makeCopy('QSP_CERT_' + (p.cert_id || Date.now()));
const pres = SlidesApp.openById(copy.getId());
// Replace all placeholder tags on every slide
pres.getSlides().forEach(slide => {
Object.entries(QSP_TAGS).forEach(([tag, param]) => {
slide.replaceAllText(tag, p[param] || '');
});
});
pres.saveAndClose();
// Export presentation as PDF
const pdfBlob = DriveApp.getFileById(copy.getId())
.getAs('application/pdf');
const pdfFile = DriveApp.getRootFolder().createFile(pdfBlob);
pdfFile.setSharing(DriveApp.Access.ANYONE, DriveApp.Permission.VIEW);
// Trash the intermediate Slides copy (PDF is kept)
copy.setTrashed(true);
return json({
success: true,
pdfUrl: 'https://drive.google.com/file/d/' + pdfFile.getId() + '/view',
fileId: pdfFile.getId(),
});
} catch (err) {
return jsonErr(err.message);
}
}
function json(obj) {
return ContentService
.createTextOutput(JSON.stringify(obj))
.setMimeType(ContentService.MimeType.JSON);
}
function jsonErr(msg) {
return json({ success: false, error: msg });
}