PowershellとOutlookVBAを使ってRedmineAPIで既存のチケットにファイルを(ほぼ)自動添付する#001

概要

 定期的にOutlookメールで通知されてくる業務カレンダーを、Redmineのチケットにアップロードして開発ベンダーに連携する作業が手作業で煩わしく、自動化したい欲求にかられたため着手した。幸いにもメールタイトルが正規表現可能(但し、性善説仕様のため送信者が表現の範疇を超えて誤字るとコケるw)

Qiitaに掲載しようと思った経緯は、Powershellでチケットの起票方法はあったがファイル添付のやり方が意外とGoogle先生に聞いてもヒットしなかったので、備忘録も兼ねて記事を書く事にしました(^q^)

(1/5回)

※この業務は2年前の物と古くRedmineのVersionは2.5

第一回 課題概要とAPI使用のための事前準備 ←今ここ
第二回 OutlookVBAでメールトリガーを作成する
第三回 Powershellでプロキシを通過する
第四回 PowershellでRedmineチケットにファイルを添付する(前半)
第五回 PowershellでRedmineチケットにファイルを添付する(後半)


課題

 開発ベンダーがこちら側のWebシステム検証環境へテストでRESTする際に時刻をセットする必要があり、Web公開のため定期的に変更をかけている(のだと勝手に想定)。以下の課題に対して対策案として自動化した。(いつも思うんだけどプログラムを書くよりもブログにする方が時間がかかるなあ…)
・メールに気が付かなかったり埋もれたり忘れる事がしばしば(←自分の能力の限界を感じる)
・めんどくさい(←基本的にやる気がない)
・開発遅延の懸念(←これだけ唯一真面目な理由かも知れない)


対策案

 下図の通り、OutlookVBAによりメール受信トリガーからPowershellのスクリプトを呼び出してAPIを叩く構想。

image

VBAだけでも出来ないことは無いが、メール内の処理を終えたらPowershellやpython等に処理を移譲した方が煩雑な処理を書かなくて済むため。特にJSONパースとProxy越え処理はPowershellだと楽だと個人的な感想を述べてみる。特にPowershell v3からはコマンド一本でJSONはそのままデータオブジェクトとしてPowershell内でアクセス出来る様になっている。


着手

syntax

 本記事で記載する★abc★記法は、abcの部分は実数や文字列として、パスワードやpath等の各自環境に合わせた任意の値を指します。


Index

 大きく分けて以下の4つの手続きとなる。長いので各章に分けて全5回としよう…

1. Redmine事前準備
2. OutlookVBAでメールトリガーを作成する
3. Powershellのプロキシを通す
4. PowershellからRedmineAPIでチケットにファイルをアップロードする


1.Redmine事前準備(2.5.2.stable)

 RedmineAPIを使用する場合、下記2点の事前準備が必要になる。

※ただし、RedmineのVersionによってやり方は異なるため。詳しくは本家サイトを参照する。

1. API権限のあるユーザの準備
2. APIキーの発行
  1. API権限のあるユーザの準備

 下記の通りRestAPIを有効にする。

①管理 > 設定 を開く
image

②認証 を開き、「RESTによるWebサービスを有効にする」にチェックを入れる。
image

  1. APIキーの発行

 下記の通りAPIキーを発行します。これは、後で変数$apikeyにセットするときにコピペして使う。
image


これで事前準備は完了!いつでもAPI経由でRedmineを操作出来ますお(^q^)
次回はOutlookVBAの部分を掲載します。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.