QualityForwardはクラウドベースのテスト管理サービスです。Web APIを提供しています。そのWeb APIを使いやすくするため、Google Apps Script SDKを開発中です。
今回はそんなQualityForward GAS SDKで集計した結果をCustomers Mail Cloudを使ってメール送信してみます。
Customers Mail Cloudについて
Customers Mail Cloudはメール送信のクラウドサービスです。Web APIがあるので、SMTP接続できない環境でもメール送信ができます。Googleスプレッドシートについても同様に、Google Apps Scriptからメール送信できます。Customers Mail CloudについてもGoogle Apps Script用のライブラリがあります(非公式です)。
準備
まずはライブラリを読み込みます。QualityForwardのプロジェクトIDは 1ppRPLjuClG0MhtnXYbskdZ8uYGbyCFHv7MFhr0GYa-3IAKEh8B7lmTMb
、 Customers Mail Cloudのライブラリは 1RegQzjZLiJUacopzEoxmpTe5_vp7LP3r01aa-D9rf4sJRPZkifI4Mf7K
になります。これを取り込みます。

初期化
APIキーはスプレッドシート側(Dataというシート)に記述してあります。
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data")
var apiKey = sheet.getRange(1, 2).getValue();
var qf = new QualityForward.Client(apiKey);
必要な変数の準備
まず今日の作業分を集計するので、必要な変数と当てはまるテストケースを格納する変数を用意します。
var ary = []; // 今日の結果を入れる
var today = new Date;
テストフェーズの取得
最初にテストフェーズをすべて取得します。
var testPhases = qf.getTestPhases();
次にすべてのテストフェーズについて、テストケースを取得します。
for (var i in testPhases) {
for (var j in testPhases[i].test_suite_assignments) {
var testSuiteAssignment = testPhases[i].test_suite_assignments[j];
var testCycles = testSuiteAssignment.getTestCycles();
// : 次の処理はこの中に記述
}
}
テスト結果の取得
すべてのテストサイクルについて、テスト結果を取得します。テスト結果の中で本日作業分をフィルタリングします。
for (var k in testCycles) {
var testCycle = testCycles[k];
var results = testCycle.getTestResults();
for (var l in results) {
var testResult = results[l];
var d = testResult.executed_at;
if (d.getFullYear() === today.getFullYear() &&
d.getMonth() === today.getMonth() &&
d.getDate() === today.getDate()) {
ary.push(testResult);
}
}
}
テスト結果ごとにグルーピングする
TestResultが取得できたら、テスト結果ごとにグルーピングします。
var group = {};
for (var key in ary) {
var testResult = ary[key];
if (!group[testResult.result]) group[testResult.result] = 0;
group[testResult.result]++;
}
Customers Mail Cloudの初期化
続いてメール送信の準備をします。まずCustomers Mail Cloud SDKの初期化です。こちらもスプレッドシート内にキーを記述しています。
var cmcApiUser = sheet.getRange(2, 2).getValue();
var cmcApiKey = sheet.getRange(3, 2).getValue();
var c = new CustomersMailCloud.Client(cmcApiUser, cmcApiKey);
Web APIのエンドポイントは契約によって異なるので指定します。今回は無料トライアルを指定します。
c.trial(); // 無料トライアルの場合
Fromの指定
メールの送信元を指定します。名前とメールアドレスを指定しますが、これもスプレッドシート内で定義しています。
var fromName = sheet.getRange(4, 2).getValue();
var fromAddress = sheet.getRange(5, 2).getValue();
c.setFrom(fromName, fromAddress);
Toの指定
メールの送信先を指定します。名前とメールアドレスを指定しますが、これもスプレッドシート内で定義しています。
var toName = sheet.getRange(6, 2).getValue();
var toAddress = sheet.getRange(7, 2).getValue();
c.addTo(toName, toAddress);
件名の指定
メールの件名を指定します。これもスプレッドシート内で定義しています。
c.subject = sheet.getRange(8, 2).getValue();
本文の指定
本文はコードの中で作成しています。例えば次のようになります。
c.text = [
today.getFullYear() + '年' + (today.getMonth() + 1) + '月' + today.getDate() + '日のテスト結果です',
'',
'完了 :' + (group.pass || 0) + '件',
'不可 :' + (group.fail || 0) + '件',
'スキップ:' + (group.skip || 0) + '件',
'カット :' + (group.cut || 0) + '件',
'ブロック :' + (group.block || 0) + '件',
'N/A :' + (group.na || 0) + '件',
'Q&A :' + (group.qa || 0) + '件'
].join("\n");
送信する
結果を送信します。
try {
var res = c.send();
Logger.log(res);
} catch (e) {
Logger.log(e);
}
無事メールでテスト結果の集計が届けば完了です。

まとめ
後はこの関数をGASのトリガーで時間実行(1日ごとなど)にすれば、集計結果を毎日メールしてくれるようになります。QualityForwardにはメール配信機能はありませんが、Google Apps Script SDKとCustomers Mail Cloudを組み合わせることで、簡単にメール送信が実現できます。ぜひお試しください。