🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google フォーム

Google フォームは、 Google社が提供しているアンケートフォーム作成および集計ができる無料のツール。Googleアカウントがあれば利用が可能です。集計データは、スプレッドシートに収集され、データ分析もできます。

Google Apps Script

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

Q&A

解決済

1回答

1223閲覧

[GAS]onFormSubmit時に回答に対してユニークな連番を振りたい(プロパティサービス(PropertiesService)の更新タイミングについて)

shiku

総合スコア16

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google フォーム

Google フォームは、 Google社が提供しているアンケートフォーム作成および集計ができる無料のツール。Googleアカウントがあれば利用が可能です。集計データは、スプレッドシートに収集され、データ分析もできます。

Google Apps Script

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

0グッド

0クリップ

投稿2019/11/22 01:25

PropertiesServiceについて

googleフォームからの回答にユニークな番号(連番)をつけてスプレットシートに保存しようと思い
下記のようなコードを書きました

GAS

1function onFormSubmit(e){ 2 var v = e.values; 3 var lock = LockService.getDocumentLock(); 4 if(lock.tryLock(1000)){ 5 var no = PropertiesService.getScriptProperties().getProperty("NOKEY"); 6 PropertiesService.getScriptProperties().setProperty("NOKEY",String(Kessai_No+1)); 7 v[0] = no; 8 var Spsheet = SpreadsheetApp.openById("シートID"); 9 var sheet = Spsheet.getSheetByName("シート名"); 10 sheet.appendRow(v); 11 lock.releaseLock(); 12 } 13} 14

この時、同時に何個か(4・5個)のフォームを送信すると
lockをしているはずなのに、no列に同じ値が入ることが有ります。
途中に Utilities.sleep(10000);
等を入れ、処理を遅らせれば少し安定するのですが、
それでもまれに同じ値が入ります。
どうにかユニークな連番を取得することができないでしょうか

また、PropertiesServiceのプロパティの更新はどのようなタイミングで行われるのでしょうか。
いくつか試してみたところ、同一の処理では再度取得したとき、更新された値が取れるのですが、
平行して同時に実行したとき、Lock等で制御しても同じ値が取得されてしまうことが有るようです。
このあたりの詳しい説明等どこかに有りませんでしょうか

以上。よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

やるならscriptlockではないかと思います。

ところで本題の回答ですが、
そのような不安定で仕様として動作が保証されていないものに依拠して設計するのが良いことだとは思えません。
データベースではないので過剰な期待です。
回答は設定のみでスプレッドシートに取り込めるので、回答期限が終わってから、加工集計する際に考慮すれはよいはずです。

投稿2019/11/26 01:25

papinianus

総合スコア12705

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問