最近、エディタを VS code に移行し、校正ツールを TextLint にしました。
以前、RedPen の SuggestExpression のために作成した TSV があり、
これを prh.yml に変換したかったので、Google スプレッドシート の内容を prh.yml にする Google Apps Script を作ってみました。
作成したものについて記載します。
作成したスクリプト
に、置いてあります。clasp を使って TypeScript で 実装してみました。
以下の機能があります。
- 初期化。config シートを作成する。
- config シート の記載内容を元に、prh.yml を生成する。
使い方
前提
Node.js と、clasp のインストールが前提で必要です。
参考になる記事をリンクしておきます。
- Node.js npm の インストール。
- clasp の インストール。
リポジトリをクローンする
git clone https://github.com/kemsakurai/gas-prhConfigGenerator.git <project_name>
クローンしたディレクトリに移動して、npm install
を実行する
cd <project_name>
npm install
.clasp.json
のスクリプト ID を変更する
記録先となるスプレッドシートを作成し、コンテナバインドスクリプト のスクリプト ID を取得します。
スクリプト ID の取得手順は以下の通りです。
- 作成したスプレッドシートのツールからスクリプトエディタを開きます。
-
スクリプトエディタが起動します。ファイルメニューのプロジェクトのプロパティを開きます。
-
ウィンドウが開きます。スクリプト ID が表示されるのでコピーします。
-
.clasp.json
の内容を修正
.clasp.json
の scriptId に 取得した スクリプト ID を貼り付けます。
{ "scriptId": "<your_script_id>", "rootDir": "dist" }
ビルド、デプロイ
-
ビルド
bundle.js
を dist ディクレトリ配下に作成します。
npm run build
-
デプロイ
ビルドし、.clasp.json
に指定したスクリプトに対してデプロイを実施します。
npm run deploy
スプレッドシートの設定、prh.yml 生成
スクリプトのデプロイが完了すると、以下のようなメニューが表示されます。
config のシートの作成、prh.ymlの作成を行います。
1. Initialize
initialize を実行し、config シートを作成します。
以下のようなレイアウトのシートが作成されます。
2. Open Download Dialog
config シートの内容をもとに、Google ドライブ上に、prh.yml を作成し、作成したファイルのダウンロード URL を ダイアログに表示します。
以下、作成した prh.yml の抜粋です。
* prh.yml
version: 1
rules:
- expected: (10)
pattern: 10.
- expected: (1)
pattern: 1.
- expected: (2)
pattern: 2.
- expected: (3)
pattern: 3.
- expected: (4)
pattern: 4.
- expected: (5)
pattern: 5.
- expected: (6)
pattern: 6.
- expected: (7)
pattern: 7.
- expected: (8)
pattern: 8.
- expected: (9)
pattern: 9.
- expected: ActionController
pattern: Action Controller
....
スクリプトの動作の説明、作り込みできてない部分
以下、スクリプトの動作について説明します。
-
作成する yml ファイルについて
Google Drive の ルートディレクトリに、PrhConfig
というディレクトリを作成し、その中に{Date.getTime()の戻り値}_prh.yml
の形式でファイルを作成します。 -
yml ファイルのサポートする書式について
prh
は任意項目で入力されている場合は、以下のような出力になります。
- expected: ActionController pattern: Action Controller prh: ActionController が正しい
prh はその他のフォーマットもサポートしていますが、スプレッドシート の入力内容からの変換が手間がだったのと、 RedPen の SuggestExpression の TSV ファイルを変換するのが目的だったので、このレベルの実装でなんとかなりました。
-
正規表現について
正規表現のエスケープする処理を実装していますが、上手く変換できていないようで、幾つか prh に読み込ませる際にエラーになったパターンがありました。
現状は、正規表現記号を含まない文字列を入力してもらえればいいかと思います。public static regExpEscape(literal_string) { return literal_string.replace(/[\\^$.*+?()[\]{}|]/g, '\\$&'); }
-
Google Apps Script の ファイルダウンロード処理について
ファイルを保存せずに、ファイルダウンロード処理を実装できるかと思いましたが、ダメでファイルを一度出力して保存するようにしました。
保存せずにダウンロードを実現している情報もあったので、できるのかとは思いますが、ファイルのエスケープとかの問題があるのかもしれません。
RedPen SuggestExpression についての記事
RedPen の SuggestExpression について以前記事を書きました。
今回のスプレッドシート に記載した TSVの元ネタが記載してあります。
RedPen SuggestExpression を使ってブログの文言が統一されているかチェックする | Monotalk
参考
以下、作成時に参考にした記事になります。
* GoogleAppsScript JavaScriptを用いてCSVをローカルに書き出す実装 - Qiita
コメント