0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

QualityForward GAS SDKとCustomers Mail Cloud SDKで一日の作業件数を集計、メールする

Last updated at Posted at 2020-02-26

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 になります。これを取り込みます。

Screenshot_ 2019-12-25 0.00.51.png

初期化

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);
}

無事メールでテスト結果の集計が届けば完了です。

Screenshot_ 2019-12-25 0.14.26.png

まとめ

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

QualityForward

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?