این صفحه نحوه انجام این وظایف مربوط به فرمها را شرح میدهد:
- فرم را منتشر کنید تا پاسخدهندگان بتوانند به آن دسترسی داشته باشند
- یک پاسخدهنده به فرم خود پیدا کنید
- فرم خود را با پاسخدهندگان بیشتری به اشتراک بگذارید
- پاسخدهندگان را از فرم خود حذف کنید
- بررسی کنید که آیا فرم از «هر کسی که لینک دارد» پاسخ میپذیرد یا خیر
- بستن یک فرم
- لغو انتشار فرم
- توقف پذیرش پاسخها به یک فرم
- بررسی کنید که آیا یک فرم، فرم قدیمی است یا خیر
قبل از اینکه شروع کنی
قبل از ادامهی وظایف این صفحه، وظایف زیر را انجام دهید:
شناسه فرم را دریافت کنید. شناسه فرم هنگام ایجاد فرم با استفاده از
forms.createدر فیلدformIdپاسخ برگردانده میشود.
فرم را منتشر کنید تا پاسخدهندگان بتوانند به آن دسترسی داشته باشند
شما میتوانید یک فرم موجود را با استفاده از متد forms.setPublishSettings منتشر کنید.
متد
forms.setPublishSettingsرا با شناسه فرم فراخوانی کنید.
استراحت
متن درخواست نمونه
{
"publishSettings": {
"isPublished": true,
"isAcceptingResponses": true
}
}
اسکریپت برنامهها
/**
* 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}`);
}
}
پایتون
نود جی اس
پاسخدهندگان به فرم خود را پیدا کنید
شما میتوانید با استفاده از Form.getPublishedReaders() لیستی از تمام کاربرانی که دسترسی پاسخدهنده (نقش PUBLISHED_READER) دارند را بازیابی کنید. این تابع آرایهای از اشیاء کاربر را برمیگرداند.
استراحت
پارامتر query includePermissionsForView=published به URL درخواست اضافه کنید.
اسکریپت برنامهها
/**
* 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}`);
}
}
پایتون
نود جی اس
فرم خود را با پاسخدهندگان بیشتری به اشتراک بگذارید
برای اضافه کردن پاسخدهندگان به یک فرم به طوری که بتوانند آن را باز کرده و به آن پاسخ دهند، میتوانید از متد Drive permissions.create استفاده کنید.
متد
permissions.createرا با شناسه فرم و تنظیمات دسترسی فراخوانی کنید.
استراحت
متن درخواست نمونه
{
"view": "published",
"role": "reader",
"type": "user",
"emailAddress": "user@example.com"
}
اسکریپت برنامهها
/**
* 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}`);
}
}
پایتون
نود جی اس
پاسخدهندگان را از فرم خود حذف کنید
شما میتوانید پاسخدهندگان را به صورت جداگانه از طریق آدرس ایمیل یا با استفاده از شیء کاربر حذف کنید. حذف یک پاسخدهنده، توانایی او را برای مشاهده و ارسال فرم سلب میکند، مگر اینکه از طریق روشهای دیگری مانند اشتراک دامنه یا دسترسی به درایو مشترک، به فرم دسترسی داشته باشد.
حذف یک پاسخدهنده واحد از طریق آدرس ایمیل
استراحت
DELETE https://www.googleapis.com/drive/v3/files/{fileId}/permissions/{permissionId}
permissionID را میتوان با فهرست کردن پاسخدهندگان همانطور که قبلاً توضیح داده شد، پیدا کرد.
اسکریپت برنامهها
/**
* 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}`);
}
}
پایتون
نود جی اس
بررسی کنید که آیا فرم پاسخهای «هر کسی که لینک دارد» را میپذیرد یا خیر
برای بررسی اینکه آیا فرم از هر کسی که لینک دارد پاسخ دریافت میکند یا خیر، باید سرویس پیشرفته درایو را فعال کنید.
- سرویس پیشرفته درایو را روشن کنید:
- پروژه Apps Script خود را باز کنید.
- روی خدمات (آیکون بعلاوه کنار خدمات ) کلیک کنید.
- Drive API را پیدا کنید و روی افزودن کلیک کنید.
- روی افزودن کلیک کنید.
اسکریپت برنامهها
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;
}
پایتون
نود جی اس
برای تنظیم «هر کسی که لینک دارد» میتواند به فرم پاسخ دهد:
اسکریپت برنامهها
function setAnyoneWithLinkResponder(formId) {
Drive.Permissions.create({
type: 'anyone',
view: 'published',
role: 'reader',
}, formId);
}
پایتون
نود جی اس
برای حذف «هر کسی که لینک دارد» میتواند به فرم پاسخ دهد:
اسکریپت برنامهها
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);
}
}
}
}
پایتون
نود جی اس
بستن یک فرم
برای لغو انتشار یک فرم، از متد Forms.setPublished(false) استفاده میکنید. (/apps-script/reference/forms/form#setPublished(Boolean)) لغو انتشار یک فرم، آن را از دسترس خارج کرده و به طور خودکار از پذیرش پاسخها توسط آن جلوگیری میکند.
استراحت
متن درخواست نمونه
POST https://forms.googleapis.com/v1/forms/{formId}:setPublishSettings
{
"publishSettings": {
"publishState": {
"isPublished": false
}
}
}
اسکریپت برنامهها
/**
* 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}`);
}
}
پایتون
نود جی اس
برای متوقف کردن پذیرش پاسخهای یک فرم بدون لغو انتشار آن، میتوانید از متد Form.setAcceptingResponses(false) استفاده کنید. پاسخدهندگان به فرم شما، صفحه فرم بسته شده و پیام مربوطه را مشاهده خواهند کرد.
استراحت
متن درخواست نمونه
POST https://forms.googleapis.com/v1/forms/{formId}:setPublishSettings
{
"publishSettings": {
"publishState": {
"isPublished": true,
"isAcceptingResponses": false
}
}
}
اسکریپت برنامهها
/**
* 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}`);
}
}
پایتون
نود جی اس
بررسی کنید که آیا یک فرم، فرم قدیمی است یا خیر
فرمهای قدیمی فرمهایی هستند که فیلد publishSettings را ندارند، در حالی که همه فرمهای جدید ایجاد شده از تنظیمات انتشار پشتیبانی میکنند.
با تعیین اینکه آیا فرم از انتشار پشتیبانی میکند یا خیر، بررسی کنید که آیا از نوع legacy است یا خیر. این متد برای تعیین اینکه آیا متدهای setPublished(enabled) و isPublished() و مجوزهای پاسخدهنده فعال هستند یا خیر، استفاده میشود.
اسکریپت برنامهها
/**
* 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}`);
}
}