Apps Scriptリファレンス: Apps Script Reference |障害・課題追跡: IssueTracker |Google Workspace: Status Dashboard - Summary

2025年5月13日火曜日

Google Formsで回答を1回に制限したい(setLimitOneResponsePerUser)


Googleフォームでは同じ回答者からの「回答を1回に制限する」ことができます

この機能は回答者がGoogleにログインしていることが前提となります



「回答を1回に制限する」をオンにするには


「設定 > 回答 > 回答を1回に制限する」はデフォルトでオフになっています


それをオンにします
オンにすると左下に「[別の回答を送信するためのリンクを表示]がオフになりました」

というメッセージが表示されます


これは「回答を1回に制限する」と

表示設定の「別の回答を送信するためのリンクを表示」が連動してオフになるためです


「別の回答を送信するためのリンクを表示」がオンになっていると

回答後に「別の回答を送信」というリンクが表示されます


オフになるとそのリンクは表示されなくなります

このように回答を1回に制限した場合は別の回答ができなくなります



その後「回答を1回に制限する」がオンの状態で

一度回答したフォームを開くと「既に回答済みです」と表示されるようになります




Apps Script で作成する場合

以下の Code.gs は Google Formsで単一選択の質問を作りたい  で書いたコードをベースに

form.setLimitOneResponsePerUser(true) を追加したものです

createSingleResponseForm() を実行すると

「回答を1回に制限する」がオンになったフォームが作成されます



Code.gs
function createSingleResponseForm() {
const formName = 'Favorite Color Survey';
const description = 'Please tell us your favorite color.';
const title = 'What is your favorite color?';
const color = ['Red', 'Blue', 'Green', 'Yellow'];

const form = FormApp.create(formName);
form.setDescription(description);
form.setLimitOneResponsePerUser(true); // 1人1回に制限(Googleログインが必要)

const item = form.addMultipleChoiceItem();
item.setTitle(title)
.setChoiceValues(color)
.showOtherOption(true)
.setRequired(false);

form.setPublished(false);

Logger.log('Form Edit URL: ' + form.getEditUrl());
}


Tips

「回答を1回に制限する」「別の回答を送信するためのリンクを表示」どちらもオフの場合

回答後に別の回答を送信するためのリンクは表示されませんが

回答を1回に制限していないため

URLを再度開くことで別の回答を送信することが可能です



回答を1回に制限している場合←今回書いたのはこれ

Googleアカウントによるログインが必須になるので

同一アカウントからは2回目以降の回答はできなくなります



「回答を1回に制限する」がオンでGoogleにログインしていない場合

フォームを開くと「続行するにはログインしてください」という画面が表示されます



Reference

setLimitOneResponsePerUser(enabled) 



関連記事



Latest post

Google Formsでスプレッドシートに用意した質問を読み込んでみる(クイズ対応)

今回はGoogleフォームでスプレッドシートからデータを読み込んでクイズを作ります 事前に「質問・選択肢・フィードバック」をスプレッドシートに入力して それを読み込んでクイズモードのフォームを作ってみます 事前に用意するスプレッドシートの構造 A列に質問 B列に選択肢 先頭が正解...