จัดการงานหลักสูตรและคะแนน

UI ของ Classroom รองรับงานของชั้นเรียน 5 ประเภท ได้แก่ งาน งานแบบทดสอบ คำถามที่ต้องการคำตอบสั้นๆ คำถามแบบหลายตัวเลือก และ เนื้อหา ขณะนี้ Classroom API รองรับประเภทต่อไปนี้ 3 ประเภท ซึ่ง มีชื่อเรียกอีกอย่างว่า CourseWorkType สำหรับ API: Assignments คำตอบแบบสั้น และคำถามแบบหลายตัวเลือก

หากต้องการเข้าถึงฟังก์ชันนี้ คุณสามารถใช้ แหล่งข้อมูลของหลักสูตร ซึ่งแสดงถึงงานหรือคำถามที่มอบหมายให้กับนักเรียนใน หลักสูตรหนึ่งๆ ซึ่งรวมถึงสื่อการเรียนการสอนเพิ่มเติมและรายละเอียด เช่น กำหนดส่ง วันที่หรือคะแนนสูงสุด

นอกเหนือจากทรัพยากรใน CourseWork แล้ว คุณยังจัดการงานที่ทำเสร็จแล้วได้ ที่มีทรัพยากร StudentSubmission ส่วนต่อไปนี้จะอธิบายเกี่ยวกับ ได้อย่างละเอียดยิ่งขึ้น

สร้างงาน

งานสามารถสร้างได้เฉพาะในนามของครูของหลักสูตรเท่านั้นและ การพยายามสร้างงานในหลักสูตรในนามของนักเรียนจะส่งผล ในข้อผิดพลาด 403 PERMISSION_DENIED และผู้ดูแลโดเมนก็ไม่สามารถสร้าง งานสำหรับหลักสูตรที่ตนไม่ได้สอนและพยายามทำผ่าน API ก็จะทำให้เกิดข้อผิดพลาด 403 PERMISSION_DENIED เช่นกัน

เมื่อสร้างงานโดยใช้เมธอด courses.courseWork.create คุณจะทำสิ่งต่อไปนี้ได้ สามารถแนบลิงก์เป็น materials ซึ่งแสดงในโค้ดตัวอย่างด้านล่าง:

Java

classroom/snippets/src/main/java/CreateCourseWork.java
CourseWork courseWork = null;
try {
  // Create a link to add as a material on course work.
  Link articleLink =
      new Link()
          .setTitle("SR-71 Blackbird")
          .setUrl("https://www.lockheedmartin.com/en-us/news/features/history/blackbird.html");

  // Create a list of Materials to add to course work.
  List<Material> materials = Arrays.asList(new Material().setLink(articleLink));

  /* Create new CourseWork object with the material attached.
  Set workType to `ASSIGNMENT`. Possible values of workType can be found here:
  https://developers.google.com/classroom/reference/rest/v1/CourseWorkType
  Set state to `PUBLISHED`. Possible values of state can be found here:
  https://developers.google.com/classroom/reference/rest/v1/courses.courseWork#courseworkstate */
  CourseWork content =
      new CourseWork()
          .setTitle("Supersonic aviation")
          .setDescription(
              "Read about how the SR-71 Blackbird, the world’s fastest and "
                  + "highest-flying manned aircraft, was built.")
          .setMaterials(materials)
          .setWorkType("ASSIGNMENT")
          .setState("PUBLISHED");

  courseWork = service.courses().courseWork().create(courseId, content).execute();

  /* Prints the created courseWork. */
  System.out.printf("CourseWork created: %s\n", courseWork.getTitle());
} catch (GoogleJsonResponseException e) {
  // TODO (developer) - handle error appropriately
  GoogleJsonError error = e.getDetails();
  if (error.getCode() == 404) {
    System.out.printf("The courseId does not exist: %s.\n", courseId);
  } else {
    throw e;
  }
  throw e;
} catch (Exception e) {
  throw e;
}
return courseWork;

