Blogブログ

GASを使ってRedmineのチケットを作成する

おはようございます、社長してます牧長です。

もう4月ですね
新社会人の皆さん、ええ感じですか?

さて、今日はそんな春に全く関係のないお話です

Redmine

私はRedmine大好き人間です

最近ではSaas形のチケット管理システムが使われることが多いですが、やはり開発で利用するツールは自分たちで管理したい、、、!
OSSだから、不都合あったら自分たちでカスタマイズできるしね。
あと、バックアップも自分たちで毎日とれるから、サーバに何かあっても復旧できる、他社のサービス停止に影響しない
良いところがいっぱいです

そんなRedmine、開発用のものと、サポート受付用の2つを運用しています
開発用はプロジェクト数が80件を超えていました

サポート受付にも便利

弊社では保守サポート業務も行っているのですが、そこの受付に関してもサポート用のRedmineを立ち上げ、
そこに対して問い合わせを記載し、やり取りをさせていただいております。

そんな使い方をしていると、あぁ、、、、、Webサイトの問い合わせフォームから来た連絡もチケット化したいな、、、

ってなるわけですね

それ、WebAPIで登録できるよ?

Redmineさん、さすがです、WebAPIが提供されています
REST API なので扱いも簡単

APIのドキュメントは公式に記載されています

たとえば、チケット発行はこんな感じ

method: POST
endpoint: {redmine url}/issues.json


{
  "issue": {
    "project_id": "1",
    "subject": "Creating an issue",
    "description": "new issue"
  }
}

これでRedmineへチケットが作成されました!
すごいね!

GASでAPIを叩いてみる

じゃあ、たとえばお問い合わせにGoogleFormを使ってる場合、GAS(Google Apps Script) で書いたらそのままチケット発行出来るんじゃね?

出来ました


function createIssue(title, message) {
	var redmine_url = 'https://{redmine server}/issues.json';
	var api_key = 'hogehogehogehogehogehoge';

	var project_id = 83
	var issue = {
		'subject': title,
		'description': message,
		'tracker_id': 4,
		'assigned_to_id': 2,
		'status_id': 1,
	}
	var payload = {
		'issue': issue,
		'project_id': project_id,
	};
	payload = JSON.stringify(payload);

	var headers = {
		'X-Redmine-API-Key': api_key,
		'Content-Type': 'application/json',
	};
	var options = {
		'method': 'POST',
		'contentType': 'application/json',
		'headers': headers,
		'payload': payload,
	};

	var response = UrlFetchApp.fetch(redmine_url, options);

	return response;
}

これを、GoogleFormのトリガー設定で、ええ感じに動かしたら、問い合わせから自動的にチケット化されます

エスカレや返信内容の多重チェックに関しても、管理が楽になりますね

牧長 心

執筆者

CEO

牧長 心