Создавайте вложения за пределами Google Classroom

В этом руководстве рассматривается создание дополнительных вложений на вашем веб-сайте или в приложении. Взаимодействие аналогично созданию заданий с использованием конечных точек API CourseWork . Реализуйте этот процесс, чтобы пользователи могли создавать дополнительные вложения прямо с вашего веб-сайта или из приложения.

Рабочий процесс

В общих чертах, процесс создания вложения выглядит следующим образом:

  1. Учитель открывает ваш веб-сайт или приложение. Он выбирает фрагмент контента, который затем назначает своим ученикам.
  2. Убедитесь, что пользователь может создавать дополнительные вложения .
  3. Если пользователь не может создавать дополнительные вложения, создайте задание «Курсовая работа», указав URL-адрес выбранного контента в качестве ссылки.
  4. Если пользователь имеет возможность создавать дополнительные вложения, выполните следующие действия:
    1. Создайте задание.
    2. Создайте дополнительный файл, который будет ссылаться на выбранный контент, и свяжите его с новым заданием.
  5. Сообщите учителю, что задание успешно создано.

Каждое действие описано в следующих разделах.

Проверьте, может ли пользователь создавать дополнительные вложения.

Вы можете создавать дополнительные вложения от имени пользователя, соответствующего установленным критериям. К таким пользователям относится преподаватель курса, в котором вы пытаетесь создать задания CourseWork, и у которого есть лицензия Google Workspace for Education Edition Teaching & Learning или Education Plus.

Для начала определите, может ли пользователь создавать дополнительные вложения. Это можно сделать, отправив запрос к конечной точке userProfiles.checkUserCapability с параметром CREATE_ADD_ON_ATTACHMENT . Проверьте логическое поле allowed в ответе; значение true указывает на то, что пользователь имеет право создавать дополнительные вложения.

Python

eligibility_response = (
  classroom_service.userProfiles()
  .checkUserCapability(
    userId="me",
    capability="CREATE_ADD_ON_ATTACHMENT",
    # The previewVersion is necessary while the method is available in the
    # Workspace Developer Preview Program.
    previewVersion="V1_20240930_PREVIEW",
  ).execute()
)
is_create_attachment_eligible = (
  eligibility_response.get('allowed')
)
print('User eligibility for add-on attachment creation: '
      f'{is_create_attachment_eligible}.')

Направьте пользователя по маршруту в зависимости от его соответствия критериям.

Право на участие определяет, сможете ли вы создавать дополнительные вложения для пользователя.

Не имеющий права пользователь

Если пользователь не может создавать дополнительные вложения, создайте новое задание CourseWork , указав URL-адрес выбранного пользователем контента в качестве Link .

Python

if not is_create_attachment_eligible:
  coursework = {
    'title': 'My CourseWork Assignment with Link Material',
    'description': 'Created using the Classroom CourseWork API.',
    'workType': 'ASSIGNMENT',
    'state': 'DRAFT',  # Set to 'PUBLISHED' to assign to students.
    'maxPoints': 100,
    'materials': [
      {'link': {'url': my_content_url}}
    ]
  }

  assignment = (
    service.courses()
    .courseWork()
    .create(courseId=course_id, body=coursework)
    .execute()
  )

  print(
    f'Link Material assignment created with ID: {assignment.get("id")}'
  )

В ответе содержится задание по запрошенному курсу с прикрепленным содержимым. Пользователи могут щелкнуть Link , чтобы открыть содержимое на вашем сайте в новой вкладке.

Черновой вариант задания по курсовой работе с использованием ссылочных материалов.

Рисунок 1. Вариант выполнения задания по курсу с ссылками на дополнительные материалы, представленный учителем.

Соответствующий пользователь

Выполните следующие действия, если пользователь может создавать дополнительные вложения.

  1. Создайте новое задание CourseWork без каких-либо вложений.
  2. Создайте дополнительное вложение.

Python

if is_create_attachment_eligible:
  coursework = {
    'title': 'My CourseWork Assignment with Add-on Attachment',
    'description': 'Created using the Classroom CourseWork API.',
    'workType': 'ASSIGNMENT',
    'state': 'DRAFT',  # Set to 'PUBLISHED' to assign to students.
    'maxPoints': 100,
  }

  assignment = (
    classroom_service.courses()
    .courseWork()
    .create(courseId=course_id, body=coursework)
    .execute()
  )

  print(
    f'Empty assignment created with ID: {assignment.get("id")}'
  )

  attachment = {
    'teacherViewUri': {'uri': teacher_view_url},
    'studentViewUri': {'uri': student_view_url},
    'studentWorkReviewUri': {'uri': grade_student_work_url},
    'title': f'Test Attachment {test_label}',
  }

  add_on_attachment = (
    service.courses()
    .courseWork()
    .addOnAttachments()
    .create(
      courseId=course_id,
      itemId=assignment.get("id"),  # ID of the new assignment.
      body=attachment,
    )
    .execute()
  )

  print(
    f'Add-on attachment created with ID: {add_on_attachment.get("id")}'
  )

Дополнение отображается в Classroom в виде вложенной карточки . Указанные в запросе URL-адреса открываются в соответствующем iframe для каждого представления .