gasworker v3.0.2
GASWorker
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[Browserify](http://browserify.org/ga)、 [gasify](https://www.npmjs.com/package/gasify) と一緒に使うことをお勧めします。
ライブラリとして使う
Google Apps Script の[ライブラリ](https://developers.google.com/apps-script/guide_libraries)として使用できます。
- Project Key : MgArHDn4Cqyu5Dem4eLAklPFqzDO4jqHr
Licence
[MIT](LICENCE.txt)
Author
[fossamagna](https://github.com/fossamagna)
10 years ago