Halaman ini menjelaskan cara melakukan tugas berikut yang melibatkan formulir:
- Memublikasikan formulir agar responden dapat mengaksesnya
- Menemukan responden untuk formulir Anda
- Membagikan formulir kepada lebih banyak responden
- Menghapus responden dari formulir
- Periksa apakah formulir menerima respons dari 'Siapa saja yang memiliki link'
- Menutup formulir
- Membatalkan publikasi formulir
- Berhenti menerima respons ke formulir
- Memeriksa apakah formulir adalah formulir lama
Sebelum memulai
Lakukan tugas berikut sebelum melanjutkan tugas di halaman ini:
Mendapatkan ID formulir. ID formulir ditampilkan di kolom
formId
respons saat Anda membuat formulir menggunakanforms.create
.
Memublikasikan formulir agar responden dapat mengaksesnya
Anda dapat memublikasikan formulir yang ada dengan metode
forms.setPublishSettings
.
Panggil metode
forms.setPublishSettings
dengan ID formulir.
REST
Contoh isi permintaan
{
"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
Menemukan responden untuk formulir Anda
Anda dapat mengambil daftar semua pengguna yang memiliki akses responden (peran PUBLISHER_READER) menggunakan Form.getPublishedReaders(). Tindakan ini akan menampilkan array objek pengguna.
REST
Tambahkan parameter kueri includePermissionsForView=published
ke URL permintaan.
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
Membagikan formulir kepada lebih banyak responden
Untuk menambahkan responden ke formulir agar mereka dapat membuka dan meresponsnya, Anda dapat menggunakan
metode permissions.create
Drive.
Panggil metode
permissions.create
dengan ID formulir dan setelan akses.
REST
Contoh isi permintaan
{
"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
Menghapus responden dari formulir
Anda dapat menghapus setiap responden berdasarkan alamat email mereka atau menggunakan objek Pengguna. Menghapus responden akan mencabut kemampuan mereka untuk melihat dan mengirimkan formulir, kecuali jika mereka memiliki akses melalui cara lain seperti berbagi domain atau akses drive bersama.
Menghapus satu responden berdasarkan alamat email
REST
DELETE https://www.googleapis.com/drive/v3/files/{fileId}/permissions/PERMISSION
permissionID dapat ditemukan dengan 'mencantumkan responden' seperti yang dijelaskan sebelumnya
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
Periksa apakah formulir menerima respons dari 'Siapa saja yang memiliki link'
Untuk memeriksa apakah formulir menerima respons dari siapa saja yang memiliki link, Anda harus mengaktifkan Layanan Lanjutan Drive.
- Aktifkan Layanan Lanjutan Drive:
- Buka project Apps Script Anda.
- Klik Layanan (ikon plus di samping Layanan).
- Temukan Drive API, lalu klik Tambahkan.
- Klik Tambahkan.
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
Untuk menetapkan 'Siapa saja yang memiliki link' dapat merespons formulir:
Apps Script
function `setAnyoneWithLinkResponder`(formId) {
Drive.Permissions.create({
type: 'anyone',
view: 'published',
role: 'reader',
}, formId);
}
Python
Node.js
Untuk menghapus opsi 'Siapa saja yang memiliki link' agar tidak dapat merespons formulir:
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
Menutup formulir
Untuk membatalkan publikasi formulir, Anda menggunakan metode Forms.setPublished(false). {/apps-script/reference/forms/form#setpublishedenabled} Membatalkan publikasi formulir akan membuatnya tidak tersedia dan otomatis menghentikannya menerima respons.
REST
Contoh isi permintaan
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
Untuk berhenti menerima respons formulir tanpa membatalkan publikasinya, Anda dapat menggunakan metode Form.setAcceptingResponses(false)
.
Responden formulir Anda akan melihat halaman dan pesan formulir yang ditutup.
REST
Contoh isi permintaan
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
Memeriksa apakah formulir adalah formulir lama
Formulir lama adalah formulir yang tidak memiliki kolom publishSettings, sedangkan semua formulir baru yang dibuat mendukung setelan publikasi.
Periksa apakah formulir merupakan formulir lama atau tidak dengan menentukan apakah formulir mendukung
publikasi. Metode ini digunakan untuk menentukan apakah
metode setPublished(enabled)
dan isPublished()
,
serta izin responden diaktifkan.
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