Python

classroom/snippets/classroom_create_coursework.py
import google.auth
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError


def classroom_create_coursework(course_id):
  """
  Creates the coursework the user has access to.
  Load pre-authorized user credentials from the environment.
  TODO(developer) - See https://developers.google.com/identity
  for guides on implementing OAuth2 for the application.
  """

  creds, _ = google.auth.default()
  # pylint: disable=maybe-no-member

  try:
    service = build("classroom", "v1", credentials=creds)
    coursework = {
        "title": "Ant colonies",
        "description": """Read the article about ant colonies
                              and complete the quiz.""",
        "materials": [
            {"link": {"url": "http://example.com/ant-colonies"}},
            {"link": {"url": "http://example.com/ant-quiz"}},
        ],
        "workType": "ASSIGNMENT",
        "state": "PUBLISHED",
    }
    coursework = (
        service.courses()
        .courseWork()
        .create(courseId=course_id, body=coursework)
        .execute()
    )
    print(f"Assignment created with ID {coursework.get('id')}")
    return coursework

  except HttpError as error:
    print(f"An error occurred: {error}")
    return error


if __name__ == "__main__":
  # Put the course_id of course whose coursework needs to be created,
  # the user has access to.
  classroom_create_coursework(453686957652)

ผลลัพธ์จะมีตัวระบุที่เซิร์ฟเวอร์กำหนดซึ่งสามารถใช้เพื่ออ้างอิง การมอบหมายในคำขอ API อื่นๆ

หากต้องการรวมสื่อการสอนที่ลิงก์ในงานที่สร้างขึ้นผ่าน Classroom API ให้ทำดังนี้ ใช้ทรัพยากรลิงก์โดยระบุ URL เป้าหมาย Classroom จะดึงข้อมูลชื่อและภาพขนาดย่อโดยอัตโนมัติ นอกจากนี้ Classroom API ยังรองรับเนื้อหาใน Google ไดรฟ์และ YouTube โดยอัตโนมัติซึ่งสามารถ ที่รวมอยู่ในทรัพยากร DriveFile หรือ แหล่งข้อมูลวิดีโอ YouTube ใน

หากต้องการระบุวันที่ครบกำหนด ให้ตั้งค่าช่อง dueDate และ dueTime เป็น ตามเวลา UTC ที่สอดคล้องกัน วันที่ครบกำหนดต้องเป็นวันที่ในอนาคต

เรียกดูงานและคำถาม

คุณสามารถเรียกดูงานและคำถามสำหรับนักเรียนและครูของ หรือโดยผู้ดูแลระบบโดเมน หากต้องการเรียกข้อมูล งานหรือคำถาม ให้ใช้course.courseWork.get วิธีเรียกข้อมูลทั้งหมด งานหรือคำถาม (อาจตรงกับเกณฑ์บางอย่าง) ใช้ courses.courseWork.list.

ขอบเขตที่จำเป็นจะขึ้นอยู่กับบทบาทที่ผู้ใช้ที่ส่งคำขอมีใน หากผู้ใช้เป็นนักเรียน ให้ใช้ขอบเขตอย่างใดอย่างหนึ่งต่อไปนี้

  • https://www.googleapis.com/auth/classroom.coursework.me.readonly
  • https://www.googleapis.com/auth/classroom.coursework.me

หากผู้ใช้เป็นครูหรือผู้ดูแลระบบโดเมน ให้ใช้วิธีใดวิธีหนึ่งต่อไปนี้ ขอบเขต:

  • https://www.googleapis.com/auth/classroom.coursework.students.readonly
  • https://www.googleapis.com/auth/classroom.coursework.students

