Cette page explique comment effectuer les tâches suivantes avec des formulaires :
- Publiez le formulaire pour que les personnes interrogées puissent y accéder.
- Trouver un répondant à votre formulaire
- Partager votre formulaire avec plus de personnes interrogées
- Supprimer des personnes ayant répondu à votre formulaire
- Vérifiez si le formulaire accepte les réponses de "Toute personne disposant du lien".
- Fermer un formulaire
- Annuler la publication d'un formulaire
- Arrêter d'accepter des réponses à un formulaire
- Vérifier si un formulaire est un ancien formulaire
Avant de commencer
Avant d'effectuer les tâches décrites sur cette page, procédez comme suit :
Obtenez l'ID du formulaire. L'ID du formulaire est renvoyé dans le champ
formId
de la réponse lorsque vous créez un formulaire à l'aide deforms.create
.
Publiez le formulaire pour que les personnes interrogées puissent y accéder.
Vous pouvez publier un formulaire existant avec la méthode forms.setPublishSettings
.
Appelez la méthode
forms.setPublishSettings
avec l'ID du formulaire.
REST
Exemple de corps de requête
{
"publishSettings": {
"isPublished": true,
"isAcceptingResponses": true
}
}
Apps Script
/**
* Publishes a Google Form using its URL.
*/
function publishMyForm() {
// Replace with the URL of your Google Form
const formUrl = 'https://docs.google.com/forms/d/YOUR_FORM_ID/edit';
try {
const form = FormApp.openByUrl(formUrl);
// Publish the form. This also enables accepting responses.
form.setPublished(true);
Logger.log(`Form "${form.getTitle()}" published successfully.`);
// Optional: Verify the state
if (form.isPublished()) {
Logger.log('Form is now published.');
}
if (form.isAcceptingResponses()) {
Logger.log('Form is now accepting responses.')
}
} catch (error) {
Logger.log(`Error publishing form: ${error}`);
}
}
Python
Node.js
Trouver les personnes qui ont répondu à votre formulaire
Vous pouvez récupérer la liste de tous les utilisateurs ayant accès aux réponses (rôle PUBLISHED_READER) à l'aide de Form.getPublishedReaders(). Cette méthode renvoie un tableau d'objets utilisateur.
REST
Ajoutez le paramètre de requête includePermissionsForView=published
à l'URL de la requête.
Apps Script
/**
* Gets and logs the email addresses of all responders for a form.
*/
function listResponders() {
// Replace with the URL of your Google Form
const formUrl = 'https://docs.google.com/forms/d/YOUR_FORM_ID/edit';
try {
const form = FormApp.openByUrl(formUrl);
// Get the array of User objects representing responders
const responders = form.getPublishedReaders();
// Log the responders
Logger.log("Following can respond to the form");
responders.forEach(responder => Logger.log(responder.getEmail()));
return responders;
} catch (error) {
Logger.log(`Error getting responders: ${error}`);
}
}
Python
Node.js
Partager votre formulaire avec plus de personnes interrogées
Pour ajouter des personnes à un formulaire afin qu'elles puissent l'ouvrir et y répondre, vous pouvez utiliser la méthode Drive permissions.create
.
Appelez la méthode
permissions.create
avec l'ID du formulaire et les paramètres d'accès.
REST
Exemple de corps de requête
{
"view": "published",
"role": "reader",
"type": "user",
"emailAddress": "user@example.com"
}
Apps Script
/**
* Adds a single responder to a form using their email address.
*/
function `addSingleResponderByEmail()` {
// Replace with the URL of your Google Form
const formUrl = 'https://docs.google.com/forms/d/YOUR_FORM_ID/edit';
// Replace with the responder's email address
const responderEmail = 'responder@example.com';
try {
const form = FormApp.openByUrl(formUrl);
// Add the user as a responder
form.addPublishedReader(responderEmail);
Logger.log(`Added ${responderEmail} as a responder to form "${
form.getTitle()}".`);
} catch (error) {
Logger.log(`Error adding responder: ${error}`);
}
}
Python
Node.js
Supprimer des personnes ayant répondu à votre formulaire
Vous pouvez supprimer des participants individuels en utilisant leur adresse e-mail ou un objet User. Si vous supprimez un répondant, il ne pourra plus consulter ni envoyer le formulaire, sauf s'il y a accès par d'autres moyens, comme le partage de domaine ou l'accès à un Drive partagé.
Supprimer un seul répondant à l'aide de son adresse e-mail
REST
DELETE https://www.googleapis.com/drive/v3/files/{fileId}/permissions/PERMISSION
Vous pouvez trouver l'ID d'autorisation en listant les répondants, comme décrit précédemment.
Apps Script
/**
* Removes a single responder from a form using their email address.
*/
function `removeSingleResponderByEmail()` {
// Replace with the URL of your Google Form
const formUrl = 'https://docs.google.com/forms/d/YOUR_FORM_ID/edit';
// Replace with the responder's email address to remove
const responderEmailToRemove = 'responder-to-remove@example.com';
try {
const form = FormApp.openByUrl(formUrl);
// Remove the user as a responder
form.removePublishedReader(responderEmailToRemove);
Logger.log(`Removed ${responderEmailToRemove} as a responder from form "${
form.getTitle()}".`);
} catch (error) {
Logger.log(`Error removing responder: ${error}`);
}
}
Python
Node.js
Vérifiez si le formulaire accepte les réponses de "Toute personne disposant du lien".
Pour vérifier si le formulaire accepte les réponses de toute personne disposant d'un lien, vous devez activer le service avancé Drive.
- Activez le service avancé Drive :
- Ouvrez votre projet Apps Script.
- Cliquez sur Services (icône Plus à côté de Service).
- Recherchez Drive API, puis cliquez sur Add (Ajouter).
- Cliquez sur Ajouter.
Apps Script
function `isAnyoneWithLinkResponder`(formId) {
let permissions = Drive.Permissions.list(formId, { includePermissionsForView: 'published' }).permissions;
if (permissions) {
for (const permission of permissions) {
if (permission.type === 'anyone' && permission.view === 'published' && permission.role === 'reader') {
return true;
}
}
}
return false;
}
Python
Node.js
Pour autoriser tous les utilisateurs disposant du lien à répondre au formulaire :
Apps Script
function `setAnyoneWithLinkResponder`(formId) {
Drive.Permissions.create({
type: 'anyone',
view: 'published',
role: 'reader',
}, formId);
}
Python
Node.js
Pour supprimer l'option "Toute personne disposant du lien peut répondre au formulaire" :
Apps Script
function `removeAnyoneWithLinkResponder`(formId) {
let permissions = Drive.Permissions.list(formId, { includePermissionsForView: 'published' }).permissions;
if (permissions) {
for (const permission of permissions) {
if (permission.type === 'anyone' && permission.role === 'reader') {
Drive.Permissions.remove(formId, permission.id);
}
}
}
}
Python
Node.js
Fermer un formulaire
Pour annuler la publication d'un formulaire, utilisez la méthode Forms.setPublished(false). {/apps-script/reference/forms/form#setpublishedenabled} Si vous annulez la publication d'un formulaire, il devient indisponible et n'accepte plus automatiquement de réponses.
REST
Exemple de corps de requête
POST https://forms.googleapis.com/v1/forms/{formId}:setPublishSettings
{
"publishSettings": {
"publishState": {
"isPublished": false
}
}
}
Apps Script
/**
* Unpublishes a Google Form using its URL.
*/
function unpublishMyForm() {
// Replace with the URL of your Google Form
const formUrl = 'https://docs.google.com/forms/d/YOUR_FORM_ID/edit';
try {
const form = FormApp.openByUrl(formUrl);
// Unpublish the form. This also disables accepting responses.
form.setPublished(false);
Logger.log(`Form "${form.getTitle()}" unpublished successfully.`);
// Optional: Verify the state
if (!form.isPublished()) {
Logger.log('Form is now unpublished.');
}
if (!form.isAcceptingResponses()) {
Logger.log('Form is no longer accepting responses.');
}
} catch (error) {
Logger.log(`Error unpublishing form: ${error}`);
}
}
Python
Node.js
Pour arrêter d'accepter les réponses à un formulaire sans le dépublier, vous pouvez utiliser la méthode Form.setAcceptingResponses(false)
.
Les personnes qui répondent à votre formulaire verront la page et le message indiquant que le formulaire est fermé.
REST
Exemple de corps de requête
POST https://forms.googleapis.com/v1/forms/{formId}:setPublishSettings
{
"publishSettings": {
"publishState": {
"isPublished": true,
"isAcceptingResponses": false
}
}
}
Apps Script
/**
* Stop a Google Form from accepting responses using its URL.
*/
function closeMyFormForAcceptingResponses() {
// Replace with the URL of your Google Form
const formUrl = 'https://docs.google.com/forms/d/YOUR_FORM_ID/edit';
try {
const form = FormApp.openByUrl(formUrl);
// This disables the form for accepting responses.
form.setAcceptingResponses(false);
Logger.log(`Form "${form.getTitle()}" closed for accepting responses successfully.`);
// Optional: Verify the state
if (form.isPublished()) {
Logger.log('Form is still published.');
}
if (!form.isAcceptingResponses()) {
Logger.log('Form is no longer accepting responses.');
}
} catch (error) {
Logger.log(`Error unpublishing form: ${error}`);
}
}
Python
Node.js
Vérifier si un formulaire est un ancien formulaire
Les anciens formulaires sont ceux qui ne comportent pas le champ "publishSettings", alors que tous les nouveaux formulaires créés sont compatibles avec les paramètres de publication.
Pour savoir si un formulaire est ancien ou non, vérifiez s'il est possible de le publier. Cette méthode permet de déterminer si les méthodes setPublished(enabled)
et isPublished()
, ainsi que les autorisations de l'intervenant, sont activées.
Apps Script
/**
* Checks if a form supports advanced responder permissions (i.e., is not a legacy form).
*/
function `checkIfFormSupportsPublishing()` {
// TODO(developer): Replace the URL with your own.
const formUrl = 'https://docs.google.com/forms/d/YOUR_FORM_ID/edit';
try {
const form = FormApp.openByUrl(formUrl);
// Checks whether the form supports publishing or not and logs it to the console.
const supportsPublishing = form.supportsAdvancedResponderPermissions();
if (supportsPublishing) {
Logger.log(`Form "${form.getTitle()}" supports publishing (not a legacy
form).`);
} else {
Logger.log(`Form "${form.getTitle()}" is a legacy form (does not support
publishing).`);
}
return supportsPublishing;
} catch (error) {
Logger.log(`Error unpublishing form: ${error}`);
}
}
Python
Node.js