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

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

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

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

Q&A

0回答

218閲覧

Google フォームの確認メッセージの受付番号が重複する

ken2024

総合スコア0

Google Apps Script

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

0グッド

1クリップ

投稿2024/07/31 05:56

実現したいこと

過去の質問
上記の記事のベストアンサーの上側の方法で受付番号を表示していますが、ほぼ同時(誤差数秒)に複数のグーグルフォームの送信があった場合に同じ受付番号が表示されてしまいます(スプレッドシート上は重複しないが、異なるグーグルフォームの確認メッセージに同じ受付番号が表示される)。
ほぼ同時に送信されても重複表示しないようにする解決策はあるでしょうか?

発生している問題・分からないこと

ほぼ同時刻にグーグルフォームを送信した人に、同じ受付番号が表示されてしまう。

エラーメッセージ

error

1エラーメッセージはでません。

該当のソースコード

GAS

1// 回答が蓄積されるスプレッドシートに 2// 「フォーム送信時」のトリガーを設定し保存する 3// 回答が蓄積されるシート(フォームの回答1など)の 4// タイムスタンプの左に列を挿入し受付番号の列とする。 5function onFormSubmit(e) { 6 if (!e) { 7 console.log('エディタから起動できません。フォームから回答してください。'); 8 return; 9 } 10 const range = e.range; 11 const sheet = range.getSheet(); 12 const row = range.getRow(); 13 //記録された回答の行番号から受付番号を生成し、A列に記録 14 let numberReceipt = 9999 + row; 15 sheet.getRange(row, 1).setValue(numberReceipt); 16 //セクションの説明を次の受付番号に変更 17 const nextNumber = numberReceipt + 1; 18 const form = FormApp.openByUrl(sheet.getFormUrl()); 19 form.setConfirmationMessage(`受付番号は、${nextNumber} です。\n番号を控えておき、問い合わせの際はこの番号をお知らせください。`); 20}

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

 自動生成メールで、受付番号をお知らせする記事はたくさんありましたが、確認メッセージに表示する記事自体が全然見つけられず、同種のエラーの記事も確認できませんでした。解決する方法はないか教えていただけるとうれしいです。よろしくお願いいたします。

補足

特になし

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

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

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

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

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

YellowGreen

2024/07/31 12:12

> ほぼ同時(誤差数秒)に複数のグーグルフォームの送信があった場合 私には、そこまで同時に送信する環境を構築できない(なんどかやっても同時にならない)ので 動作確認ができないのですが、 ロックサービスを使うと実現可能かもしれません。 どなたか、実証できる環境をお持ちの方に回答していただけるといいですね。
ken2024

2024/07/31 13:39

コメントありがとうございます。 >同時に送信する環境を構築:スマホとPCでフォームを開いて、予め項目を入力後、同時に送信ボタンを押したり、グーグルクロームの通常ウインドウとシークレットウインドウを2窓で開き、項目を入力後送信ボタンを素早く2つ押すことで対応できると思います。 >同時にならない:スプレッドシートにタイムスタンプが残るのですが、今のところ、タイムスタンプの時差が3秒未満だと、同じ受付番号が表示されてしまい、それ以外だと通常通り違う受付番号が表示されています。 >ロックサービス:情報提供ありがとうございます。調べてみます。
YellowGreen

2024/08/01 10:02

ご提案のシークレットウィンドウでやってみました。 同一番号が表示される動作の機序を再確認できました。 このスクリプトは、 回答があった際にシートに受付番号を記録したあとに その番号の次の番号でフォームの説明を更新しておくものです。 同じ番号が表示される理由が 次のどちらかなのか思い出せなかったので 確認したかったのです。 A: 先発のスクリプトが番号を更新した直後に 後発のスクリプトが番号を更新して 両者ともに後発者の受付番号が表示されてしまう B: 先発のスクリプトが番号を更新する前に 後発者の確認画面が表示されてしまう Aだと思っていたのでロックサービスでBの更新を 待たせればなんとかなるかなと考えたのですが、 Bのようなのでロックサービスでは対応できなさそうです。 動作の機序があやふやなままで提案してしまい ごめんなさい。
YAmaGNZ

2024/08/01 11:22

フォーム側でのトリガーでも試してみましたがやはりスクリプトが動作する前に確認メッセージが表示されるようでスクリプトでの書き換えは表示後となりました。
YellowGreen

2024/08/02 11:26 編集

YAmaGNZ様、フォームの方のトリガーの方が反応が早いと思うので試していただいたのですね。 ありがとうございます。 前回の質問者様はメアドを収集できない事情があったようで タイムスタンプが近い場合の番号の重複をチェックするようにお願いしましたが、 それが困難なのであれば、 フォームに表示するのでは対応できないので、 確実に対応するには、メールアドレスを記入または収集してもらって メールで送信するのがよろしいかと… お役に立たず、 お気に召さないコメントをしてしまって 誠に申し訳ありませんでした
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.32%

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

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

質問する

関連した質問