การมีสิทธิ์ในการเรียกข้อมูลงานหรือคำถามไม่ได้บอกเป็นนัย การอนุญาตให้เข้าถึงสื่อการเรียนการสอนหรือข้อมูลเมตาของเนื้อหา ในทางปฏิบัติหมายความว่า ที่ผู้ดูแลระบบจะไม่เห็นชื่อของไฟล์ในไดรฟ์ที่แนบ ไม่ใช่สมาชิกของหลักสูตรนี้ หากต้องการอนุญาตให้ผู้ดูแลระบบเข้าถึงผู้ใช้ได้ โปรดดูส่วนทั่วทั้งโดเมน การมอบสิทธิ์

จัดการคำตอบของนักเรียน

StudentSubmission ทรัพยากรแสดงถึงงานที่ทำและคะแนนของนักเรียนสำหรับงาน หรือ คำถาม StudentSubmission สำหรับนักเรียนแต่ละคนโดยปริยาย เมื่อมีคำถามหรือ สร้างการมอบหมายแล้ว

ส่วนต่อไปนี้จะอธิบายการดำเนินการทั่วไปที่จัดการคำตอบของนักเรียน

เรียกดูคำตอบของนักเรียน

นักเรียนสามารถเรียกดูงานที่ส่งของตนเอง ครูสามารถเรียกดูงานที่ส่ง สำหรับนักเรียนทุกคนในหลักสูตร และผู้ดูแลระบบโดเมนสามารถเรียกข้อมูล งานของนักเรียนทั้งหมดในโดเมน การส่งงานของนักเรียนแต่ละครั้ง ได้รับมอบหมายตัวระบุ ถ้าคุณทราบตัวระบุ ให้ใช้ courses.courseWork.studentSubmissions.get เพื่อเรียกข้อมูล

ใช้เมธอด courses.courseWork.studentSubmissions.list เพื่อรับ แหล่งข้อมูล StudentSubmission รายการที่ตรงกับเกณฑ์บางรายการ ดังที่แสดงใน ตัวอย่างต่อไปนี้

Java

classroom/snippets/src/main/java/ListSubmissions.java
List<StudentSubmission> studentSubmissions = new ArrayList<>();
String pageToken = null;

try {
  do {
    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 submission found.");
  } else {
    for (StudentSubmission submission : studentSubmissions) {
      System.out.printf(
          "Student id (%s), student submission id (%s)\n",
          submission.getUserId(), submission.getId());
    }
  }
} catch (GoogleJsonResponseException e) {
  // TODO (developer) - handle error appropriately
  GoogleJsonError error = e.getDetails();
  if (error.getCode() == 404) {
    System.out.printf(
        "The courseId (%s) or courseWorkId (%s) does not exist.\n", courseId, courseWorkId);
  } else {
    throw e;
  }
} catch (Exception e) {
  throw e;
}
return studentSubmissions;

Python

classroom/snippets/classroom_list_submissions.py
import google.auth
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError


def classroom_list_submissions(course_id, coursework_id):
  """
  Creates the courses the user has access to.
  Load pre-authorized user credentials from the environment.
  TODO(developer) - See https://developers.google.com/identity
  for guides on implementing OAuth2 for the application.
  """

  creds, _ = google.auth.default()
  # pylint: disable=maybe-no-member
  submissions = []
  page_token = None

  try:
    service = build("classroom", "v1", credentials=creds)
    while True:
      coursework = service.courses().courseWork()
      response = (
          coursework.studentSubmissions()
          .list(
              pageToken=page_token,
              courseId=course_id,
              courseWorkId=coursework_id,
              pageSize=10,
          )
          .execute()
      )
      submissions.extend(response.get("studentSubmissions", []))
      page_token = response.get("nextPageToken", None)
      if not page_token:
        break

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

    print("Student Submissions:")
    for submission in submissions:
      print(
          "Submitted at:"
          f"{(submission.get('id'), submission.get('creationTime'))}"
      )

  except HttpError as error:
    print(f"An error occurred: {error}")
    submissions = None
  return submissions


if __name__ == "__main__":
  # Put the course_id and coursework_id of course whose list needs to be
  # submitted.
  classroom_list_submissions(453686957652, 466086979658)

