Auf dieser Seite wird beschrieben, wie Sie die folgenden Aufgaben im Zusammenhang mit Formularen ausführen:
- Veröffentlichen Sie das Formular, damit Teilnehmer darauf zugreifen können
- Antworten auf Ihr Formular erhalten
- Formular für weitere Teilnehmer freigeben
- Teilnehmer aus dem Formular entfernen
- Prüfen, ob das Formular Antworten von „Jeder mit dem Link“ akzeptiert
- Formular schließen
- Veröffentlichung eines Formulars aufheben
- Annehmen von Antworten für ein Formular beenden
- Prüfen, ob ein Formular ein Legacy-Formular ist
Hinweis
Führen Sie die folgenden Aufgaben aus, bevor Sie mit den Aufgaben auf dieser Seite fortfahren:
Rufen Sie die Formular-ID ab. Die Formular-ID wird im Feld
formId
der Antwort zurückgegeben, wenn Sie ein Formular mitforms.create
erstellen.
Veröffentlichen Sie das Formular, damit Teilnehmer darauf zugreifen können
Sie können ein vorhandenes Formular mit der Methode forms.setPublishSettings
veröffentlichen.
Rufen Sie die Methode
forms.setPublishSettings
mit der Formular-ID auf.
REST
Beispiel für einen Anfragetext
{
"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
Teilnehmer für Ihr Formular finden
Mit Form.getPublishedReaders() können Sie eine Liste aller Nutzer abrufen, die Zugriff als Antwortgeber (die Rolle PUBLISHED_READER) haben. Dadurch wird ein Array von Nutzerobjekten zurückgegeben.
REST
Hängen Sie den Abfrageparameter includePermissionsForView=published
an die Anfrage-URL an.
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
Formular für weitere Teilnehmer freigeben
Wenn Sie einem Formular Teilnehmer hinzufügen möchten, damit diese es öffnen und darauf antworten können, können Sie die Drive-Methode permissions.create
verwenden.
Rufen Sie die Methode
permissions.create
mit der Formular-ID und den Zugriffseinstellungen auf.
REST
Beispiel für einen Anfragetext
{
"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
Teilnehmer aus dem Formular entfernen
Sie können einzelne Antwortende anhand ihrer E-Mail-Adresse oder mit einem User-Objekt entfernen. Wenn Sie einen Antwortenden entfernen, wird ihm die Möglichkeit entzogen, das Formular anzusehen und einzureichen, es sei denn, er hat auf andere Weise Zugriff, z. B. über die Freigabe für die Domain oder über den Zugriff auf die geteilte Ablage.
Einzelnen Antwortenden anhand der E‑Mail-Adresse entfernen
REST
DELETE https://www.googleapis.com/drive/v3/files/{fileId}/permissions/PERMISSION
Die permissionID kann wie oben beschrieben durch Auflisten von Antwortenden gefunden werden.
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
Prüfen, ob das Formular Antworten von „Jeder mit dem Link“ akzeptiert
Wenn Sie prüfen möchten, ob das Formular Antworten von allen Nutzern mit einem Link akzeptiert, müssen Sie den erweiterten Drive-Dienst aktivieren.
- Aktivieren Sie den erweiterten Google Drive-Dienst:
- Öffnen Sie Ihr Apps Script-Projekt.
- Klicken Sie auf Services (das Pluszeichen neben Service).
- Suchen Sie nach der Drive API und klicken Sie auf Hinzufügen.
- Klicken Sie auf Hinzufügen.
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
So legen Sie fest, dass jeder, der über den Link verfügt, das Formular ausfüllen kann:
Apps Script
function `setAnyoneWithLinkResponder`(formId) {
Drive.Permissions.create({
type: 'anyone',
view: 'published',
role: 'reader',
}, formId);
}
Python
Node.js
So entfernen Sie die Option „Jeder, der über den Link verfügt, kann das Formular ausfüllen“:
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
Formular schließen
Wenn Sie die Veröffentlichung eines Formulars aufheben möchten, verwenden Sie die Methode Forms.setPublished(false). {/apps-script/reference/forms/form#setpublishedenabled} Wenn Sie die Veröffentlichung eines Formulars aufheben, ist es nicht mehr verfügbar und es werden automatisch keine Antworten mehr akzeptiert.
REST
Beispiel für einen Anfragetext
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
Wenn Sie keine Antworten mehr für ein Formular annehmen möchten, ohne es zu deaktivieren, können Sie die Methode Form.setAcceptingResponses(false)
verwenden.
Teilnehmer, die auf Ihr Formular zugreifen, sehen die Seite und die Nachricht für geschlossene Formulare.
REST
Beispiel für einen Anfragetext
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
Prüfen, ob ein Formular ein Legacy-Formular ist
Bei Legacy-Formularen ist das Feld „publishSettings“ nicht vorhanden. Bei allen neu erstellten Formularen werden Veröffentlichungseinstellungen unterstützt.
Prüfen Sie, ob ein Formular das Veröffentlichen unterstützt. Wenn ja, ist es kein altes Formular. Mit dieser Methode wird ermittelt, ob die Methoden setPublished(enabled)
und isPublished()
sowie die Berechtigungen für Antwortende aktiviert sind.
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