На этой странице описано, как выполнять следующие задачи, связанные с формами:
- Опубликуйте форму, чтобы участники могли получить к ней доступ.
- Найдите человека, ответившего на вашу форму.
- Поделитесь своей формой с большим количеством респондентов.
- Удалите респондентов из вашей формы
- Проверьте, принимает ли форма ответы от «Любого, у кого есть ссылка».
- Закрыть форму
- Снять форму с публикации
- Прекратить прием ответов на форму
- Проверьте, является ли форма устаревшей.
Прежде чем начать
Перед тем как приступить к задачам на этой странице, выполните следующие действия:
Получите идентификатор формы. Идентификатор формы возвращается в поле
formIdответа при создании формы с помощьюforms.create.
Опубликуйте форму, чтобы участники могли получить к ней доступ.
Опубликовать существующую форму можно с помощью метода forms.setPublishSettings .
Вызовите метод
forms.setPublishSettings, указав идентификатор формы.
ОТДЫХ
Пример текста запроса
{
"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
Найдите тех, кто ответил на вашу форму.
Вы можете получить список всех пользователей, имеющих доступ для обработки сообщений (роль PUBLISHED_READER), используя метод Form.getPublishedReaders() . Он возвращает массив объектов пользователей.
ОТДЫХ
Добавьте параметр запроса includePermissionsForView=published к URL-адресу запроса.
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("The 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
Поделитесь своей формой с большим количеством респондентов.
Чтобы добавить участников в форму, чтобы они могли её открыть и ответить на неё, можно использовать метод `drive permissions.create Google Drive.
Вызовите метод
permissions.create, указав идентификатор формы и параметры доступа.
ОТДЫХ
Пример текста запроса
{
"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
Удалите респондентов из вашей формы
Вы можете удалить отдельных участников по их адресу электронной почты или с помощью объекта «Пользователь» . Удаление участника лишает его возможности просматривать и отправлять форму, если у него нет доступа другими способами, например, через совместное использование домена или общий доступ к сетевому диску.
Удалить одного из респондентов по адресу электронной почты
ОТДЫХ
DELETE https://www.googleapis.com/drive/v3/files/{fileId}/permissions/{permissionId}
Идентификатор разрешения (permissionID) можно найти, перечислив участников опроса , как описано ранее.
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
Проверьте, принимает ли форма ответы от «Любого, у кого есть ссылка».
Чтобы проверить, принимает ли форма ответы от пользователей, приславших ссылку, необходимо включить расширенные настройки Google Диска.
- Включите службу Drive Advanced:
- Откройте свой проект Apps Script.
- Нажмите «Сервисы» (значок плюса рядом с «Сервис» ).
- Найдите Drive API и нажмите «Добавить» .
- Нажмите «Добавить» .
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
Чтобы установить параметр «Любой, у кого есть ссылка, может ответить на форму»:
Apps Script
function setAnyoneWithLinkResponder(formId) {
Drive.Permissions.create({
type: 'anyone',
view: 'published',
role: 'reader',
}, formId);
}
Python
Node.js
Чтобы удалить сообщение «Любой, у кого есть ссылка», может заполнить форму:
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
Закрыть форму
Чтобы снять форму с публикации, используйте метод Forms.setPublished(false). (/apps-script/reference/forms/form#setPublished(Boolean)) Снятие формы с публикации делает её недоступной и автоматически прекращает приём ответов.
ОТДЫХ
Пример текста запроса
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
Чтобы прекратить прием ответов на форму, не снимая ее с публикации, можно использовать метод Form.setAcceptingResponses(false) . Участники, ответившие на вашу форму, увидят страницу с закрытой формой и соответствующее сообщение.
ОТДЫХ
Пример текста запроса
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
Проверьте, является ли форма устаревшей.
Устаревшие формы — это формы, в которых отсутствует поле publishSettings , тогда как все вновь созданные формы поддерживают параметры публикации.
Проверьте, является ли форма устаревшей, определив, поддерживает ли она публикацию. Этот метод используется для определения того, включены ли методы setPublished(enabled) и isPublished() , а также разрешения обработчика событий.
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}`);
}
}