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等で制御しても同じ値が取得されてしまうことが有るようです。
このあたりの詳しい説明等どこかに有りませんでしょうか
以上。よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。