Les modules complémentaires Google Classroom sont désormais disponibles pour tous les développeurs. Pour en savoir plus, consultez la documentation sur les modules complémentaires.
Créer des pièces jointes en dehors de Google Classroom
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Ce guide explique comment créer des pièces jointes de modules complémentaires sur votre site Web ou dans votre application.
Les interactions sont semblables à la création de devoirs à l'aide des points de terminaison de l'API CourseWork. Implémentez ce parcours pour permettre aux utilisateurs de créer des pièces jointes de modules complémentaires depuis votre site Web ou votre application.
Workflow
Dans les grandes lignes, le parcours de création de pièces jointes suit cette séquence :
Un enseignant ouvre votre site Web ou votre application, puis sélectionne un contenu à attribuer à ses élèves.
Si l'utilisateur ne peut pas créer de pièces jointes de module complémentaire, créez un devoir CourseWork avec l'URL du contenu sélectionné en tant que lien.
Si l'utilisateur peut créer des pièces jointes de modules complémentaires, procédez comme suit :
Créez un devoir.
Créez une pièce jointe de module complémentaire qui renvoie au contenu sélectionné et associez-la au nouveau devoir.
Indiquez à l'enseignant que le devoir a bien été créé.
Chaque action est décrite dans les sections suivantes.
Vérifier si un utilisateur peut créer des pièces jointes de modules complémentaires
Vous pouvez créer des pièces jointes de modules complémentaires au nom d'un utilisateur éligible. Un utilisateur éligible est un enseignant du cours dans lequel vous essayez de créer des devoirs et qui dispose d'une licence Teaching and Learning ou Education Plus de l'édition Google Workspace for Education.
Commencez par déterminer si l'utilisateur peut créer des pièces jointes de module complémentaire. Pour ce faire, envoyez une requête au point de terminaison userProfiles.checkUserCapability avec le paramètre de capacité CREATE_ADD_ON_ATTACHMENT. Examinez le champ booléen allowed dans la réponse. Une valeur true indique que l'utilisateur est autorisé à créer des pièces jointes de modules complémentaires.
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}.')
Rediriger l'utilisateur en fonction de son éligibilité
L'éligibilité détermine si vous pouvez créer des pièces jointes de modules complémentaires pour un utilisateur.
Utilisateur non éligible
Si l'utilisateur ne peut pas créer de pièces jointes de modules complémentaires, créez un devoir CourseWork avec l'URL du contenu sélectionné par l'utilisateur en tant que Link.
Python
ifnotis_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")}')
La réponse contient un devoir dans le cours demandé, avec le contenu joint. Les utilisateurs peuvent cliquer sur Link pour ouvrir le contenu de votre site dans un nouvel onglet.
Figure 1. Vue enseignant d'un devoir de cours en brouillon avec un lien vers un support de cours.
Utilisateur éligible
Procédez comme suit si l'utilisateur peut créer des pièces jointes de modules complémentaires.
Créez un devoir CourseWork sans pièce jointe.
Créez une pièce jointe de module complémentaire.
Définissez le itemId de AddOnAttachment sur le id du devoir que vous venez de créer.
Assurez-vous de fournir des URL vers le contenu sélectionné par l'utilisateur pour chaque vue que vous acceptez.
Python
ifis_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")}')
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/08/29 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Il n'y a pas l'information dont j'ai besoin","missingTheInformationINeed","thumb-down"],["Trop compliqué/Trop d'étapes","tooComplicatedTooManySteps","thumb-down"],["Obsolète","outOfDate","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Mauvais exemple/Erreur de code","samplesCodeIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/08/29 (UTC)."],[],[],null,["# Create attachments outside of Google Classroom\n\nThis guide addresses creating add-on attachments in your website or application.\nThe interactions are similar to [creating assignments using the CourseWork API\nendpoints](/workspace/classroom/guides/manage-coursework#create_assignments). Implement this journey to allow users to create add-on attachments\nfrom your website or application.\n| **Important:** We strongly recommend implementing this attachment creation flow if you already create [`CourseWork`](/workspace/classroom/reference/rest/v1/courses.courseWork) assignments. Extending a CourseWork implementation lets you convert many more users to your add-on and requires little additional work.\n\nWorkflow\n--------\n\nAt a high level, the attachment creation journey follows this sequence:\n\n1. A teacher user opens your website or app. They select a piece of content to assign to their students.\n2. [Check that the user can create add-on attachments](#check-whether).\n3. If the user **can't** create add-on attachments, create a CourseWork assignment with the URL to the selected content as a Link Material.\n4. If the user **can** create add-on attachments, do the following:\n 1. Create an assignment.\n 2. Create an add-on attachment that links to the selected content and associate it with the new assignment.\n5. Inform the teacher that the assignment has been created successfully.\n\nEach action is described in the following sections.\n\nCheck whether a user can create add-on attachments\n--------------------------------------------------\n\nYou can create add-on attachments on behalf of an eligible user. An eligible\nuser is a user who is a teacher in the course you are trying to create\nCourseWork assignments in **and** has the Teaching \\& Learning or Education Plus\nGoogle Workspace for Education edition license assigned to them.\n| **Key Point:** Eligibility to create add-on attachments may be different for each user and can change over time. Always check the user's eligibility before attempting to create add-on attachments.\n| **Important:** Eligibility checks using the Classroom API are in public preview and available in preview version `V1_20240930_PREVIEW` and later. To use API methods in public preview, you must be part of the [Google Workspace Developer Preview Program](/workspace/preview) and [perform additional setup](/workspace/classroom/reference/preview) beyond typical Classroom API usage.\n\nBegin by determining whether the user can create add-on attachments. You can do\nso by issuing a request to the [`userProfiles.checkUserCapability`](/workspace/classroom/reference/rest/v1/userProfiles/checkUserCapability) endpoint\nwith the `CREATE_ADD_ON_ATTACHMENT` capability parameter. Inspect the boolean\n`allowed` field in the response; a `true` value indicates that the user is\neligible to create add-on attachments.\n**Warning:** Requests to create add-on attachments for users with the `CREATE_ADD_ON_ATTACHMENT` capability are not guaranteed to succeed. For example, a user with the capability will receive a `403` response error if you attempt to create add-on attachments on their behalf in a course in which the user is not a teacher. \n\n### Python\n\n eligibility_response = (\n classroom_service.userProfiles()\n .checkUserCapability(\n userId=\"me\",\n capability=\"CREATE_ADD_ON_ATTACHMENT\",\n # The previewVersion is necessary while the method is available in the\n # Workspace Developer Preview Program.\n previewVersion=\"V1_20240930_PREVIEW\",\n ).execute()\n )\n is_create_attachment_eligible = (\n eligibility_response.get('allowed')\n )\n print('User eligibility for add-on attachment creation: '\n f'{is_create_attachment_eligible}.')\n\nRoute the user based on their eligibility\n-----------------------------------------\n\nEligibility determines whether you can create add-on attachments for a user.\n| **Important:** Add-ons offer significant user experience advantages. Always create add-on attachments for eligible users.\n\n### Ineligible user\n\nIf the user *can't* create add-on attachments, then create a new [`CourseWork`](/workspace/classroom/reference/rest/v1/courses.courseWork)\nassignment with the user-selected content URL as a [`Link`](/workspace/classroom/reference/rest/v1/Material). \n\n### Python\n\n if not is_create_attachment_eligible:\n coursework = {\n 'title': 'My CourseWork Assignment with Link Material',\n 'description': 'Created using the Classroom CourseWork API.',\n 'workType': 'ASSIGNMENT',\n 'state': 'DRAFT', # Set to 'PUBLISHED' to assign to students.\n 'maxPoints': 100,\n 'materials': [\n {'link': {'url': my_content_url}}\n ]\n }\n\n assignment = (\n service.courses()\n .courseWork()\n .create(courseId=course_id, body=coursework)\n .execute()\n )\n\n print(\n f'Link Material assignment created with ID: {assignment.get(\"id\")}'\n )\n\nThe response contains an assignment in the requested course with the content\nattached. Users can click the `Link` to open the content in your site in a new\ntab.\n\n**Figure 1.** Teacher view of a draft CourseWork assignment with Link Material.\n\n### Eligible user\n\nDo the following if the user *can* create add-on attachments.\n\n1. Create a new `CourseWork` assignment without any attachments.\n2. Create an add-on attachment.\n - Set the[`AddOnAttachment`](/workspace/classroom/reference/rest/v1/courses.courseWork.addOnAttachments#resource:-addonattachment)'s `itemId` to the `id` of the newly created assignment.\n - Ensure that you provide URLs to the user-selected content for [each View\n that you support](/workspace/classroom/add-ons/get-started/iframes/iframes-overview).\n\n### Python\n\n if is_create_attachment_eligible:\n coursework = {\n 'title': 'My CourseWork Assignment with Add-on Attachment',\n 'description': 'Created using the Classroom CourseWork API.',\n 'workType': 'ASSIGNMENT',\n 'state': 'DRAFT', # Set to 'PUBLISHED' to assign to students.\n 'maxPoints': 100,\n }\n\n assignment = (\n classroom_service.courses()\n .courseWork()\n .create(courseId=course_id, body=coursework)\n .execute()\n )\n\n print(\n f'Empty assignment created with ID: {assignment.get(\"id\")}'\n )\n\n attachment = {\n 'teacherViewUri': {'uri': teacher_view_url},\n 'studentViewUri': {'uri': student_view_url},\n 'studentWorkReviewUri': {'uri': grade_student_work_url},\n 'title': f'Test Attachment {test_label}',\n }\n\n add_on_attachment = (\n service.courses()\n .courseWork()\n .addOnAttachments()\n .create(\n courseId=course_id,\n itemId=assignment.get(\"id\"), # ID of the new assignment.\n body=attachment,\n )\n .execute()\n )\n\n print(\n f'Add-on attachment created with ID: {add_on_attachment.get(\"id\")}'\n )\n\n| **Note:** An add-on token is not required if creating an attachment on an assignment that you created.\n\nThe add-on appears as an [attachment card](/workspace/classroom/add-ons/get-started/attachments-journey) in Classroom. The URLs\nspecified in the request open in the appropriate\n[iframe for each View](/workspace/classroom/add-ons/get-started/iframes/iframes-overview)."]]