เรียกดูแหล่งข้อมูล StudentSubmission รายการที่เป็นของนักเรียนคนใดคนหนึ่งโดย ระบุพารามิเตอร์ userId ดังที่แสดงในตัวอย่างต่อไปนี้

Java

classroom/snippets/src/main/java/ListStudentSubmissions.java
List<StudentSubmission> studentSubmissions = new ArrayList<>();
String pageToken = null;

try {
  do {
    // Set the userId as a query parameter on the request.
    ListStudentSubmissionsResponse response =
        service
            .courses()
            .courseWork()
            .studentSubmissions()
            .list(courseId, courseWorkId)
            .setPageToken(pageToken)
            .set("userId", userId)
            .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 submission found.");
  } else {
    for (StudentSubmission submission : studentSubmissions) {
      System.out.printf("Student submission: %s.\n", submission.getId());
    }
  }

Python

classroom/snippets/classroom_list_student_submissions.py
import google.auth
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError


def classroom_list_student_submissions(course_id, coursework_id, user_id):
  """
  Creates the courses the user has access to.
  Load pre-authorized user credentials from the environment.
  TODO(developer) - See https://developers.google.com/identity
  for guides on implementing OAuth2 for the application.
  """

  creds, _ = google.auth.default()
  # pylint: disable=maybe-no-member
  submissions = []
  page_token = None

  try:
    service = build("classroom", "v1", credentials=creds)
    while True:
      coursework = service.courses().courseWork()
      response = (
          coursework.studentSubmissions()
          .list(
              pageToken=page_token,
              courseId=course_id,
              courseWorkId=coursework_id,
              userId=user_id,
          )
          .execute()
      )
      submissions.extend(response.get("studentSubmissions", []))
      page_token = response.get("nextPageToken", None)
      if not page_token:
        break

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

    print("Student Submissions:")
    for submission in submissions:
      print(
          "Submitted at:"
          f"{(submission.get('id'), submission.get('creationTime'))}"
      )

  except HttpError as error:
    print(f"An error occurred: {error}")
  return submissions


if __name__ == "__main__":
  # Put the course_id, coursework_id and user_id of course whose list needs
  # to be submitted.
  classroom_list_student_submissions(453686957652, 466086979658, "me")

ระบบจะระบุตัวนักเรียนด้วยรหัสที่ไม่ซ้ำกันหรืออีเมลของผู้ใช้ ที่แสดงผลโดย Google Admin SDK ผู้ใช้ปัจจุบันอาจอ้างถึง รหัสโดยใช้ชวเลข "me"

นอกจากนี้ยังสามารถรับงานที่นักเรียนส่งสำหรับงานทั้งหมดภายใน ในการดำเนินการดังกล่าว ให้ใช้ "-" ตามตัวอักษรเป็น courseWorkId ดังที่แสดงใน ตัวอย่างต่อไปนี้

Java

service.courses().courseWork().studentSubmissions()
    .list(courseId, "-")
    .set("userId", userId)
    .execute();

Python

service.courses().courseWork().studentSubmissions().list(
    courseId=<course ID or alias>,
    courseWorkId='-',
    userId=<user ID>).execute()

ขอบเขตที่จำเป็นจะขึ้นอยู่กับบทบาทที่ผู้ใช้ที่ส่งคำขอมีใน ใช้ขอบเขตต่อไปนี้หากผู้ใช้เป็นครูหรือโดเมน ผู้ดูแลระบบ:

  • https://www.googleapis.com/auth/classroom.coursework.students.readonly
  • https://www.googleapis.com/auth/classroom.coursework.students

ใช้ขอบเขตต่อไปนี้หากผู้ใช้เป็นนักเรียน

  • https://www.googleapis.com/auth/classroom.coursework.me.readonly
  • https://www.googleapis.com/auth/classroom.coursework.me

การมีสิทธิ์เรียกข้อมูลงานที่นักเรียนส่งไม่ได้บอกเป็นนัย สิทธิ์การเข้าถึงไฟล์แนบหรือข้อมูลเมตาของไฟล์แนบ ในทางปฏิบัติ หมายความว่าผู้ดูแลระบบอาจไม่เห็นชื่อไฟล์แนบในไดรฟ์หาก พวกเขาไม่ใช่สมาชิกของหลักสูตร ถ้าต้องการให้ผู้ดูแลระบบเข้าถึง ในไฟล์ของผู้ใช้ โปรดดูส่วน คำแนะนำเกี่ยวกับการมอบสิทธิ์ทั่วทั้งโดเมน

การเพิ่มไฟล์แนบในคำตอบของนักเรียน

คุณสามารถแนบลิงก์ไปยังงานที่นักเรียนส่งโดยแนบ Link, ทรัพยากร DriveFile หรือ YouTubeVideo คุณสามารถดำเนินการนี้กับ courses.courseWork.studentSubmissions.modifyAttachments ดังที่แสดงใน ตัวอย่างต่อไปนี้

Java

classroom/snippets/src/main/java/ModifyAttachmentsStudentSubmission.java
StudentSubmission studentSubmission = null;
try {
  // Create ModifyAttachmentRequest object that includes a new attachment with a link.
  Link link = new Link().setUrl("https://en.wikipedia.org/wiki/Irrational_number");
  Attachment attachment = new Attachment().setLink(link);
  ModifyAttachmentsRequest modifyAttachmentsRequest =
      new ModifyAttachmentsRequest().setAddAttachments(Arrays.asList(attachment));

  // The modified studentSubmission object is returned with the new attachment added to it.
  studentSubmission =
      service
          .courses()
          .courseWork()
          .studentSubmissions()
          .modifyAttachments(courseId, courseWorkId, id, modifyAttachmentsRequest)
          .execute();

  /* Prints the modified student submission. */
  System.out.printf(
      "Modified student submission attachments: '%s'.\n",
      studentSubmission.getAssignmentSubmission().getAttachments());
} 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;

Python

classroom/snippets/classroom_add_attachment.py
def classroom_add_attachment(course_id, coursework_id, submission_id):
  """
  Adds attachment to existing course with specific course_id.
  Load pre-authorized user credentials from the environment.
  TODO(developer) - See https://developers.google.com/identity
  for guides on implementing OAuth2 for the application.
  """
  creds, _ = google.auth.default()
  # pylint: disable=maybe-no-member
  request = {
      "addAttachments": [
          {"link": {"url": "http://example.com/quiz-results"}},
          {"link": {"url": "http://example.com/quiz-reading"}},
      ]
  }

  try:
    service = build("classroom", "v1", credentials=creds)
    while True:
      coursework = service.courses().courseWork()
      coursework.studentSubmissions().modifyAttachments(
          courseId=course_id,
          courseWorkId=coursework_id,
          id=submission_id,
          body=request,
      ).execute()

  except HttpError as error:
    print(f"An error occurred: {error}")


if __name__ == "__main__":
  # Put the course_id, coursework_id and submission_id of course in which
  # attachment needs to be added.
  classroom_add_attachment("course_id", "coursework_id", "me")

ไฟล์แนบลิงก์จะกำหนดโดย URL เป้าหมาย Classroom จะ ดึงข้อมูลชื่อและภาพขนาดย่อ คุณสามารถเรียนรู้เกี่ยวกับเนื้อหาอื่นๆ ได้ที่ หน้าอ้างอิงที่เกี่ยวข้อง

มีเพียงครูของหลักสูตรหรือโดยผู้ที่แก้ไข StudentSubmission ได้ นักเรียนที่เป็นเจ้าของไฟล์ คุณสามารถแนบ Materials ได้เฉพาะในกรณีต่อไปนี้ CourseWorkType ของงานที่นักเรียนส่งคือ ASSIGNMENT

ขอบเขตที่จำเป็นจะขึ้นอยู่กับบทบาทที่ผู้ใช้ที่ส่งคำขอมีใน ใช้ขอบเขตต่อไปนี้หากผู้ใช้เป็นครู

  • https://www.googleapis.com/auth/classroom.coursework.students

ใช้ขอบเขตต่อไปนี้หากผู้ใช้เป็นนักเรียน

  • https://www.googleapis.com/auth/classroom.coursework.me

จัดการสถานะการตอบกลับของนักเรียน

นักเรียนอาจยกเลิกการส่ง ส่ง หรือส่งคืนคำตอบ ฟิลด์รัฐ ใน StudentSubmission จะระบุสถานะปัจจุบันของ หากต้องการเปลี่ยนสถานะ โปรดโทร วิธีใดวิธีหนึ่งต่อไปนี้

วิธีการเหล่านี้ทั้งหมดมีเนื้อหาว่างเปล่า ตัวอย่าง

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;
}

