Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

Mautic ContactsのCSV Importを自動化する

これは、Mautic Advent Calendar 2017 18日目です。

Sikuli

Sikuliは、オープンソースのUI操作自動化ツールで、OpenCVによる画像認識技術をベースにできています。2017年に流行った言い方では、RPAのうちのRDA(Robotic Desktop Automation)に相当するツールです。

画面操作を定義し、バッチ処理で定期的あるいは手動で実行することで、設定した作業が自動処理され、定型業務におけるコスト削減を促進します。

sikuli-screenshot.PNG

システム開発でありがちな、とりあえずCSVで出力して別システムの受け渡しは「運用でカバー(SIerがユーザー企業を説得する魔法の言葉)」という手動処理を自動化することに最も役立ちます。

CSVインポートサンプルの実行

今回は、タイトルの通り、MauticにおけるコンタクトのCSVインポートを自動化します。殆どの方は手動で実施されていると思いますし、外部システムのデータ連携で、ここだけ手動になり、自動化の壁になっています。

こちらからサンプルをダウンロードすることができます。
サンプルは、Windows 10 を前提に作成しました。Sikuli自体はJavaなのでどこでも動きます。

<前提>

  • 実行環境:Windows10
  • 使用アプリ:Firefox
  • Mautic 2.12を使用
  • Sikuli 1.1.1 を使用
  • Sikuliは、Cドライブ直下に、sikuliフォルダを作成し、その中にインストール
  • Cドライブ直下に、mautic フォルダを作成し、mauticフォルダ内に、contacts_import.csvを用意すること
    • contacts_import.csv は、サンプルとともにダウンロードすることができます。

サンプルのファイル名は、「mautic-csv-import.skl」で、Sikuli IDE → 「ファイル」 → 「開く」 で読み込んでください。読み込み後、Sikuli IDEの画面で、お使いのMautic URLやMauticにログインするためのユーザー名、パスワードを適宜入力してください。

動作確認するには、Sikuli IDE内の「実行」をクリックします。
バッチ処理するには、Sikuli IDEで、「ファイル」 → 「実行ファイルをエクスポート」を選び、.skl形式で出力します。出力した.sklファイルをコマンドプロンプトで実行します。
実行には、「runsikulix.cmd」のパス -r .sklファイルのパス を入力し実行します。

例 C:\sikuli\runsikulix.cmd -r C:\Users\PCユーザー名\Desktop\mautic-csv-import.skl

サンプルを実行するとお使いのMauticに、contacts_import.csv のデータが登録されたと思います。
定期的に実行したい場合は、Windows環境の方は「タスクスケジューラ」を使用します。

Sikuliのインストール

インストール前に、Java環境を導入しておきます。
http://www.sikuli.org/ にアクセスし、「SikuliX - Learn More and Get it」をクリックします。
画面右側の「Get Version」をクリックします。
画面内の「sikulixsetup-x.x.x.jar」をクリックし、ダウンロードします。2017年12月18日現在は、sikulixsetup-1.1.1.jar でした。
Cドライブ直下に、sikuliフォルダを作成し、ダウンロードした「sikulixsetup-x.x.x.jar」を移動、移動後、「sikulixsetup-x.x.x.jar」をダブルクリックしてインストーラーを起動します。

(1) この画面では「はい」をクリック。
sikuli_install_1.PNG

(2) Pack1を選択。言語選択はPython。前述のサンプルで使用した環境は、Pythonを入れています。Pack1にチェックを入れ、「Setup Now」をクリック。
sikuli_install_2.PNG

(3)「はい」をクリック。
sikuli_install_3.PNG

(4)インストールが始まります。途中、Jythonのインストール確認画面が表示された場合は、「はい」をクリック。
sikuli_install_4.PNG

(5)「Have fun!」のメッセージが出れば終了です。
sikuli_install_5.PNG

Sikuliの起動とスクリプトの作り方

Cドライブ直下のsikuliフォルダにインストールしましたので、sikuliフォルダにアクセスし、「runsikulix.cmd」をダブルクリックしてSikuli IDEを起動します。Sikuli IDE上で、自動化のためのスクリプトを作成します。

画面左側から各処理を選択し、スクリプトを作成します。
サンプルでは、最初にFirefoxを起動し、Mautic環境にアクセスするようにしたいので、最初に「ファイル名を指定して実行」画面を呼び出す処理を記述しています。
1_sikuli_script.PNG

次に、「ファイル名を指定して実行」画面で、firefox.exe URL と入力するために、exsitsをクリックして対象領域をキャプチャします。
2_sikuli_script.PNG

キャプチャし、キャプチャ領域に、firefox.exe URLを入力するために、pasteを使用します。ついでにpasteの処理後に、Enterキーを押す処理を加えます。
3_sikuli_script.PNG

ここまでを実行しますと、Firefoxが起動し、Mauticログイン画面が表示されるまでを自動化することができます。
以後、先ほどのexsits処理と同じ要領で、スクリプト定義を続けます。サンプルでは、キャプチャした範囲が表示されるまで最大◯秒待つ、「wait」やキャプチャ領域を見つける「find」、キャプチャ領域をクリックする「click」「doubleClick」を用いて作成しています。

まとめ

MauticのCSVインポートは、手動処理なので面倒になり、以前から自動化したかったので試してみましたところ、割りと上手く行ったように思えます。
自動化はWebブラウザだけなく、様々なアプリケーションに適用できますので、日々の定型業務に応用してみると良いでしょう。多くの業務を抱えている人は特に。

サンプルが動かない等はコメントか、メール希望であればプロフィール(@kolinz)に掲載しているFacebookあるいは、Twitter経由で連絡先を教えていただければ対応します。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
1
Help us understand the problem. What are the problem?