הגדרה ועדכון של ציונים

המדריך הזה מכיל דוגמאות קוד שקשורות למתן ציונים ב-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 שיכול לעזור לכם לבצע את החישובים.

אם אתם רוצים לחשב את הציון הכולל, כדאי לקרוא את הטיפים הבאים כדי להבין איך מנהלים עבודות שהוגשו באיחור, עבודות שהוגשו עם אישור ועבודות שלא הוגשו.

ניהול מצב התשובות של התלמידים

אפשר לבטל את ההגשה של תשובה של תלמיד/ה, להגיש אותה או להחזיר אותה. השדה state ב-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 יכולים להגדיר ציונים לקובצי מצורף ספציפיים בתוספים, ולהגדיר שהציון יהיה גלוי למורים כשהם בודקים את העבודות של התלמידים. למידע נוסף, אפשר לעיין במדריכים בנושא קבצים מצורפים מסוג 'פעילות' והעברת ציונים.