이 가이드에서는 웹사이트 또는 애플리케이션에서 부가기능 첨부파일을 만드는 방법을 설명합니다. 상호작용은 CourseWork API 엔드포인트를 사용하여 과제를 만드는 것과 유사합니다. 이 여정을 구현하여 사용자가 웹사이트 또는 애플리케이션에서 부가기능 첨부파일을 만들 수 있도록 합니다.
워크플로
첨부파일 생성 여정은 대략 다음과 같은 순서로 진행됩니다.
- 교사 사용자가 웹사이트 또는 앱을 엽니다. 학생에게 할당할 콘텐츠를 선택합니다.
- 사용자가 부가기능 첨부파일을 만들 수 있는지 확인합니다.
- 사용자가 부가기능 첨부파일을 만들 수 없는 경우 선택한 콘텐츠의 URL을 링크 자료로 사용하여 CourseWork 과제를 만듭니다.
- 사용자가 부가기능 첨부파일을 만들 수 있는 경우 다음 단계를 따르세요.
- 과제를 만듭니다.
- 선택한 콘텐츠에 연결되는 부가기능 첨부파일을 만들고 새 과제와 연결합니다.
- 과제가 성공적으로 생성되었음을 교사에게 알립니다.
각 작업은 다음 섹션에 설명되어 있습니다.
사용자가 부가기능 첨부파일을 만들 수 있는지 확인
자격 요건을 충족하는 사용자를 대신하여 부가기능 첨부파일을 만들 수 있습니다. 자격 요건을 충족하는 사용자는 CourseWork 과제를 만들려는 과정의 교사이며 Teaching &Learning 또는 Education Plus Google Workspace for Education 버전 라이선스가 할당된 사용자입니다.
공개 미리보기에서 API 메서드를 사용하려면 Google Workspace 개발자 프리뷰 프로그램에 가입해야 하며, 일반적인 클래스룸 API를 사용할 때보다 추가적인 설정이 필요합니다.먼저 사용자가 부가기능 첨부파일을 만들 수 있는지 확인합니다. CREATE_ADD_ON_ATTACHMENT 기능 매개변수를 사용하여 userProfiles.checkUserCapability 엔드포인트에 요청을 실행하면 됩니다. 응답에서 불리언 allowed 필드를 검사합니다. true 값은 사용자가 부가기능 첨부파일을 만들 수 있는 자격 요건을 충족함을 나타냅니다.
CREATE_ADD_ON_ATTACHMENT 기능이 있는 사용자를 대신하여 부가기능 첨부파일을 만드는 요청은 성공이 보장되지 않습니다. 예를 들어 사용자가 교사가 아닌 과정에서 사용자를 대신하여 부가기능 첨부파일을 만들려고 하면 기능이 있는 사용자에게 403 응답 오류가 표시됩니다.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}.')
자격 요건에 따라 사용자 라우팅
자격 요건은 사용자를 대신하여 부가기능 첨부파일을 만들 수 있는지 여부를 결정합니다.
자격 요건을 충족하지 않는 사용자
사용자가 부가기능 첨부파일을 만들 수 없는 경우 사용자가 선택한 콘텐츠 URL을 Link로 사용하여 새 CourseWork
과제를 만듭니다.
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. 링크 자료가 있는 초안 CourseWork 과제의 교사 뷰
자격 요건을 충족하는 사용자
사용자가 부가기능 첨부파일을 만들 수 있는 경우 다음 단계를 따르세요.
- 첨부파일 없이 새
CourseWork과제를 만듭니다. - 부가기능 첨부파일을 만듭니다.
AddOnAttachment의itemId를 새로 만든 과제의id로 설정합니다.- 지원하는 각 뷰에 대해 사용자가 선택한 콘텐츠의 URL을 제공해야 합니다.
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")}'
)
부가기능이 클래스룸에 첨부파일 카드로 표시됩니다. 요청에 지정된 URL이 각 뷰의 적절한 iframe에서 열립니다.