شروحات تعليمية April 12, 2026 129 مشاهدة

كيف تحوّل ملف PDF إلى اختبار Google Forms ذاتي التصحيح في 5 دقائق

إعداد اختبارات Google Forms يدويًا يستهلك ساعات لكل فصل. في هذا الدليل، نستخدم Google Apps Script لتوليد اختبار كامل من ملف PDF بسطر أوامر واحد، مع شرح كل سطر من السكربت.

كيف تحوّل ملف PDF إلى اختبار Google Forms ذاتي التصحيح في 5 دقائق

المشكلة: إنشاء الاختبارات يدويًا يستهلك وقت التدريس

كل أستاذ جامعي يعرف هذه المعاناة: تنتهي من تحضير محاضرات الفصل، ثم تواجه مهمة بناء اختبارات قصيرة لكل أسبوع. واجهة Google Forms سهلة، لكنها بطيئة للأعمال المتكررة — كل سؤال يحتاج 4 إلى 5 نقرات، وضبط النقاط لكل سؤال يدويًا، وكتابة التغذية الراجعة لكل خيار.

الحل الذي سنبنيه اليوم يحوّل هذه العملية إلى تشغيل سكربت واحد، والنتيجة: نموذج Google Forms كامل بوضع الاختبار مع التصحيح التلقائي والعلامات حسب الصعوبة.

البرومبت الذي يولّد السكربت تلقائيًا

الصق محتوى ملف PDF التعليمي في أي نموذج ذكاء اصطناعي يدعم رفع الملفات، ثم استخدم البرومبت من هذا الرابط: مولّد اختبارات Google Forms من ملفات PDF تلقائيًا.

الخطوة 1: تحضير المحتوى وتوليد السكربت

افتح أي نموذج ذكاء اصطناعي يدعم رفع ملفات PDF مثل Claude أو ChatGPT. ارفع ملف المحاضرة، ثم الصق البرومبت من البطاقة أعلاه. حدد عدد الأسئلة (الافتراضي 10) وتوزيع الصعوبة (4 سهلة و 4 متوسطة و 2 صعبة).

سيحلل النموذج المحتوى ويستخرج المفاهيم الأساسية، ثم يصنّفها على ثلاثة مستويات: السهلة للتعريفات المباشرة، المتوسطة للتطبيقات والحسابات، والصعبة للتحليل الشرطي والاستنتاج. النتيجة: سكربت JavaScript جاهز للصق.

الخطوة 2: السكربت الكامل

إليك السكربت الكامل (مثال على فصل في الجبر الخطي). سنشرح بعده كل جزء على حدة.

javascript
/**
 * Auto-generated Quiz from PDF
 * Total: 4 sample questions, 7 points
 */
function createQuiz() {
  // 1. إنشاء النموذج وتفعيل وضع الاختبار
  var form = FormApp.create('Linear Algebra Quiz - Chapter 1')
      .setDescription('Quiz on vectors, dot products, and matrix types.')
      .setIsQuiz(true)
      .setCollectEmail(true)
      .setProgressBar(true);

  // 2. بنك الأسئلة كمصفوفة من الكائنات
  var questions = [
    { difficulty: 'Easy', points: 1,
      question: 'What is the dot product of v=(1,2,3) and w=(4,5,6)?',
      options: ['12', '32', '21', '0'],
      correct: 1,
      explanation: '(1)(4)+(2)(5)+(3)(6)=32.' },
    { difficulty: 'Easy', points: 1,
      question: 'What is the length of v=(3,4)?',
      options: ['7', '5', '25', '12'],
      correct: 1,
      explanation: 'sqrt(9+16)=sqrt(25)=5.' },
    { difficulty: 'Medium', points: 2,
      question: 'What is (AB) transpose?',
      options: ['A^T B^T', 'B^T A^T', '(BA)^T', 'AB'],
      correct: 1,
      explanation: 'Transpose reverses order: (AB)^T = B^T A^T.' },
    { difficulty: 'Hard', points: 3,
      question: 'A 3x3 matrix has only 2 nonzero pivots. Then:',
      options: ['A is invertible',
                'Ax=b has unique solution',
                'A is singular; Ax=b has 0 or infinite solutions',
                'A must be symmetric'],
      correct: 2,
      explanation: 'Fewer than n pivots means singular matrix.' }
  ];

  // 3. حلقة لإضافة كل سؤال إلى النموذج
  questions.forEach(function(q, i) {
    var item = form.addMultipleChoiceItem();
    item.setTitle('Q' + (i+1) + ' [' + q.difficulty + ' - ' + q.points + ' pt] ' + q.question);

    var choices = q.options.map(function(opt, j) {
      return item.createChoice(opt, j === q.correct);
    });
    item.setChoices(choices);
    item.setPoints(q.points);
    item.setRequired(true);

    item.setFeedbackForCorrect(
      FormApp.createFeedback().setText('Correct! ' + q.explanation).build()
    );
    item.setFeedbackForIncorrect(
      FormApp.createFeedback().setText('Incorrect. ' + q.explanation).build()
    );
  });

  // 4. طباعة الروابط في السجل
  Logger.log('Edit URL:    ' + form.getEditUrl());
  Logger.log('Public URL:  ' + form.getPublishedUrl());
}

شرح القسم الأول: إنشاء النموذج

السطر FormApp.create() ينشئ نموذجًا جديدًا في Google Drive الخاص بك ويعطيك كائنًا للتحكم به. ثم نستدعي أربع دوال تسلسلية لضبط الخصائص الأساسية.