Python

service.courses().courseWork().studentSubmission().turnIn(
    courseId=<course ID or alias>,
    courseWorkId=<courseWork ID>,
    id=<studentSubmission ID>,
    body={}).execute()

มีเพียงนักเรียนที่เป็นเจ้าของ StudentSubmission เท่านั้นที่จะส่งงานหรือเรียกคืนได้ เฉพาะเนื้อหาที่ส่งแล้วเท่านั้นที่จะอ้างสิทธิ์ซ้ำได้ ครูของหลักสูตรสามารถส่งคืน StudentSubmission ที่อยู่ในสถานะส่ง

ให้คะแนนคำตอบของนักเรียน

แหล่งข้อมูล StudentSubmission มี 2 ช่องสำหรับจัดเก็บคะแนน ได้แก่ assignedGrade ซึ่งเป็นคะแนนที่รายงานให้นักเรียนและ draftGrade ซึ่งเป็นคะแนนเบื้องต้นที่จะปรากฏต่อครูเท่านั้น อัปเดตช่องเหล่านี้แล้ว ที่ใช้ courses.courseWork.studentSubmissions.patch กับมาสก์ของช่อง มีฟิลด์ที่เหมาะสม ดังที่แสดงในตัวอย่างต่อไปนี้

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;

Python

