doGet()
doPost()
のスプレッドシートと、いくつかの更新を行うためのタイムドトリガーがあります。私はこれらをお互いにブロックしたい。まあロックサービス...うまくいけば。Google Appスクリプトとパブリックロック
LockServiceのGoogleドキュメントにはgetPublicLock()
メソッドが記載されておらず、自分のニーズに固有のものが見つからないようです。上記のドキュメントでは、getDocumentLock()
は、特に有用ではないウェブアプリでnull
を返すとのことですが、ウェブページの一般的な投稿は、同時に実行されるコードの停止を提案しています。私が望むのは、データが更新されているときにデータの要求を停止することです。
私はそれをテストしようとしましたが、これを私の満足感までテストするのに十分長い間スクリプトを実行することはできません。
私が使用している場合:すべての3つのエントリポイントで
var lock = LockService.getPublicLock();
lock.waitLock(30000);
を他の呼び出しが呼び出されたときに、スクリプトが正常にロックされますか?
スクリプトロックによって守らコードセクションを同時に実行することはできませんがない - 私はそれを望んでいないし。セクションを実行するのではなく、コードを実行する必要はありません。 –
ありがとうございます。私が間違っている場合は私を修正しますが、このようなものを使用することで解決できないでしょう: function doGet(e) { var lock = LockService.getScriptLock(); var success = lock.tryLock(10000); if(!success){ return; } } それはひどくフォーマットされているので: doGetとdoPostを開始することはできませんロックを取得し、予約されている場合は戻って - どのようなユーザーは、更新中にデータを要求できません。 – FatFingersJackson
それは私の質問の基礎でもあります:)ドキュメントは、コードセクションをブロックしていると言います。 doGet()とdoPost()は別々のコードです。すべての入力ポイントが呼び出す一般的なロック関数を書くことができます。これは、後でリリースするためにロックを返しますが、必要に応じてスクリプトがブロックされていれば、その必要はありません。 –