# מדריך חיבור אתר הרישום ל-Google Sheets

כדי שכל הרשמה של תלמיד באתר תישמר באופן אוטומטי ובזמן אמת בגיליון גוגל (Google Sheet) שלך, יש לבצע את השלבים הבאים. התהליך לוקח כ-3 דקות ואינו דורש ידע בתכנות.

---

## שלב א׳: יצירת גיליון גוגל והעתקת הקוד

1. היכנסי לחשבון הגוגל שלך וצרי גיליון אקסל חדש ב-[Google Sheets](https://sheets.new).
2. תני לגיליון שם (לדוגמה: **"רישום למבחני הקבצה במתמטיקה"**).
3. בתפריט העליון, לחצי על **Extensions** (הרחבות) -> ולאחר מכן על **Apps Script**.
4. מחקי את כל הקוד הקיים בעורך שנפתח (שם הקובץ בדרך כלל הוא `Code.gs`).
5. העתיקי והדביקי את קוד ה-JavaScript הבא במלואו:

```javascript
function doPost(e) {
  try {
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    
    // אם הגיליון ריק לחלוטין, ניצור את כותרות העמודות
    if (sheet.getLastRow() === 0) {
      sheet.appendRow([
        "תאריך רישום",
        "שם פרטי",
        "שם משפחה",
        "שכבה",
        "כיתה יעד",
        "הקבצה בכיתה ח׳ (רק לט׳)",
        "הקבצה לשנה הבאה",
        "שם ההורה",
        "טלפון הורה",
        "אימייל הורה",
        "מועד בחינה",
        "קוד אישור רישום"
      ]);
      // עיצוב כותרות בבולד
      sheet.getRange(1, 1, 1, 12).setFontWeight("bold");
    }
    
    var data = JSON.parse(e.postData.contents);
    
    // הוספת שורה חדשה עם נתוני הנרשם
    sheet.appendRow([
      new Date(), // תאריך ושעה
      data.studentFirstName,
      data.studentLastName,
      "שכבה " + data.risingGrade + "׳",
      data.currentClass,
      data.prevLevel || "-",
      data.assignedLevel,
      data.parentName,
      data.parentPhone,
      data.parentEmail,
      "30.08.2026 בשעה 10:00",
      data.confirmationCode
    ]);

    // שליחת אימייל אישור הרשמה אוטומטי להורה ב-HTML מעוצב
    if (data.parentEmail) {
      try {
        var emailBody = 
          "<div style='direction: rtl; text-align: right; font-family: sans-serif; max-width: 600px; margin: 0 auto; border: 2px solid #5f27cd; border-radius: 12px; padding: 24px; background-color: #f7f1e3; color: #2c3e50;'>" +
          "<h2 style='color: #5f27cd;'>אישור הרשמה למבחן המעבר במתמטיקה</h2>" +
          "<p>שלום " + data.parentName + ",</p>" +
          "<p>ההרשמה של " + data.studentFirstName + " למבחן המעבר במתמטיקה בחטיבת הביניים ע״ש דוד בן גוריון הרצליה התקבלה בהצלחה במערכת.</p>" +
          "<hr style='border: 0; border-top: 1px solid #ddd; margin: 20px 0;'>" +
          "<h3>פרטי הרישום שהתקבלו:</h3>" +
          "<table style='width: 100%; border-collapse: collapse; text-align: right; margin-bottom: 20px;'>" +
          "<tr><td style='padding: 8px 0; font-weight: bold; width: 140px;'>שם התלמיד/ה:</td><td>" + data.studentFirstName + " " + data.studentLastName + "</td></tr>" +
          "<tr><td style='padding: 8px 0; font-weight: bold;'>שכבה וכיתה:</td><td>עולה לכיתה " + data.currentClass + "</td></tr>" +
          (data.risingGrade === "ט" ? "<tr><td style='padding: 8px 0; font-weight: bold;'>הקבצה בכיתה ח׳:</td><td>" + data.prevLevel + "</td></tr>" : "") +
          "<tr><td style='padding: 8px 0; font-weight: bold;'>שיבוץ לשנה הבאה:</td><td>" + data.assignedLevel + "</td></tr>" +
          "<tr><td style='padding: 8px 0; font-weight: bold;'>מועד הבחינה:</td><td style='color: #ff4757; font-weight: bold;'>יום ראשון, 30.08.2026 בשעה 10:00 בבוקר</td></tr>" +
          "<tr><td style='padding: 8px 0; font-weight: bold;'>קוד אישור רישום:</td><td style='font-family: monospace; font-weight: bold; color: #5f27cd;'>" + data.confirmationCode + "</td></tr>" +
          "</table>" +
          "<hr style='border: 0; border-top: 1px solid #ddd; margin: 20px 0;'>" +
          "<p><strong>ציוד נדרש:</strong> יש להגיע עם מחשבון וכלי כתיבה (עיפרון, מחק, מרקרים).</p>" +
          "<p><strong>למידה והכנה:</strong> מומלץ מאוד להיעזר בעבודות הקיץ לתרגול לקראת הבחינה. שימו לב כי נושאי הבחינה יכסו את החומר שנלמד השנה בדגש על המחצית השנייה.</p>" +
          "<p>לידיעתכם, ציון המעבר המינימלי הוא 80. הזדמנות נוספת לעליית הקבצה תינתן רק בסוף מחצית א׳.</p>" +
          "<p>אנו מאחלים ל" + data.studentFirstName + " המון בהצלחה במבחן המעבר!</p>" +
          "<p style='margin-top: 30px; font-size: 0.95em; color: #7f8c8d;'>חופשה נעימה ובהצלחה רבה!<br>צוות מתמטיקה, חטיבת הביניים ע״ש דוד בן גוריון, הרצליה</p>" +
          "</div>";
        
        MailApp.sendEmail({
          to: data.parentEmail,
          subject: "אישור הרשמה למבחן המעבר במתמטיקה - " + data.studentFirstName + " " + data.studentLastName,
          htmlBody: emailBody,
          name: "אישור רישום - מבחני עליית הקבצה במתמטיקה",
          replyTo: "no-reply@bengurion.org.il"
        });
      } catch (emailError) {
        console.error("Failed to send confirmation email: " + emailError.toString());
      }
    }
    
    return ContentService.createTextOutput(JSON.stringify({ "status": "success" }))
      .setMimeType(ContentService.MimeType.JSON);
  } catch (error) {
    return ContentService.createTextOutput(JSON.stringify({ "status": "error", "message": error.toString() }))
      .setMimeType(ContentService.MimeType.JSON);
  }
}

// פונקציית doGet להחזרת כל הנרשמים מתוך גיליון ה-Google Sheet
function doGet(e) {
  try {
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    var rows = sheet.getDataRange().getValues();
    
    // אם הגיליון ריק או מכיל רק כותרות
    if (rows.length <= 1) {
      return ContentService.createTextOutput(JSON.stringify({ "status": "success", "data": [] }))
        .setMimeType(ContentService.MimeType.JSON);
    }
    
    var data = [];
    for (var i = 1; i < rows.length; i++) {
      var row = rows[i];
      var record = {};
      
      // מיפוי העמודות חזרה למבנה הנתונים של האתר
      record.timestamp = row[0];
      record.studentName = row[1];
      
      // ניקוי המילה ״שכבה״ והגרש לקבלת ״ח״ או ״ט״
      var gradeStr = String(row[2]);
      record.risingGrade = gradeStr.indexOf("ח") !== -1 ? "ח" : "ט";
      
      record.currentClass = row[3];
      record.prevLevel = row[4];
      record.assignedLevel = row[5];
      record.parentName = row[6];
      record.parentPhone = row[7];
      record.parentEmail = row[8];
      record.examDate = row[9];
      record.confirmationCode = row[10];
      record.id = "reg_" + i + "_" + new Date(row[0]).getTime();
      
      data.push(record);
    }
    
    return ContentService.createTextOutput(JSON.stringify({ "status": "success", "data": data }))
      .setMimeType(ContentService.MimeType.JSON);
  } catch (error) {
    return ContentService.createTextOutput(JSON.stringify({ "status": "error", "message": error.toString() }))
      .setMimeType(ContentService.MimeType.JSON);
  }
}
```

6. לחצי על סמל הדיסקט העליון (**Save project** / שמירה) או הקישי `Cmd + S` / `Ctrl + S`.

---

## שלב ב׳: פרסום הקוד כאפליקציית רשת (Web App)

1. בצד ימין למעלה (או שמאל למעלה, תלוי בשפה), לחצי על הכפתור הכחול **Deploy** (פריסה) -> ובחרי ב-**New deployment** (פריסה חדשה).
2. בחלון שנפתח, לחצי על גלגל השיניים ליד *Select type* ובחרי ב-**Web app** (אפליקציית אינטרנט).
3. מלאי את ההגדרות הבאות (חשוב מאוד לדייק כאן):
   - **Description**: הזיני תיאור קצר (למשל: `Math Placement Web App`).
   - **Execute as**: בחרי ב-**Me** (החשבון שלך - `rachel@example.com...`).
   - **Who has access**: בחרי ב-**Anyone** (כולם - זה מאפשר לאתר לשלוח נתונים לגיליון).
4. לחצי על הכפתור הכחול **Deploy**.
5. *בפעם הראשונה:* גוגל תבקש ממך לאשר הרשאות גישה לגיליון. לחצי על **Authorize Access**, בחרי בחשבון הגוגל שלך, לחצי על קישור ה-**Advanced** (מתקדם) הקטן למטה, ואז על **Go to Untitled project (unsafe)** (או המשך אל הפרויקט). לבסוף, לחצי על **Allow**.
6. לאחר סיום התהליך, יופיע חלון עם כותרת "Deployment successfully created".
7. העתיקי את הקישור שמופיע תחת השדה **Web app URL** (הקישור מסתיים ב-`/exec`).

---

## שלב ג׳: חיבור הקישור לאתר הרישום

1. פתחי את דף הניהול של האתר (`admin.html`) בדפדפן.
2. תחת פאנל **הגדרות סנכרון Google Sheets**, הדביקי את הקישור שהעתקת בשדה "כתובת ה-Web App של Google Sheets".
3. לחצי על **שמור ובדוק חיבור**.
4. המערכת תבדוק את החיבור מול גוגל. במידה והכל תקין, תופיע הודעה ירוקה: **"החיבור ל-Google Sheet תקין ופעיל!"**.
5. זהו! מעכשיו, כל הרשמה דרך האתר תתווסף מיד לטבלה המקומית בדף הניהול וגם תגובה אוטומטית בשורה חדשה בגיליון הגוגל שלך.
