מדריך הגדרה למורה

מערכת מבחנים דיגיטלית — שברים וכפל · כיתה ד׳
מה המערכת עושה?

1 יצירת Google Sheet

1. היכנסו ל-Google Sheets

2. לחצו "Blank spreadsheet" (גיליון ריק)

3. שנו את השם ל: תוצאות מבחן — כיתה ד׳

4. שמרו את הגיליון פתוח — נחזור אליו בשלב 3

2 הגדרת Google Apps Script

1. בגיליון שיצרתם, לחצו בתפריט: Extensions → Apps Script

2. ייפתח עורך קוד חדש

3. מחקו את כל הקוד הקיים (בדרך כלל כתוב function myFunction())

4. העתיקו את כל הקוד למטה והדביקו בעורך:

// ===== מערכת מבחנים דיגיטלית — Google Apps Script =====

function doPost(e) {
  try {
    var data = JSON.parse(e.postData.contents);
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

    if (sheet.getLastRow() === 0) {
      var headers = ['חותמת זמן','שם פרטי','שם משפחה','כיתה','ציון','נקודות','סה"כ','זמן'];
      for (var i = 1; i <= 20; i++) {
        headers.push('ש' + i + '-תשובה');
        headers.push('ש' + i + '-נכון?');
        headers.push('ש' + i + '-נק');
      }
      sheet.appendRow(headers);
      var hr = sheet.getRange(1, 1, 1, headers.length);
      hr.setBackground('#2563EB').setFontColor('white').setFontWeight('bold');
      sheet.setFrozenRows(1);
    }

    var row = [
      data.timestamp || new Date().toLocaleString('he-IL'),
      data.firstName || '', data.lastName || '', data.class || '',
      data.score || 0, data.earned || 0, data.total || 0, data.duration || ''
    ];
    for (var i = 1; i <= 20; i++) {
      row.push(data['q' + i] || '');
      row.push(data['q' + i + '_correct'] || '');
      row.push(data['q' + i + '_points'] || 0);
    }

    sheet.appendRow(row);

    var lr = sheet.getLastRow();
    var sc = sheet.getRange(lr, 5);
    var s = parseInt(data.score) || 0;
    if (s >= 85) sc.setBackground('#D1FAE5');
    else if (s >= 60) sc.setBackground('#DBEAFE');
    else sc.setBackground('#FEE2E2');

    if (lr <= 3) sheet.autoResizeColumns(1, 8);

    return ContentService.createTextOutput(JSON.stringify({status:'success'}))
      .setMimeType(ContentService.MimeType.JSON);
  } catch (err) {
    return ContentService.createTextOutput(JSON.stringify({status:'error',message:err.toString()}))
      .setMimeType(ContentService.MimeType.JSON);
  }
}

function doGet(e) {
  return ContentService.createTextOutput(JSON.stringify({status:'ok',message:'API works!'}))
    .setMimeType(ContentService.MimeType.JSON);
}

5. לחצו Ctrl+S (או Cmd+S) לשמירה

6. תנו לפרויקט שם: Exam API

3 פרסום (Deploy)

1. לחצו בתפריט: Deploy → New deployment

2. ליד "Select type" לחצו על גלגל השיניים ובחרו: Web app

3. הגדירו:

  • Description: Exam API v1
  • Execute as: Me
  • Who has access: Anyone

4. לחצו Deploy

5. אשרו הרשאות (Authorize access) — לחצו "Advanced" → "Go to Exam API (unsafe)" → "Allow"

6. העתיקו את ה-URL שמופיע!

חשוב! ה-URL ייראה בערך ככה:
https://script.google.com/macros/s/AKfycbx.../exec
שמרו אותו — תצטרכו אותו בשלב הבא!

4 חיבור למבחן

1. פתחו את הקובץ exam.html בעורך טקסט (Notepad, VS Code, או כל עורך)

2. חפשו את השורה (בערך שורה 360):

var GOOGLE_SCRIPT_URL = '';

3. הדביקו את ה-URL בין הגרשיים:

var GOOGLE_SCRIPT_URL = 'https://script.google.com/macros/s/AKfycbx.../exec';

4. אפשר גם לשנות את קוד המבחן (ברירת מחדל: 1234):

var EXAM_CODE = '1234';  // שנו לכל קוד שתרצו

5. שמרו את הקובץ

5 שיתוף עם תלמידים

אפשרות א׳ — שרת מקומי: פתחו את exam.html בדפדפן במחשב המורה ושתפו את המסך

אפשרות ב׳ — העלאה לאינטרנט:

  • העלו את exam.html ל-GitHub Pages (חינם)
  • או ל-Netlify Drop (גרירה לאתר netlify.com/drop)
  • או לכל שירות אחסון סטטי

אפשרות ג׳ — רשת בית הספר: שימו את הקובץ על שרת בית הספר

ביום המבחן — ספרו לתלמידים:
  1. את הכתובת (URL) של דף המבחן
  2. את קוד המבחן (למשל: 1234)

6 צפייה בתוצאות

פתחו את ה-Google Sheet שיצרתם. תראו:

  • שורה ראשונה (כחולה): כותרות — שם, כיתה, ציון, כל שאלה בנפרד
  • שורות נוספות: כל תלמיד = שורה אחת
  • עמודת ציון: צבע אוטומטי — ירוק (85+), כחול (60-84), אדום (מתחת ל-60)
  • לכל שאלה: התשובה שנתן, V/X, ונקודות שקיבל

טיפים:

  • השתמשו ב-Filter (Data → Create a filter) כדי לסנן לפי כיתה
  • השתמשו ב-Sort כדי למיין לפי ציון
  • הוסיפו AVERAGE בתחתית עמודת הציון לחישוב ממוצע

צ׳קליסט — לפני יום המבחן

שאלות נפוצות

מה קורה אם תלמיד מרענן את הדף באמצע?

המבחן מתאפס והתלמיד צריך להתחיל מחדש. ודאו שהתלמידים יודעים לא לרענן.

מה קורה אם נגמר הזמן?

המבחן נשלח אוטומטית עם מה שהספיקו לענות.

תלמיד יכול לראות תשובות של אחרים?

לא. התלמיד רואה רק את הציון שלו. הפירוט המלא נשלח רק ל-Google Sheet.

אפשר לשנות את השאלות?

כן! ב-exam.html חפשו את var questions = [ ושנו/הוסיפו שאלות. כל שאלה היא אובייקט עם שדות: type (input/choice), points, html, answer, ו-alt (תשובות חלופיות).

כמה תלמידים יכולים להיבחן בו-זמנית?

Google Apps Script מטפל בעד 100 בקשות בו-זמנית. ל-30-50 תלמידים בכיתה זה מספיק בהחלט.