Pour permettre aux créateurs de formulaires de contrôler plus précisément qui peut y répondre, nous lançons des contrôles précis pour les personnes interrogées. Les formulaires créés avec l'API après le 31 janvier 2026 seront par défaut publiés. Pour en savoir plus, consultez
Modifications des API dans Google Forms.
Mettre à jour un formulaire ou un questionnaire
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Pour ajouter du contenu à un formulaire ou mettre à jour les paramètres, les métadonnées ou le contenu, utilisez la méthode batchUpdate()
, qui regroupe les modifications dans un lot afin que si une requête échoue, aucune des autres modifications (potentiellement dépendantes) ne soit écrite.
La méthode batchUpdate()
renvoie un corps de réponse, dans lequel se trouve une réponse pour chaque requête. Chaque réponse occupe le même index que la requête correspondante. Pour les requêtes sans réponse applicable, la réponse à cet index sera vide.
Avant de commencer
Effectuez les tâches suivantes avant de commencer les tâches de cette page:
- Terminez la configuration de l'autorisation/authentification et des identifiants en suivant les instructions du programme des premiers utilisateurs.
L'exemple suivant montre comment mettre à jour les métadonnées d'un formulaire, mais la structure est la même pour le contenu et les paramètres. Ils utilisent les requêtes updateItem
ou updateSettings
au lieu de updateFormInfo
. Pour chaque requête, vous devez fournir le nom du champ à modifier et la valeur mise à jour, ainsi qu'une valeur updateMask
pour limiter les modifications apportées aux champs que vous avez spécifiés.
REST
Pour mettre à jour la description du formulaire, appelez la méthode batchUpdate()
avec l'ID du formulaire et la valeur de description mise à jour.
Exemple de corps de requête
"requests": [{
"updateFormInfo": {
"info": {
"description": "Please complete this quiz based on this week's readings for class."
},
"updateMask": "description"
}
}]
Ajouter un élément
L'exemple suivant montre comment ajouter du contenu à un formulaire. Lorsque vous ajoutez du nouveau contenu, vous devez indiquer un emplacement avec un indice où le nouveau contenu doit être inséré. Par exemple, un emplacement avec l'index 0
insère le contenu au début du formulaire.
REST
Pour ajouter un élément au formulaire, appelez la méthode batchUpdate()
avec l'ID du formulaire, les informations de l'élément et l'emplacement souhaité.
Exemple de corps de requête
"requests": [{
"createItem": {
"item": {
"title": "Homework video",
"description": "Quizzes in Google Forms",
"videoItem": {
"video": {
"youtubeUri": "https://www.youtube.com/watch?v=Lt5HqPvM-eI"
}
}},
"location": {
"index": 0
}
}]
Demander une commande
La méthode batchUpdate()
accepte un tableau de sous-requêtes telles que createItem
et updateItem
.
Les sous-requêtes sont validées une par une dans l'ordre dans lequel elles sont fournies.
Exemple: Une requête batchUpdate
comporte un tableau requests
avec deux sous-requêtes createItem
. La sous-requête A a location.index
0 et la sous-requête B a location.index
1. Si le tableau requests
est [A, B], batchUpdate
aboutit. Si le tableau est [B, A], batchUpdate
échouera, car location.index
1 n'est pas valide, sauf si le formulaire contient déjà un élément à l'index 0.
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/04/09 (UTC).
[null,null,["Dernière mise à jour le 2025/04/09 (UTC)."],[],["The `batchUpdate()` method is used to modify forms, allowing for updates to metadata, settings, or content and the addition of new items. It groups changes, ensuring that if one fails, none are applied. When updating, the method requires the field name, updated value, and `updateMask`. Adding content requires specifying the item details and insertion `location` by index. The method executes sub-requests sequentially, validating each in order. The order in which you place requests in an array matters when creating items.\n"],null,["# Update a form or quiz\n\nTo add content to a form or update the settings, metadata, or content, use the\n`batchUpdate()` method, which groups changes together in a batch so that if one\nrequest fails, none of the other (potentially dependent) changes are written.\n\nThe `batchUpdate()` method returns a response body, within which is a response\nfor each request. Each response occupies the same index as the corresponding\nrequest; for requests with no applicable response, the response at that index\nwill be empty.\n\nBefore you begin\n----------------\n\nPerform the following tasks before proceeding with the tasks on this page:\n\n- Complete authorization/authentication and credentials setup in the Early Adopter Program instructions\n\nUpdate metadata, settings, or items\n-----------------------------------\n\nThe following example shows how to update a form's metadata, but the structure\nis the same for content and settings---they use the `updateItem` or\n`updateSettings` requests instead of `updateFormInfo`. For each request, you\nsupply the name of the field to be changed and the updated value, along with\nan `updateMask` value to limit changes to the fields you've specified. \n\n### REST\n\nTo update the form's description, call the\n[`batchUpdate()`](/workspace/forms/api/reference/rest/v1/forms/batchUpdate)\nmethod with the form ID and the updated description value.\n\n**Sample request body** \n\n \"requests\": [{\n \"updateFormInfo\": {\n \"info\": {\n \"description\": \"Please complete this quiz based on this week's readings for class.\"\n },\n \"updateMask\": \"description\"\n }\n }]\n\n### Python\n\nforms/snippets/update_form.py \n[View on GitHub](https://github.com/googleworkspace/python-samples/blob/main/forms/snippets/update_form.py) \n\n```python\nfrom apiclient import discovery\nfrom httplib2 import Http\nfrom oauth2client import client, file, tools\n\nSCOPES = \"https://www.googleapis.com/auth/forms.body\"\nDISCOVERY_DOC = \"https://forms.googleapis.com/$discovery/rest?version=v1\"\n\nstore = file.Storage(\"token.json\")\ncreds = None\nif not creds or creds.invalid:\n flow = client.flow_from_clientsecrets(\"client_secrets.json\", SCOPES)\n creds = tools.run_flow(flow, store)\n\nform_service = discovery.build(\n \"forms\",\n \"v1\",\n http=creds.authorize(Http()),\n discoveryServiceUrl=DISCOVERY_DOC,\n static_discovery=False,\n)\n\nform = {\n \"info\": {\n \"title\": \"Update metadata example for Forms API!\",\n }\n}\n\n# Creates the initial Form\ncreateResult = form_service.forms().create(body=form).execute()\n\n# Request body to add description to a Form\nupdate = {\n \"requests\": [\n {\n \"updateFormInfo\": {\n \"info\": {\n \"description\": (\n \"Please complete this quiz based on this week's\"\n \" readings for class.\"\n )\n },\n \"updateMask\": \"description\",\n }\n }\n ]\n}\n\n# Update the form with a description\nquestion_setting = (\n form_service.forms()\n .batchUpdate(formId=createResult[\"formId\"], body=update)\n .execute()\n)\n\n# Print the result to see it now has a description\ngetresult = form_service.forms().get(formId=createResult[\"formId\"]).execute()\nprint(getresult)\n```\n\n### Node.js\n\nforms/snippets/update_form.js \n[View on GitHub](https://github.com/googleworkspace/node-samples/blob/main/forms/snippets/update_form.js) \n\n```javascript\n'use strict';\n\nconst path = require('path');\nconst google = require('@googleapis/forms');\nconst {authenticate} = require('@google-cloud/local-auth');\n\nasync function runSample(query) {\n const authClient = await authenticate({\n keyfilePath: path.join(__dirname, 'credentials.json'),\n scopes: 'https://www.googleapis.com/auth/drive',\n });\n const forms = google.forms({\n version: 'v1',\n auth: authClient,\n });\n const newForm = {\n info: {\n title: 'Creating a new form for batchUpdate in Node',\n },\n };\n const createResponse = await forms.forms.create({\n requestBody: newForm,\n });\n console.log('New formId was: ' + createResponse.data.formId);\n\n // Request body to add description to a Form\n const update = {\n requests: [\n {\n updateFormInfo: {\n info: {\n description:\n 'Please complete this quiz based on this week\\'s readings for class.',\n },\n updateMask: 'description',\n },\n },\n ],\n };\n const res = await forms.forms.batchUpdate({\n formId: createResponse.data.formId,\n requestBody: update,\n });\n console.log(res.data);\n return res.data;\n}\n\nif (module === require.main) {\n runSample().catch(console.error);\n}\nmodule.exports = runSample;\n```\n\nAdd an item\n-----------\n\nThe following example shows how to add new content to a form. When adding new\ncontent, you must provide a location with an index where new content should be\ninserted. For instance, a location with index `0` will insert the content at\nthe beginning of the form. \n\n### REST\n\nTo add an item to the form, call the\n[`batchUpdate()`](/workspace/forms/api/reference/rest/v1/forms/batchUpdate)\nmethod with the form ID and the item's information and desired location.\n\n**Sample request body** \n\n \"requests\": [{\n \"createItem\": {\n \"item\": {\n \"title\": \"Homework video\",\n \"description\": \"Quizzes in Google Forms\",\n \"videoItem\": {\n \"video\": {\n \"youtubeUri\": \"https://www.youtube.com/watch?v=Lt5HqPvM-eI\"\n }\n }},\n \"location\": {\n \"index\": 0\n }\n }]\n\n### Python\n\nforms/snippets/add_item.py \n[View on GitHub](https://github.com/googleworkspace/python-samples/blob/main/forms/snippets/add_item.py) \n\n```python\nfrom apiclient import discovery\nfrom httplib2 import Http\nfrom oauth2client import client, file, tools\n\nSCOPES = \"https://www.googleapis.com/auth/forms.body\"\nDISCOVERY_DOC = \"https://forms.googleapis.com/$discovery/rest?version=v1\"\n\nstore = file.Storage(\"token.json\")\ncreds = None\nif not creds or creds.invalid:\n flow = client.flow_from_clientsecrets(\"client_secrets.json\", SCOPES)\n creds = tools.run_flow(flow, store)\n\nform_service = discovery.build(\n \"forms\",\n \"v1\",\n http=creds.authorize(Http()),\n discoveryServiceUrl=DISCOVERY_DOC,\n static_discovery=False,\n)\n\nform = {\n \"info\": {\n \"title\": \"Update item example for Forms API\",\n }\n}\n\n# Creates the initial Form\ncreateResult = form_service.forms().create(body=form).execute()\n\n# Request body to add a video item to a Form\nupdate = {\n \"requests\": [\n {\n \"createItem\": {\n \"item\": {\n \"title\": \"Homework video\",\n \"description\": \"Quizzes in Google Forms\",\n \"videoItem\": {\n \"video\": {\n \"youtubeUri\": (\n \"https://www.youtube.com/watch?v=Lt5HqPvM-eI\"\n )\n }\n },\n },\n \"location\": {\"index\": 0},\n }\n }\n ]\n}\n\n# Add the video to the form\nquestion_setting = (\n form_service.forms()\n .batchUpdate(formId=createResult[\"formId\"], body=update)\n .execute()\n)\n\n# Print the result to see it now has a video\nresult = form_service.forms().get(formId=createResult[\"formId\"]).execute()\nprint(result)\n```\n\n### Node.js\n\nforms/snippets/add_item.js \n[View on GitHub](https://github.com/googleworkspace/node-samples/blob/main/forms/snippets/add_item.js) \n\n```javascript\n'use strict';\n\nconst path = require('path');\nconst google = require('@googleapis/forms');\nconst {authenticate} = require('@google-cloud/local-auth');\n\nasync function runSample(query) {\n const authClient = await authenticate({\n keyfilePath: path.join(__dirname, 'credentials.json'),\n scopes: 'https://www.googleapis.com/auth/drive',\n });\n const forms = google.forms({\n version: 'v1',\n auth: authClient,\n });\n const newForm = {\n info: {\n title: 'Creating a new form for batchUpdate in Node',\n },\n };\n const createResponse = await forms.forms.create({\n requestBody: newForm,\n });\n console.log('New formId was: ' + createResponse.data.formId);\n\n // Request body to add video item to a Form\n const update = {\n requests: [\n {\n createItem: {\n item: {\n title: 'Homework video',\n description: 'Quizzes in Google Forms',\n videoItem: {\n video: {\n youtubeUri: 'https://www.youtube.com/watch?v=Lt5HqPvM-eI',\n },\n },\n },\n location: {\n index: 0,\n },\n },\n },\n ],\n };\n const updateResponse = await forms.forms.batchUpdate({\n formId: createResponse.data.formId,\n requestBody: update,\n });\n console.log(updateResponse.data);\n return updateResponse.data;\n}\n\nif (module === require.main) {\n runSample().catch(console.error);\n}\nmodule.exports = runSample;\n```\n\nRequest order\n-------------\n\nThe [`batchUpdate()`](/workspace/forms/api/reference/rest/v1/forms/batchUpdate)\nmethod accepts an array of sub-requests such as `createItem` and `updateItem`.\nSub-requests are validated one at a time in the order they are provided.\n\nExample: A `batchUpdate` request has a `requests` array with two `createItem`\nsub-requests. Sub-request A has `location.index` 0 and sub-request B has\n`location.index` 1. If the `requests` array is \\[A, B\\], `batchUpdate` will\nsucceed. If the array is \\[B, A\\], `batchUpdate` will fail, since `location.index`\n1 is not valid unless the form already contains an item at index 0."]]