استبانة تقييم البرنامج التدريبي - دليل الإعداد الكامل

📋 نظرة عامة

نموذج HTML متقدم يرسل البيانات مباشرة إلى Google Sheets باستخدام Google Apps Script


✅ الخطوة 1: إعداد Google Sheet

1.1 إنشاء Google Sheet جديد

  1. اذهب إلى Google Drive
  2. انقر على “New” → “Google Sheets”
  3. أعط الملف اسم: “نتائج استبانة التدريب”

1.2 إنشاء أوراق العمل

انسخ الأسماء التالية كأسماء الأوراق: - Sheet1: responses (لحفظ الاستجابات الخام) - analytics (اختياري - للتحليلات)

1.3 إضافة رؤوس الأعمدة

في الورقة الأولى (responses)، أضف رؤوس الأعمدة التالية في الصف الأول:

التاريخ والوقت | الاسم | الإدارة | المدرسة | المجموعة | جودة المحتوى | الوضوح | تطوير المهارات | التنظيم | المدربون | تقييمات المدربين | ملاحظات المدربين | التدريبات المستقبلية | أكثر جانب أعجب | جوانب التحسين | الاقتراحات | اقتراحات الدعم

⚙️ الخطوة 2: إنشاء Google Apps Script

2.1 فتح Apps Script

  1. في نفس Google Sheet، انقر على “Tools” → “Script editor”
  2. احذف الكود الافتراضي
  3. انسخ الكود التالي بالكامل:
// ==========================================
// استبانة تقييم البرنامج التدريبي
// Google Apps Script
// ==========================================

const SHEET_NAME = 'responses'; // اسم الورقة حيث يتم حفظ البيانات

function doPost(e) {
  try {
    // فك ضغط البيانات المرسلة
    const data = JSON.parse(e.postData.contents);
    
    // الحصول على الورقة
    const sheet = SpreadsheetApp.getActiveSheet();
    
    // معالجة تقييمات المدربين
    let trainersRatings = '';
    if (data.trainer_ratings && typeof data.trainer_ratings === 'object') {
      trainersRatings = Object.entries(data.trainer_ratings)
        .map(([key, value]) => {
          const trainerName = key.replace('rating_', '').replace(/_/g, ' ');
          return `${trainerName}: ${value}/5`;
        })
        .join(' | ');
    }
    
    // إنشاء صف جديد بالبيانات
    const newRow = [
      data.timestamp,
      data.name,
      data.department,
      data.school,
      data.group,
      data.content_quality,
      data.clarity,
      data.skill_development,
      data.organization,
      data.trainers,
      trainersRatings,
      data.trainer_feedback,
      data.future_training,
      data.favorite_aspect,
      data.improvement_areas,
      data.suggestions,
      data.support_suggestions
    ];
    
    // إضافة الصف إلى الورقة
    sheet.appendRow(newRow);
    
    // إرسال بريد تأكيد (اختياري)
    sendConfirmationEmail(data.name, data.email);
    
    // إرسال استجابة نجاح
    return ContentService.createTextOutput(JSON.stringify({
      status: 'success',
      message: 'تم حفظ البيانات بنجاح'
    })).setMimeType(ContentService.MimeType.JSON);
    
  } catch (error) {
    Logger.log('Error: ' + error.toString());
    return ContentService.createTextOutput(JSON.stringify({
      status: 'error',
      message: error.toString()
    })).setMimeType(ContentService.MimeType.JSON);
  }
}

function sendConfirmationEmail(name, email) {
  // اختياري: أرسل بريد تأكيد
  // ألغي التعليق للاستخدام
  /*
  if (email) {
    MailApp.sendEmail(email, 'تأكيد استلام الاستبانة', 
      `مرحباً ${name},\n\nتم استلام استبانتك بنجاح. شكراً لك على تقييمك!`);
  }
  */
}

// دالة اختبار (للتطوير فقط)
function testPost() {
  const testData = {
    timestamp: new Date().toLocaleString('ar-EG'),
    name: 'تجربة',
    department: 'الاختبار',
    school: 'مدرسة',
    group: 'المعادي',
    content_quality: 'ممتاز',
    clarity: 'واضح جدًا',
    skill_development: 'نعم بشكل كبير',
    organization: 'ممتاز',
    trainers: 'إلهام عز العرب محمد',
    trainer_ratings: { rating_إلهام_عز_العرب_محمد: '5' },
    trainer_feedback: 'جيد جداً',
    future_training: 'نعم',
    favorite_aspect: 'الشرح الواضح',
    improvement_areas: 'لا شيء',
    suggestions: 'استمروا',
    support_suggestions: 'دعم جيد'
  };
  
  const result = doPost({
    postData: {
      contents: JSON.stringify(testData)
    }
  });
  
  Logger.log(result.getContent());
}