setIsQuiz(true) هي الأهم — هذه الدالة تحوّل النموذج العادي إلى وضع الاختبار، مما يفعّل تلقائيًا إمكانية تحديد الإجابات الصحيحة والنقاط لكل سؤال. setCollectEmail(true) تطلب من الطلاب تسجيل دخول بحساب Google لمعرفة من أجاب، و setProgressBar(true) تظهر شريط تقدم في أسفل النموذج لتحفيز الطلاب على إكماله.

شرح القسم الثاني: بنك الأسئلة كبيانات منظمة

هنا يكمن جمال هذا التصميم: بدلًا من كتابة كود تكراري لكل سؤال، نخزّن جميع الأسئلة في مصفوفة من الكائنات. كل كائن يحتوي على خمسة حقول واضحة: مستوى الصعوبة، عدد النقاط، نص السؤال، الخيارات الأربعة، فهرس الإجابة الصحيحة من 0 إلى 3، والشرح.

هذا الفصل بين البيانات وهي الأسئلة و المنطق وهو الكود الذي يبنيها في النموذج يجعل تعديل أي سؤال أو إضافة سؤال جديد عملية لصق سطر واحد فقط — لا حاجة لتعديل بنية الكود إطلاقًا.

شرح القسم الثالث: حلقة بناء الأسئلة

دالة questions.forEach() تمر على كل سؤال وتضيفه للنموذج عبر هذه الخطوات.

addMultipleChoiceItem() تنشئ سؤال اختيار من متعدد جديد. setTitle() تضع عنوان السؤال — لاحظ أننا نضيف بادئة مثل Q1 [Easy - 1 pt] لمساعدة الطالب في معرفة وزن السؤال. q.options.map() تحوّل مصفوفة الخيارات النصية إلى كائنات Choice، حيث الشرط j === q.correct يعلّم الخيار الصحيح فقط بـ true.

أهم سطرين هما setPoints(q.points) الذي يضبط النقاط حسب صعوبة السؤال، و setFeedbackForCorrect و setFeedbackForIncorrect اللذان يضيفان رسالة تظهر للطالب بعد التسليم تشرح لماذا الإجابة صحيحة أو خاطئة. هذه التغذية الراجعة الفورية هي ما يحوّل الاختبار من أداة تقييم إلى أداة تعلّم.

شرح القسم الرابع: استخراج روابط النموذج

في النهاية، نستخدم Logger.log() لطباعة رابطين مهمين في سجل تنفيذ السكربت.

getEditUrl() يعطيك رابط التحرير الخاص بك كمؤلف للنموذج — تفتحه لرؤية الأسئلة في واجهة Google Forms وتعديل أي شيء يدويًا. getPublishedUrl() يعطيك الرابط العام الذي تشاركه مع الطلاب — هو رابط التعبئة فقط، لا يمكن للطلاب رؤية أو تعديل الأسئلة من خلاله.

خطوات التشغيل: من السكربت إلى الاختبار الجاهز

أولًا اذهب إلى script.google.com وأنشئ مشروعًا جديدًا. ثانيًا احذف الكود الافتراضي والصق السكربت الذي ولّده الذكاء الاصطناعي. ثالثًا اضغط على زر Save، ثم اضغط Run.

أول مرة فقط ستظهر نافذة طلب الصلاحيات — اضغط Review Permissions ثم اختر حساب Google الخاص بك ووافق على إنشاء وتعديل النماذج. بعد انتهاء التشغيل افتح View ثم Logs أو اضغط Ctrl+Enter لرؤية الرابطين. انسخ الـ Public URL وشاركه مع طلابك — التصحيح يتم تلقائيًا والعلامات تظهر فورًا بعد التسليم.

نصائح متقدمة للأساتذة

إعادة الاستخدام عبر الفصول: احفظ السكربت في مشروع واحد ضمن script.google.com، وعند الفصل القادم اطلب من الذكاء الاصطناعي توليد نسخة موازية بنفس البنية لكن بأسئلة جديدة — هذا يمنع تسريب الإجابات بين الفصول.

ربط النموذج بـ Google Sheets: من واجهة Google Forms اضغط Responses ثم Link to Sheets — كل إجابة طالب ستظهر تلقائيًا في صف جديد، وتستطيع تطبيق صيغ Excel لتحليل الأداء وتحديد الأسئلة الأكثر صعوبة.

توليد نسخ موازية تلقائيًا: أضف معاملًا للسكربت يقلب ترتيب الخيارات في كل تشغيل — هكذا تحصل على نسختين مختلفتين من نفس الاختبار للقاعتين A و B بدون مجهود إضافي.

ابدأ الآن

إذا كنت أستاذًا أو معلمًا، جرّب هذه الطريقة على فصل واحد من مادتك هذا الأسبوع. ستوفر ساعة على الأقل لكل اختبار تنشئه، والأهم: ستحصل على بنية متسقة وقابلة للتكرار طوال الفصل الدراسي.

شارك تجربتك معنا — ما المادة التي طبقت عليها الفكرة؟ كم سؤالًا ولّد لك الذكاء الاصطناعي بشكل صحيح من المحاولة الأولى؟

شارك المقال
شبّك

أعجبك المقال؟ اكتشف المزيد!

تصفح مكتبتنا الشاملة من الأوامر الجاهزة والمقالات المتخصصة في الذكاء الاصطناعي