studentSubmission = {
  'assignedGrade': 99,
  'draftGrade': 80
}
service.courses().courseWork().studentSubmissions().patch(
    courseId=<course ID or alias>,
    courseWorkId=<courseWork ID>,
    id=<studentSubmission ID>,
    updateMask='assignedGrade,draftGrade',
    body=studentSubmission).execute()

เมื่อใช้ UI ของ Classroom ครูจะมอบหมายคะแนนไม่ได้จนกว่าจะ บันทึกคะแนนคร่าวๆ ไว้ก่อนแล้ว คะแนนที่ได้รับมอบหมายสามารถส่งคืนให้กับ นักเรียนคนหนึ่ง แอปพลิเคชันต้องจำลองลักษณะการทำงานนี้ แอปพลิเคชันของคุณสามารถ ให้คะแนนงานของนักเรียนได้ 2 วิธี ดังนี้

  • มอบหมายเพียง draftGrade ซึ่งจะเป็นประโยชน์ เช่น ในการช่วยให้ครู ตรวจสอบคะแนนด้วยตนเองก่อนสรุป นักเรียนจะดูคะแนนคร่าวๆ ไม่ได้

  • มอบหมายทั้ง draftGrade และ assignedGrade เพื่อให้คะแนนงานอย่างสมบูรณ์

แสดงรายการคะแนนที่มอบหมาย

คุณจะระบุคะแนนทั้งหมดของการบ้านและรายงานหนึ่งๆ ได้โดยการสำรวจ ออบเจ็กต์คำตอบของเมธอด courses.courseWork.studentSubmissions.list:

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());
  }
}

Python

response = coursework.studentSubmissions().list(
    courseId=course_id,
    courseWorkId=coursework_id,
    pageSize=10).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'))}")