npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

gasworker

v3.0.2

Published

GASWorker is a library for the script that requires a long run in the Google Apps Script.

Downloads

1

Readme

GASWorker NPM version

GASWorker は Google Apps Script で長時間の実行を必要とするスクリプトのためのライブラリです。

Read this in other languages: English, 日本語.

Description

Google Apps Script はスクリプトの最大実行時間6分の 制限 があります。 GASWorker はこの制限を超えて長時間に渡ってスクリプトを実行する場合に、便利な機能を提供します。

GASWorker は分割された長時間の処理を 時間ベースのトリガー の時間制限内に収まるように呼び出すことで、長時間に渡るスクリプトの実行を擬似的に実現します。

長時間に渡って実行するスクリプトの処理を分割するのは GASWorker の利用者が行います。 GASWorker その分割された処理を時間ベースのトリガーを利用して呼び出します。

Usage

Initialize

var gwConfig = {
  callbackTarget: this,

  doTask: function(token, userContext) {
    var cell = userContext.sheet.getRange(token + 1, 1);
    cell.setValue("doTask:" + new Date().toLocaleString() + "\n" + "token:" + token);
    SpreadsheetApp.flush();
    Utilities.sleep(10 * 1000);
    token++;
    return token < 30 ? token : null;
  },

  getProperties: function() {
    return PropertiesService.getScriptProperties();
  },
  getLock: function() {
    return LockService.getScriptLock();
  }
};

GASWorker.setup(gwConfig);
  • 最初にGASWorker.setup() 関数を呼び出して初期化を行います。 引数には設定オブジェクトを指定します。設定オブジェクトについては Define configuration object を参照してください。

  • getLock 関数はGASWorkerにアプリケーションスクリプトの Lock オブジェクトを提供する必要があります。

  • getProperties 関数はGASWorkerにアプリケーションスクリプトの Properites オブジェクトを提供する必要があります。

Define configuration object

設定オブジェクトには GASWorker からコールバックされる関数や GASWorker が参照する値を設定します。

Define doTask function

doTask: function(token, userContext) {
  Logger.log("doWork:" + new Date().toLocaleString() + "\n" + "token:" + token);
  Utilities.sleep(10 * 1000);
  token++;
  return token < 30 ? token : null;
}

doTask には分割した処理を定義します。 doTask は時間ベースのトリガーから呼び出されます。

doTask の戻り値は、 doTask が次に呼び出される時の token 引数になります。 nullを返すと、 doTask は呼び出されなくなり、処理が終了します。

引数 token は 最初は GASWorker.execute() の引数が渡されます。 その後は、直前に呼び出された doTask の戻り値が渡されます。

引数 userContext は任意の値を追加・変更・削除できるオブジェクトです。 userContext オブジェクトの寿命は Google Apps Script プロセスを同じです。

注意:GASWorker.doTaskは6分以内に終了するようにしてください。

Define beforeTasks function

beforeTasks: function(token, userContext) {
  Logger.log("Hook before trigger start.");
}

beforeTasks 関数の定義はオプションです。 beforeTasks 関数を使ってタスクの開始前のタイミングをフックできます。

Define afterTasks function

afterTasks: function(token, userContext) {
  Logger.log("Hook before trigger end.");
}

afterTasks 関数の定義はオプションです。 afterTasks 関数を使ってタスクの終了前のタイミングをフックできます。

Define done function

done: function() {
  Logger.log("done() : cancelled=" + GASWorker.isCancelled());
}

GASWorker.executeで開始した処理が終了するとdoneが呼び出されます。 doneの定義は任意です。定義しない場合は何もしません。

Start Task

function start() {
  Logger.log("execute() : " + GASWorker.execute(0));
}

GASWorker.execute 関数を呼び出すと時間ベースのトリガーをインストールします。 インストールしたトリガーからdoTask関数が呼び出されます。

Cancel

function cancel() {
  GASWorker.cancel();
}

GASWorker.executeで開始した処理を途中で終了する場合、 GASWorker.cancel()関数を呼び出します。

Install

npmパッケージとして使う

$ npm install gas-worker --save

Browserifygasify と一緒に使うことをお勧めします。

ライブラリとして使う

Google Apps Script のライブラリとして使用できます。

  • Project Key : MgArHDn4Cqyu5Dem4eLAklPFqzDO4jqHr

Licence

MIT

Author

fossamagna