質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

3回答

5521閲覧

Google formで回答が完了するたびにGASを使用して5桁の乱数を表示させたい

machi1092

総合スコア12

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

0グッド

0クリップ

投稿2020/10/12 05:00

前提・実現したいこと

▼実現したいこと
Google formで回答が完了するたびに、確認画面で5桁の乱数を表示させたい。

発生している問題・エラーメッセージ

  • 回答完了画面に乱数を表示させることは出来ている。
  • だが、(体感)5~10分以内に再度回答すると、1回目の回答と同じ乱数が表示されてしまう。
  • それを回答のたびに違う乱数にしたい。

該当のソースコード

function myFunction() { //シートの取得 var form = FormApp.openById('hoge'); // 乱数の取得 var random_number = Math.floor(Math.random() * 100000); //メッセージの修正 var before_random_message = "回答を記録しました。あなたの完了コードは「"; var after_random_message = "」です。"; var message = before_random_message.concat(random_number, after_random_message); //確認メッセージの変更 form.setConfirmationMessage(message) }

試したこと

  • 回答している時間が短すぎてコードが実行しきらなかった可能性があると思ったが、時間をかけても同じ結果になる。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

これは実現できません。

参考:https://stackoverflow.com/questions/22738404/how-to-set-confirmation-message-based-on-form-responses-in-google-forms-using-ap

form.setConfirmationMessage()はたしかにフォームの回答画面を設定するメソッドですが、リアルタイムに回答内容から編集できるようなつくりになっていないためです。

回答者に完了コードを提示したい場合には、メールを送付するしかなさそうです。

投稿2020/10/12 07:59

macaron_xxx

総合スコア3191

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

回答完了画面に乱数を表示させることは出来ている。
だが、(体感)5~10分以内に再度回答すると、1回目の回答と同じ乱数が表示されてしまう。

からすると、おそらく完了時のトリガーでフォームの設定そのものをいじっているのでしょう。
当然非同期な編集なので、即座に反映されない(低確率で random が衝突するとは思いますが、5桁だと人間が適当に試して体感で推測がつくほど衝突するオーダーではないと思います)。

確認メッセージが確定するのが、いつなのか、という問題もあると思います。

いずれにしてもコードでユーザ(google apps script のユーザ)がコントロール可能な内容ではないです。

それよりもそもそも回答者に"あなたの完了コードは"と伝えているのに、それを回答側にフィードバックできてないので意味がないです。
(原理的に回答者と回答に同じ内容を共有できないことから、第一回答が"実現できない"としておられると思います)

投稿2021/01/14 01:06

papinianus

総合スコア12705

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

Google formで回答が完了するたびに

これを「送信」ボタンを押下したときと解釈します。
まず
Google Apps Scriptでフォーム送信時にメッセージを送るスクリプトの作り方
のように「フォーム送信時のトリガー」設定を「myFunction」で登録されていますでしょうか?

次に「送信」ボタン押したら元の「Google form」が表示されなくなります。
そうすると表示させる場所がないのでは?

※ちなみにGAS側から「Google form」を開くことはできません。

Google Apps Scripts による Google フォームのフォームクラス設定を変更する
こちらでの対応になるかと思います。

投稿2020/10/12 08:14

kuma_kuma_

総合スコア2506

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問