Google Apps Scriptを使ってGmailの新着メールをChatWorkに通知してみた | SiTest (サイテスト) ブログ

メニューボタン閉じるボタン

Google Apps Scriptを使ってGmailの新着メールをChatWorkに通知してみた

皆さん、コミュニケーションツールはどのようなツールを使っているでしょうか。
弊社ではチャットツールとしてChatWorkを利用しています。
ChatWorkには嬉しいことにREST-APIが実装されていますので、
Google Apps Scriptを使用してGmailに届いたお問い合わせメールをChatWorkに通知するスクリプトを作成してみました。

Chatwork APIトークンの取得

まずはChatwork APIトークンを取得しましょう。
ChatWork APIは現在(2016年9月6日時点)ではプレビュー版として提供されており、
利用するには申請を行う必要があります。
チャットワークAPIドキュメントから申請を行うことが出来ます。
ただし、ビジネスプランでは管理者権限があるユーザからしか申請が行えないので注意しましょう。
また、申請してからAPIが利用可能になるまで少し時間がかかりますので、予め申請しておきましょう。

APIが利用可能になるとChatWorkマイページの動作設定からAPIトークンを発行することが出来ます。
_4_チャットワーク_-_マイチャット_

Apps Scriptの作成

下記画像のようにGoogle DriveからApps Scriptプロジェクトを作成することが出来ます。
ゴミ箱_-_Google_ドライブ

スクリプトのサンプルは下記になります。
API_TOKENは先程取得したトークン、ROOM_IDはChatWorkのURLでrid000000となっているrid以降の数列です。
通知したいChatWorkグループのROOM_IDを取得して下さい。
内容としてはとても簡単で、Gmailからお問い合わせメールにマッチするタイトルの新着メールを取得し、
メールの内容をChatWorkに通知しています。
メールの検索にはGmailで使用できる検索演算子を使用することが出来ます。
この検索演算子を上手く使って通知したいメールの検索をしましょう。
また、HTTP通信には標準でApps Scriptに提供されているUrlFetchAppクラスを使用しています。

function notifyMail() {
  var token = API_TOKEN;
  var roomId = ROOM_ID;

  try {
    // 未読メールを取得する 検索クエリを変更すれば転送するメールを絞ることも可能
    var threads = GmailApp.search("is:unread subject:(お問い合わせがありました OR お申込がありました)");
    Logger.log("Found " + threads.length + " threads.");
    if (threads == null || threads.length === 0) return;

    for (var i = 0, tlen = threads.length; i < tlen; i++) {
      var msgs = threads[i].getMessages();
      for (var j = 0, mlen = msgs.length; j < mlen; j++) {
        var msg = msgs[j];
        if (!msg.isUnread()) continue;

        var from = msg.getFrom();
        var subject = msg.getSubject();
        var body = msg.getBody();
        // http://developer.chatwork.com/ja/endpoint_rooms.html#POST-rooms-room_id-messages
        UrlFetchApp.fetch('https://api.chatwork.com/v1/rooms/' + roomId + '/messages', {
          headers: {'X-ChatWorkToken': token},
          method: 'post',
          payload: 'body=' + encodeURIComponent(
            "※こちらのチャットはAPIを使用して自動送信しております。" + "\n"
            + '[info][title]' + subject + '\n'
            + 'from: ' + from + '[/title]'
            + body + '[/info]'
          )
        });
        msg.markRead();
      }
    }
  } catch(error) {
    Logger.log("message:" + error.message + "\nfileName:" + error.fileName + "\nlineNumber:" + error.lineNumber + "\nstack:" + error.stack);
  }
}

Apps Scriptの起動トリガーを設定

最後にApps Scriptの起動トリガーを設定しましょう。
上部ナビゲーション内の「リソース」から「現在のプロジェクトのトリガー」をクリックして下さい。
Gmailを利用するスクリプトでは、時間主導型のトリガーを利用できます。
最短1分毎に起動するように設定することが出来ますので、お好みのタイミングを設定して下さい。
Notify_ChatWork_from_Gmail

保存ボタンをクリックして設定したトリガーを保存すれば設定は完了です。

まとめ

たったこれだけで、わざわざGmailを開くことなくChatWorkを開いているだけで新着メールが分かるようになりました。
Google Apps ScriptやChatWork APIにはまだまだ沢山便利な使い方があります。
今後も便利な使い方を紹介していきたいと思いますので、楽しみにお待ち下さい!

今すぐお気軽に
ご相談ください。

0120-315-465

(平日 10:00~19:00)

今すぐお気軽に
ご相談ください。

0120-315-465

(平日 10:00~19:00)

グラッドキューブは
「ISMS認証」を取得しています。

認証範囲:
インターネットマーケティング支援事業、インターネットASPサービスの提供、コンテンツメディア事業

「ISMS認証」とは、財団法人・日本情報処理開発協会が定めた企業の情報情報セキュリティマネジメントシステムの評価制度です。

いますぐ無料で
お試しください。

SiTest の革新的な機能を
お試しいただけます。
利用規約

お名前【必須】
メールアドレス【必須】
電話番号【必須】