ضبط الدرجات وتعديلها

يوفّر هذا الدليل أمثلة على الرموز البرمجية المتعلّقة بالتقييم لواجهة برمجة التطبيقات Google Classroom API. اطّلِع على دليل الدرجات للتعرّف على مفاهيم وضع الدرجات في Classroom.

تحديد الدرجات لمهام الطلاب المرسَلة

يحتوي المورد StudentSubmission على حقلَين لتخزين الدرجات: assignedGrade، وهي الدرجة التي يتم إبلاغ الطلاب بها، وdraftGrade، وهي درجة مؤقتة لا تظهر إلا للمعلّمين. يتم تعديل هذه الحقول باستخدام courses.courseWork.studentSubmissions.patch.

Python

studentSubmission = {
  'assignedGrade': 99,
  'draftGrade': 80
}

service.courses().courseWork().studentSubmissions().patch(
    courseId=course_id,
    courseWorkId=coursework_id,
    id=studentsubmission_id,
    updateMask='assignedGrade,draftGrade',
    body=studentSubmission).execute()

Java

classroom/snippets/src/main/java/PatchStudentSubmission.java
StudentSubmission studentSubmission = null;
try {
  // Updating the draftGrade and assignedGrade fields for the specific student submission.
  StudentSubmission content =
      service
          .courses()
          .courseWork()
          .studentSubmissions()
          .get(courseId, courseWorkId, id)
          .execute();
  content.setAssignedGrade(90.00);
  content.setDraftGrade(80.00);

  // The updated studentSubmission object is returned with the new draftGrade and assignedGrade.
  studentSubmission =
      service
          .courses()
          .courseWork()
          .studentSubmissions()
          .patch(courseId, courseWorkId, id, content)
          .set("updateMask", "draftGrade,assignedGrade")
          .execute();

  /* Prints the updated student submission. */
  System.out.printf(
      "Updated student submission draft grade (%s) and assigned grade (%s).\n",
      studentSubmission.getDraftGrade(), studentSubmission.getAssignedGrade());
} catch (GoogleJsonResponseException e) {
  // TODO (developer) - handle error appropriately
  GoogleJsonError error = e.getDetails();
  if (error.getCode() == 404) {
    System.out.printf(
        "The courseId (%s), courseWorkId (%s), or studentSubmissionId (%s) does "
            + "not exist.\n",
        courseId, courseWorkId, id);
  } else {
    throw e;
  }
} catch (Exception e) {
  throw e;
}
return studentSubmission;

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

  • حدِّد draftGrade فقط. ويُعدّ ذلك مفيدًا، على سبيل المثال، للسماح للمعلّم بمراجعة الدرجات يدويًا قبل إكمالها. لا يمكن للطلاب الاطّلاع على مسودات العلامات.

  • امنح كلاً من draftGrade وassignedGrade لتقييم مهمة بالكامل.

قراءة الدرجات المحدّدة

يمكنك إدراج جميع الدرجات لعنصر عمل أكاديمي معيّن من خلال استكشاف عنصر الاستجابة لطريقة courses.courseWork.studentSubmissions.list:

Python

response = coursework.studentSubmissions().list(
    courseId=course_id,
    courseWorkId=coursework_id,
    pageSize=10 # optionally include `pageSize` to restrict the number of student submissions included in the response.
).execute()
submissions.extend(response.get('studentSubmissions', []))

if not submissions:
    print('No student submissions found.')

print('Student Submissions:')

for submission in submissions:
    print(f"Submitted at:"
          f"{(submission.get('userId'), submission.get('assignedGrade'))}")

Java

classroom/snippets/src/main/java/ListStudentSubmissions.java
  ListStudentSubmissionsResponse response =
      service
          .courses()
          .courseWork()
          .studentSubmissions()
          .list(courseId, courseWorkId)
          .setPageToken(pageToken)
          .execute();

  /* Ensure that the response is not null before retrieving data from it to avoid errors. */
  if (response.getStudentSubmissions() != null) {
    studentSubmissions.addAll(response.getStudentSubmissions());
    pageToken = response.getNextPageToken();
  }
} while (pageToken != null);

if (studentSubmissions.isEmpty()) {
  System.out.println("No student submissions found.");
} else {
  for (StudentSubmission submission : studentSubmissions) {
    System.out.printf(
        "User ID %s, Assigned grade: %s\n",
        submission.getUserId(), submission.getAssignedGrade());
  }
}

تحديد الدرجات الإجمالية للدورة التدريبية

لا تسمح واجهة برمجة التطبيقات Classroom API للمطوّرين بقراءة أو كتابة النتيجة الإجمالية للدورة التدريبية، ولكن يمكنك احتسابها آليًا. تقدّم مقالة مركز المساعدة حول إعداد نظام التقييم نصائح حول عملية احتساب الدرجات. يتضمّن المرجع Course حقل gradebookSettings الذي يمكن أن يساعدك في إجراء العمليات الحسابية.

إذا أردت احتساب الدرجة الإجمالية، اطّلِع على بعض الإرشادات للاطّلاع على كيفية إدارة الأعمال الدراسية المتأخرة أو المُعذر عنها أو غير المكتملة.

إدارة حالة ردود الطلاب

قد يكون ردّ الطالب غير مُرسَل أو مُسلَّم أو مُسترَد. يشير حقل الحالة في StudentSubmission إلى الحالة الحالية. لتغيير الحالة، يمكنك استخدام إحدى الطريقتَين التاليتَين:

تقبل جميع هذه الطرق مَعلمة body فارغة، على سبيل المثال:

Python

service.courses().courseWork().studentSubmission().turnIn(
    courseId=course_id,
    courseWorkId=coursework_id,
    id=studentsubmission_id,
    body={}).execute()

Java

classroom/snippets/src/main/java/ReturnStudentSubmission.java
try {
  service
      .courses()
      .courseWork()
      .studentSubmissions()
      .classroomReturn(courseId, courseWorkId, id, null)
      .execute();
} catch (GoogleJsonResponseException e) {
  // TODO (developer) - handle error appropriately
  GoogleJsonError error = e.getDetails();
  if (error.getCode() == 404) {
    System.out.printf(
        "The courseId (%s), courseWorkId (%s), or studentSubmissionId (%s) does "
            + "not exist.\n",
        courseId, courseWorkId, id);
  } else {
    throw e;
  }
} catch (Exception e) {
  throw e;
}

مرفقات الإضافة الخاصة بالدرجات

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