どうも、プログラミング勉強中のナシタカ(@ehicalog)です。
今回はチャットワークとGmailを連携させる方法とそのメリットについて紹介します。
この2つを組み合わせると自動で動くシステムを作成することができ、日々の業務を効率化することができます。
実際に僕が仕事で導入したプログラムを例に出してどういったシステムを使っているのか?どんな効果があるのかを僕の体験談をベースにまとめていきます。
日々の仕事でチャットワークを使っている方やGmailを使っている方には、業務効率化のヒントになるかもしれないので、ぜひ読んでもらいたいです。
電話代行からのメールをチャットワークに転送したい
今回解決するのは「電話代行からのメールをチャットワークに転記したい」という悩み。
僕の会社では訪問事業なので、外回り中は電話を確実に受けることができません。
そのため電話代行に依頼して番号にかかってきた内容を聞いてもらい、内容をメールで連絡してもらうようになっています。
電話代行を利用するのは非常に効率的ですが、問題なのはこのやり取りがメールベースであるということ。
本来会社でメインで使っているツールがチャットワークなので、理想を言えばこのチャットワークに情報を上げるようにしたいわけです。
なので今まではマネージャーがメールを受けて、それをチャットワークに転記するという対応を取っていました。手動でチャットワークに情報を上げていた状態ですがmこうした作業が手間でマネージャーも面倒。
そして最近になってそれぞれが電話連絡用に持っているPHSのメール機能を利用して、そちらに転送をかけることで全員に電話代行からのメールが受け取れるように設定したのです。
しかしこれではメールでのやりとりになってしまって、結局チャットワークには記録が残らなくなってしまいます。これではチャットワークに情報が集約されずに散らばってしまう一方。
そこで今回僕がチャットワークとGmailを連携させる方法を提案したわけです。その時に参考にしたのがこちらの記事でした。
[jin-iconbox08]【GAS】Gmailに来た問い合わせをチャットワークに通知してかつタスク追加する[/jin-iconbox08]
やりたかったことがバッチリ解説されていたので、今回はこちらで紹介されているコードをベースにして使わせて頂きました。
Sponsored Links
Gmailの特定メールをチャットワークに転記する
今回の目的は「Gmailで特定の未読メールを既読にしつつ、内容をチャットワークにメッセージとして送信する」というもの。
これを使うことで自動で電話代行からのメールを既読にして、内容をチャットワークに送信することができるようになります。では実際の手順を見ていきましょう。
Gmailで特定メールを検索する
まずはGmailで特定のメールを検索する方法として、他のメールを省いて目的のメールだけを検索できるように条件を作っていきましょう。
僕の場合は「未読」であり「電話代行からのメール」であるものを検索する必要があります。
未読はそのままでいいので電話代行からのメールでは題名に特定の文字が入っていたので、そちらを検索条件に設定しました。
メールの内容をチャットワークに送信するスクリプト
今回は上で紹介した記事のコードを利用させていただきましたが、目的に合わせて不必要な部分を削除してあります。僕が使っているコードがこちらになります。
var CW_TOKEN = '_________________________'; //チャットワークAPIトークン
var ROOM_ID = XXXXXXXXX; //ルームID
var ACCOUNT_ID = NNNNNNNN; //アカウントID
function fetchContactMail() {
/* Gmailから特定条件のスレッドを検索しメールを取り出す */
var strTerms = '(is:unread "検索条件を記入")';
var myThreads = GmailApp.search(strTerms, 0, 30); //条件にマッチしたスレッドを取得
var myMsgs = GmailApp.getMessagesForThreads(myThreads); //スレッドからメールを取得する →二次元配列で格納
var valMsgs = [];
/* 各メールから日時、送信元、件名、内容を取り出す*/
for(var i = 0;i < myMsgs.length;i++){
valMsgs[i] = [];
valMsgs[i][0] = myMsgs[i][0].getDate();
valMsgs[i][1] = myMsgs[i][0].getReplyTo();
valMsgs[i][2] = myMsgs[i][0].getSubject();
valMsgs[i][3] = myMsgs[i][0].getPlainBody();
valMsgs[i][4] = myThreads[i].getPermalink();
myMsgs[i][0].markRead(); //メッセージを既読にする
/* メッセージを生成しチャットワークにを送る */
var msgBody = "[To:" + ACCOUNT_ID + "][info][title]問い合わせメール from " + valMsgs[i][1] + "[/title]" +
valMsgs[i][3] +
"n" +
"[hr]" + valMsgs[i][0] + "[/info]";
sendMessage(msgBody);
}
変更点としては以下になっています。
- チャットワークへのメッセージで問い合わせ記録へのリンクを削除
- メールの本文を全て取り出す
- タスクとして追加する部分を削除
- スプレッドシートに出力の部分を削除
まず電話代行のメールの転送なのでスプレッドシートへの記録は行いません。
なのでその部分に関わるコードは削除して、タスクとして追加するのも今回は要らなかったので削除しました。
またメール本文はそこまで長くないのと全ての内容を取り出したいので、200文字の制限を撤廃。このような変更を加えたコードになっていますので注意してください。
では前回の記事を参考にスクリプトエディタを起動して上で紹介したコードを入力してください。
次に新規でスクリプトを作成して、上で紹介した記事の中に出てくる「sendMessage」というチャットワークにメッセージを送る関数を作成してください。
僕は最初この関数を作っていなかったのでスクリプトが動かずにめちゃくちゃ困りました。
チャットワークの情報を入力する
次にチャットワークに関わる情報として以下の情報を入力しましょう。
- APIトークン:チャットワークAPIを利用するために必要なもの
- ルームID:メッセージを送信するルームのID
- アカウントID:To付けしたい人のアカウントID
ここで初めて出てきたのがアカウントIDです。
自分の場合はプロフィールから確認できるチャットワークIDがそれにあたり、他の人の場合はPCではアイコンを選択するとポップアップでその人の写真とチャットワークIDが確認できます。
ちなみに上のコードのアカウントID部分は数字だけならそのままで良いのですが、アルファベットが入っていると認識されずにエラーとなります。
なのでその場合はシングルクォーテーションで囲むと認識されるので試してみてください。
僕の場合はアカウントIDにマネージャーのIDを入力してメッセージをTo付で送るように設定していて、これでメッセージが送られるとマネージャーにアテンションがかかるのでメッセージを見逃すことが無くなります。
アカウントIDトラブルの対応
上記の入力で最初は動いていたのですが、なぜか途中からTo付が機能しなくなってしまいました。
そこで僕が変更したのが『アカウントIDの入力の仕方』です。
試しにチャットのメッセージで誰かにTo付で送るように選んでみましょう。そうするとメッセージ入力画面にToの横に数字が出ていますよね?僕はこの数字を利用しました。
試しに上記コードのアカウントIDの部分にこの数字を入力したところ、無事にTo付が動作するようになりました。この数字を利用するとアカウントIDにアルファベットが入っている場合などの対応が必要なくなるので使い勝手も良くなります。
現在でも問題なく動作しているので、アカウントIDを調べるよりも簡単にできるのでかなりおすすめの方法です。
トリガーの設定
最後にこのスクリプトを動かすためのトリガーを設定していきます。僕の場合は自動で動くシステムにしたかったので以下の設定にしました。
これで5分間隔で未読メールがないか検索してくれるので、電話代行からのメールもタイムラグがそこまでなくチャットワークに送信されるようになります。
結果:情報がチャットワークに集約されて業務効率がアップ
以上のスクリプトを設定すると電話代行からのメールが自動でチャットワークに転記されているので、今まではメールを確認していたのがチャットワークを確認するだけで良くなります。
つまりいちいちメールを確認する手間が無くなり、常にチェックしているチャットワークを見ることで同時に電話代行からの連絡を確認することができるので手間が減って業務効率が上がりました。
しかもその後の対応状況もチャットワーク上で残せるので、ログとして活用することができます。
マネージャーにTo付けすることで連絡を確認してそのまま対応したり、対応を他の人にタスクとして委任することができその後の対応状況をチャットワーク上で確認することができる。
今までの手間が省けた上に業務を効率的に進めることができるようになったのです。
マネージャーもこの電話代行からのメールの処理について困っていたのですが、他のタスクに比べると優先度が低いので後回しになっていて苦労していたようです。
なので今回のスクリプトを利用した提案は最初はなかなか理解してもらえませんでしたが、実際に導入してその便利さを体験するともう手放せないくらいになっています。
Sponsored Links
スクリプトの問題点
最後にこのスクリプトを利用していた分かった問題点が一つあり、それが「スレッドの2通目以降の処理が上手くできない」というもの。
電話代行からのメールでは頻繁には無いのですが、同じ人から複数回連絡が来る場合があります。
その場合はメールタイトルが同じになることでGmailがスレッドを作成してメールをまとめる時があるのですが、こうしてスレッド化するとメールの未読処理が上手く行かずに、5分おきにチャットワークへメッセージを送り続ける状態になってしまいます。
しかも処理は1通目の内容を取り出すようになっているので、スレッドの1通目の内容を延々と送る状態…。
僕は運用していてこの状態に一度だけなったことがあり、対処としてはスレッドになったメールを手動で既読にすること。
こうすることで未読メールが無くなるので処理を止めることができます。
スクリプトの処理内容を変えればこうした問題に対処できるのかもしれませんが、それをできるだけのプログラミングスキルは僕にはないのと、こうしたケースは頻繁には発生しないので現段階では手動での対応で事足りると判断してそのままにしています。
今後こうしたことが頻繁に発生するようになったら対応を考えていきたいと考えています。
まとめ
- Gmailで特定のメールをチャットワークに自動で送信することができる
- チャットワークに転記することで対応などを全てチャットワーク上に残すことができ情報を集約できる
以上でGmailとチャットワークを連携する方法とそのメリットについてまとめていきました。
実際に僕が使っていてこの2つを連携させると業務効率が大幅に向上して、チャットワークに全ての情報を集約することで確認が簡単になる上に、対応記録などをチャットワーク上に残せるのでログとしても活用することができます。
こうしてチャットワーク上に情報を集約できると「チャットワークを見れば全ての情報がある」という安心感が生まれます。
情報が簡単に手に入る状況は効率的な仕事には欠かせない一つの条件。そうした安心感のある環境を簡単に構築できるのがチャットワークを使っている大きなメリットだと感じています。
プログラミングができるとこうした仕事でのちょっとした問題を解決することができ、予想以上の業務効率アップに繋がることがあります。今回の件はまさにそれで、予想以上に便利な「自動メール転送システム」を作り出すことができました。
今後もチャットワークを活用したシステムを構築して、さらなる業務効率の改善に取り組んでいきます。