🔗 الخطوة 3: نشر Google Apps Script

3.1 نشر كـ Web App

  1. انقر على “Deploy” → “New deployment”
  2. اختر النوع: “Web app”
  3. في “Execute as”: اختر حسابك
  4. في “Who has access”: اختر “Anyone”
  5. انقر “Deploy”

3.2 نسخ رابط التطبيق

  1. سيظهر لك رابط التطبيق (Deployment ID)
  2. الصيغة: https://script.google.com/macros/d/{SCRIPT_ID}/usercontent
  3. احفظ هذا الرابط - ستحتاجه قريباً

📝 الخطوة 4: تحديث النموذج بالرابط

4.1 فتح ملف HTML

افتح ملف survey_form.html في محرر نصوص

4.2 ابحث عن السطر:

const GOOGLE_SHEETS_URL = 'https://script.google.com/macros/d/YOUR_SCRIPT_ID/usercontent';

4.3 استبدل YOUR_SCRIPT_ID برقم التطبيق الخاص بك

مثال:

const GOOGLE_SHEETS_URL = 'https://script.google.com/macros/d/1a2B3cDeF4gH5iJ6kL7mN8oP9qR0sT1uV/usercontent';

4.4 احفظ الملف


🚀 الخطوة 5: اختبار النموذج

5.1 اختبار محلي

  1. افتح ملف HTML في المتصفح
  2. ملأ بيانات اختبارية
  3. انقر “إرسال الاستبانة”
  4. يجب أن تظهر رسالة نجاح: “✅ تم حفظ البيانات بنجاح”

5.2 التحقق من البيانات في Google Sheets

  1. عد إلى Google Sheet
  2. تحقق من أن البيانات ظهرت في الورقة
  3. يجب أن ترى صفاً جديداً بالبيانات

📊 الخطوة 6: إضافة تحليلات (اختياري)

6.1 في الورقة الثانية (analytics) أضف:

صيغة عد الاستجابات:

=COUNTA(responses!A:A)-1

حساب المتوسط لجودة المحتوى:

=COUNTIF(responses!F:F,"ممتاز")+COUNTIF(responses!F:F,"جيد جدًا")*0.9+COUNTIF(responses!F:F,"جيد")*0.7

رسم بياني (في Google Sheets):

  1. اختر البيانات
  2. “Insert” → “Chart”
  3. اختر نوع الرسم البياني المناسب

🔄 الخطوة 7: مشاركة النموذج

7.1 طرق المشاركة:

خيار 1: ملف محلي - وضع الملف على USB أو إرسال البريد الإلكتروني

خيار 2: رفع على موقع ويب - استخدام GitHub Pages أو موقع استضافة مجاني

خيار 3: دمج في موقع - استخدام <iframe> في موقعك

مثال iframe:

<iframe 
  src="path/to/survey_form.html" 
  width="100%" 
  height="1200" 
  frameborder="0">
</iframe>

🛠️ استكشاف الأخطاء

المشكلة: البيانات لا تُحفظ

الحلول: 1. تحقق من رابط GOOGLE_SHEETS_URL - تأكد أنه صحيح 2. في Apps Script، انقر على “Executions” للتحقق من الأخطاء 3. تأكد من إعادة النشر بعد تعديل الكود

المشكلة: رسالة CORS error

الحل: - هذا طبيعي مع mode: 'no-cors' - البيانات تُحفظ حتى مع الخطأ - تحقق من Google Sheet للتأكد

المشكلة: الأحرف العربية تظهر غريبة

الحل: - تأكد من الحفظ بصيغة UTF-8 - تحقق من ترميز الملف


📈 خيارات إضافية

إضافة حقول جديدة:

  1. في الورقة: أضف عمود جديد
  2. في Apps Script: أضف المتغير الجديد في newRow
  3. في HTML: أضف الحقل الجديد

البريد الإلكتروني التلقائي:

قم بإلغاء التعليق في دالة sendConfirmationEmail وأضف حقل بريد إلكتروني للنموذج

تصفية البيانات:

في Google Sheets استخدم “Data” → “Create a filter”


🎓 ملاحظات مهمة:

الخصوصية: البيانات محفوظة في Google Sheets الخاص بك ✅ الأمان: استخدام الحسابات الموثوقة من Google ✅ النسخ الاحتياطية: Google Sheets يحتفظ بسجل الإصدارات ✅ الوصول: يمكنك مشاركة Sheet مع فريقك


📞 الدعم والتطوير

للمزيد من الميزات: - إضافة رسوم بيانية متقدمة - تقارير تلقائية بالبريد الإلكتروني - تصدير البيانات إلى PDF - إشعارات فورية للمستجدات


تم إنشاد هذا الدليل بواسطة Claude آخر تحديث: 2026