Skip to content

Instantly share code, notes, and snippets.

@xl1
Created February 15, 2016 15:34
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save xl1/6d5f120c42be56b215f1 to your computer and use it in GitHub Desktop.
Save xl1/6d5f120c42be56b215f1 to your computer and use it in GitHub Desktop.
Google Apps Script で二重起動を防止する

Google Apps Script で二重起動を防止する

Google Apps Script で 1 分ごとの time-based trigger をセットしておくと、たまに複数回実行されてしまうことがある感じがする

もちろん 1 分以上かかる可能性のある処理を行うと、同時に複数実行されることはある (あるいは起動時間長すぎエラーで強制終了される)わけだが、どうもそれだけではない

Google Apps Script は lock の仕組みが提供されているので、これを明示的に使うようにしたら安定した

// trigger entry point
function start () {
    var lock = LockService.getScriptLock();
    if (lock.tryLock(1)) {
        doSomething();
        lock.releaseLock();
    }
}

24 時間休まず 1 分ごとにトリガーできるそこそこ安定した無料の環境、けっこう貴重な気がする

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment