GAS-Terminal: Google Apps Scriptをスマートに実行できる環境

GAS-Terminal

※この記事は「GAS-Terminal: Environment for smart execution of Google Apps Script」を翻訳したものです。

GASを動かすのは面倒

Google Apps Script(GAS)は好きですか?私もです! 👍
私はこれまで、システムの処理やデータの管理を行うために、たくさんのGASを書いてきました。ほとんどの場合、様々なトリガーによって自動的に実行されますが、時々、手でスクリプトを実行する必要があります。その時に、”GASの実行は面倒だ!”と思います。なぜ?その理由は、実行して結果を確認するスマートな方法がないからです😓。

いつもどのように実行していますか?

1. スクリプトエディタ

もっとも身近な方法かもしれません。コードを書いて、実行ボタンをクリックする。それだけです。しかし、いちいちスクリプトエディタを開くのは面倒ですし、関数のパラメータを変更したいときはコードを変更しなければなりません。

2. シートに配置したボタン

もう一つの方法は、スプレッドシートにボタンを配置し、そのボタンに関数を関連付けることです。この記事では、その方法を説明します。この方法は、スクリプトエディタを開いて関数を実行するよりも少し簡単です。しかし、関数の数が増えるとボタンの数も増え、整理しにくくなる傾向があります。また、関数のパラメータを変更できないという問題も残っています。さらに、スクリプトの実行結果を知りたい場合は、シートへの出力を実装していない限り、スクリプトエディタを開く必要があります。

GAS-Terminalの登場です!

そこで、私はGASの管理や運用を簡単にするためのツールを作りました。その名も「GAS-Terminal」です(Terminalという名前は、様々なコマンド(つまり関数)をTerminalのように切り替えて実行できるから)。このツールはGoogle Sheetsに実装されていて、このシートに関連付けられたスクリプトの関数を実行することができます。

使い方を知りたい方は、GitHub リポジトリをご覧ください !

以下は実行例です。

どのように実現しているか?

コマンド定義シートの読み込みや、コマンド切り替え時の処理など、細かい点はありますが、単純にeval関数を使ってコマンドを実行しています。
以下に実行ロジックをご紹介します。

// Clears the log. 
TerminalSheet.instance.clearLog();
// Sets the TerminalSheet as logger.
LogUtils.logger = TerminalSheet.instance;
// Gets the command definition.
let commandDef:CommandDefinition = CommandsSheet.instance.findCommand(commandName);
// Makes the parameter string.
let params:string[] = TerminalSheet.instance.getParams();
let paramsStr:string = "";
if( params.length > 0 ){
paramsStr = '"' + params.join('","') + '"';
}
// Make the function call string.
let callStr:string = commandDef.funcName + "(" + paramsStr + ")";
// Executes
eval(callStr);

結論

私はこのツールを使って、システムのメンテナンスのために13のコマンドを実行しています。皆さんはいつもどのようにGASを実行していますか?このツールが皆様のお役に立てれば幸いです。

私はこのツールを改良し続けます。今のところの次の目標は、長時間実行への対応を取り入れることです。
何か良いアイデアがあれば、ぜひ教えてくださいね。😃

--

--

インクルキャット JP
インクルキャット JP

Written by インクルキャット JP

情報格差の壁に挑む(挑みたい)個人アプリ開発者。

No responses yet