QualityForwardのテスト集計を返すSlackコマンドを作ってみた
社内の情報交換にSlackを使っている開発チームは多いと思います。テストがうまく進んでいるかどうかを毎回QualityForwardにログインして確認するのは面倒で、できれば情報が集客できるSlack上で確認したいはずです。
そこでQualityForward APIとGoogleスプレッドシートでサーバレスのSlackボットを作ってみました。
制限について
本来であればSlackからのコマンドを受けてQualityForward APIを実行したいのですが、Googleスプレッドシート側での処理時間もあってタイムアウトしてしまいます。そこで、QualityForward APIでGoogleスプレッドシートに一日の作業件数を記録するで使ったスクリプトを用いて、集計は自動で行っておきます。そこに書かれた情報をSlackメッセージとして返却します。
Slackボットについて
Slackボットは /qf
でメッセージを受け付けます。その際、日付を指定するようにしました。これで過去の状態についても確認しやすくなります。
/qf 2019-12-25
リクエストURLはGoogleスプレッドシートのスクリプトエディタで、Webアプリケーションとして公開した際のURLになります。
コードについて
Google Apps ScriptではSlackからのPOSTメソッドを doPost
関数で受け付けます。そして、結果の記録されているシートからデータを抽出して、テンプレートに当てはめて返却します。
コードは以下のようになります。詳細はコメントを参考にしてください。
function doPost(e) {
// 一日の集計結果が記録されているシートを取得
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("TestResult")
// 最終行を取得
var lastRow = sheet.getLastRow() - 1;
// 日付列をまとめて取得(処理高速化のため)
var dates = sheet.getRange(2, 1, lastRow, 1).getValues();
var results = {};
// 上から順番にチェックします
for (var i = 0; i < dates.length; i++) {
var date = new Date(dates[i][0]);
// 指定された日付とマッチするかチェックします
if (e.parameter.text === Utilities.formatDate(date, 'JST', 'yyyy-MM-dd')) {
// 指定された日付のデータを取得します
var values = sheet.getRange(i+2, 2, i+2, 8).getValues()[0];
// 結果をまとめます
results = {
date: Utilities.formatDate(date, 'JST', 'yyyy年MM月dd日'),
pass: values[0], fail: values[1], skip: values[2],
cut: values[3], block: values[4], na: values[5],
qa: values[6]
};
}
}
// Slackメッセージ用テンプレート
var template = '%date%のテスト作業結果です。パス%pass%件、失敗%fail%件、スキップ%skip%件、カット%cut%件、ブロック%block%件、N/A%na%件、Q&A%qa%件となっています。';
// 取得した結果でテンプレートを置き換えます
for (var k in results) {
template = template.replace('%' + k + '%', results[k]);
}
// HTTPレスポンスを作ります
var out = ContentService.createTextOutput();
out.setContent(template);
return out;
}
まとめ
これでSlackのスラッシュコマンドを使ってテストの状況を確認できるようになりました。
トリガーの頻度を細かくすれば、現時点での状況を確認することもできるでしょう。テストが滞りなく行われているか管理する上で便利なコマンドになりますので、ぜひお試しください。
Author And Source
この問題について(QualityForwardのテスト集計を返すSlackコマンドを作ってみた), 我々は、より多くの情報をここで見つけました https://qiita.com/goofmint/items/f33fea50b8280205013d著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .