Na tej stronie opisano, jak wykonywać te czynności związane z formularzami:
- Opublikuj formularz, aby był dostępny dla użytkowników
- Znajdowanie osoby, która odpowiedziała na Twój formularz
- Udostępnianie formularza większej liczbie użytkowników
- Usuwanie użytkowników z formularza
- Sprawdź, czy formularz akceptuje odpowiedzi od „Każdej osoby mającej link”.
- Zamknij formularz
- Cofanie publikacji formularza
- Zatrzymywanie akceptowania odpowiedzi na formularz
- Sprawdzanie, czy formularz jest formularzem starszego typu
Zanim zaczniesz
Zanim przejdziesz do kolejnych czynności na tej stronie, wykonaj te czynności:
Uzyskaj identyfikator formularza. Identyfikator formularza jest zwracany w polu
formId
odpowiedzi, gdy tworzysz formularz za pomocą funkcjiforms.create
.
Opublikuj formularz, aby był dostępny dla użytkowników
Istniejący formularz możesz opublikować za pomocą metody forms.setPublishSettings
.
Wywołaj metodę
forms.setPublishSettings
z identyfikatorem formularza.
REST
Przykładowa treść żądania
{
"publishSettings": {
"isPublished": true,
"isAcceptingResponses": true
}
}
Google 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
Znajdowanie użytkowników, którzy odpowiedzieli na formularz
Za pomocą metody Form.getPublishedReaders() możesz pobrać listę wszystkich użytkowników, którzy mają dostęp do odpowiedzi (rola PUBLISHED_READER). Zwraca ona tablicę obiektów użytkownika.
REST
Dodaj parametr zapytania includePermissionsForView=published
do adresu URL żądania.
Google 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
Udostępnianie formularza większej liczbie użytkowników
Aby dodać do formularza osoby, które mogą go otworzyć i na niego odpowiedzieć, możesz użyć metody permissions.create
na Dysku.
Wywołaj metodę
permissions.create
z identyfikatorem formularza i ustawieniami dostępu.
REST
Przykładowa treść żądania
{
"view": "published",
"role": "reader",
"type": "user",
"emailAddress": "user@example.com"
}
Google 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
Usuwanie użytkowników z formularza
Możesz usunąć pojedynczych respondentów według ich adresu e-mail lub za pomocą obiektu User. Usunięcie osoby, która wypełniła formularz, powoduje utratę przez nią możliwości wyświetlania i przesyłania formularza, chyba że ma dostęp do niego w inny sposób, np. przez udostępnienie domeny lub dysku współdzielonego.
Usuwanie pojedynczego respondenta według adresu e-mail
REST
DELETE https://www.googleapis.com/drive/v3/files/{fileId}/permissions/PERMISSION
Identyfikator permissionID można znaleźć, wypisując osoby odpowiadające na zapytanie w sposób opisany wcześniej.
Google 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
Sprawdź, czy formularz akceptuje odpowiedzi od „Każdej osoby mającej link”.
Aby sprawdzić, czy formularz akceptuje odpowiedzi od dowolnej osoby, która ma link, musisz włączyć usługę zaawansowaną Dysku.
- Włącz zaawansowaną usługę Dysku:
- Otwórz projekt Apps Script.
- Kliknij Usługi (ikona plusa obok opcji Usługa).
- Znajdź Drive API i kliknij Dodaj.
- Kliknij Dodaj.
Google 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
Aby ustawić opcję „Każdy, kto ma link”, aby odpowiadać w formularzu:
Google Apps Script
function `setAnyoneWithLinkResponder`(formId) {
Drive.Permissions.create({
type: 'anyone',
view: 'published',
role: 'reader',
}, formId);
}
Python
Node.js
Aby usunąć opcję „Każdy, kto ma link”, wykonaj te czynności:
Google 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
Zamknij formularz
Aby wycofać publikację formularza, użyj metody Forms.setPublished(false). {/apps-script/reference/forms/form#setpublishedenabled} Odpublikowanie formularza powoduje, że staje się on niedostępny i automatycznie przestaje akceptować odpowiedzi.
REST
Przykładowa treść żądania
POST https://forms.googleapis.com/v1/forms/{formId}:setPublishSettings
{
"publishSettings": {
"publishState": {
"isPublished": false
}
}
}
Google 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
Aby zatrzymać akceptowanie odpowiedzi w formularzu bez anulowania jego publikacji, możesz użyć metody Form.setAcceptingResponses(false)
.
Osoby, które wypełnią formularz, zobaczą stronę i wiadomość o jego zamknięciu.
REST
Przykładowa treść żądania
POST https://forms.googleapis.com/v1/forms/{formId}:setPublishSettings
{
"publishSettings": {
"publishState": {
"isPublished": true,
"isAcceptingResponses": false
}
}
}
Google 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
Sprawdzanie, czy formularz jest formularzem starszego typu
Stare formularze to formularze, które nie mają pola publishSettings, podczas gdy wszystkie nowo utworzone formularze obsługują ustawienia publikacji.
Sprawdź, czy formularz jest starszy, czy nie, określając, czy obsługuje publikowanie. Ta metoda służy do określenia, czy włączone są metody setPublished(enabled)
i isPublished()
oraz uprawnienia respondenta.
Google 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