【GAS】Gmailに来た問い合わせをチャットワークに通知してかつタスク追加する


みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

Google Apps Scriptを使って問い合わせメールをスプレッドシートに記録したり集計したりといったシステムを作っています。

前回はこちらの記事。

【GAS】新たな問い合わせメールをGmailで取得しスプレッドシートに随時追加する
Gmailの未読メールを取得する方法、メールを既読にする方法などを活用して、Google Apps Scriptで問い合わせメールを都度スプレッドシートに追加していく方法についてお伝えします。

Gmailから問い合わせメールを都度スプレッドシートに追加する方法でした。

今回はこのシステムをチャットワークと連携させて

  • 問い合わせメールの通知をチャットワークに送る
  • 問い合わせメール対応のタスクを立てる

という二つの機能を追加していきたいと思います。

前回のおさらい

まず前回作成したGmailから問い合わせメールを検索抽出して、スプレッドシートに追加するスクリプトのおさらいです。

コメントを見て頂ければだいたいわからなくもないですが、流れとしては

  1. Gmailから未読の問い合わせメールのスレッドを抽出する
  2. 抽出したすべてのメッセージについて
    1. 各メールから日時、送信元、件名、本文抜粋を取り出して配列に格納
    2. メッセージを既読にする
  3. スプレッドシートの最後尾に配列の内容を書き出す

となっています。

問い合わせをチャットワークに通知しつつタスクを立てる

スプレッドシートに追加するメッセージ一つ一つについて、チャットワークへ通知をしてタスクを追加していけばよいですね。

スクリプトとしては20~22行目の間に

  • チャットワークへ送るメッセージを生成
  • そのメッセージをチャットワークに送る
  • チャットワークへ立てるタスクを生成
  • そのタスクをチャットワークで立てる

という処理を入れればOKです。

チャットワークにメッセージを送る

まずチャットワークにメッセージを送る部分について考えます。

以下記事で作成した、sendMessageという関数を少しカスタマイズして流用します。

【GAS】チャットワークのメッセージを取り出す関数とメッセージを送る関数
Google Apps Scriptを活用してチャットワークにおみくじチャットを作成しています。今回はチャットワークからメッセージを取り出す、メッセージを送る処理を関数化して全体のコードをスッキリさせます。

関数はこちらです。

メッセージ本文を成形して引数bodyとして渡すと、ROOM_IDで指定したグループチャットに送信します。

  • グループチャットのルームID:ROOM_ID
  • チャットワークAPIトークン:CW_TOKEN

はタスクを立てる処理でも使うので、関数の外で定数として別途宣言をしておきます。

チャットワークに送るメッセージを生成

それでその引数bodyとして、チャットワークに送る文字列を生成してsendMessageを呼び出す部分です。

いつもながら、この部分はちょっとややこしく見えてしまうのですが

  • valMsgs[i][1]:送信元メールアドレス
  • valMsgs[i][3]:本文の抜粋
  • valMsgs[i][4]:メッセージへのパーマリンク
  • 問い合わせ記録のスプレッドシートへのリンク
  • valMsgs[i][0]:メッセージ受信日時

という情報をチャットワークのメッセージ記法に則って生成するという仕組みです。

ちなみにToで指定をしている

  • アカウントID:ACCOUNT_ID

これも他で使うので関数外で定数宣言しておきますね。

チャットワークのメッセージ記法についてはこちらの記事もご参考ください。

Google Apps ScriptでチャットワークにToや返信でメッセージを送る
Google Apps Scriptでチャットワークのおみくじチャットを作っています。今回はチャットワークのメッセージ記法を使って、おみくじの結果をToや返信のメッセージにする方法です。

チャットワークにタスクを立てる

続いてチャットワークにタスクを立てる部分を作成していきます。

こちらも以前紹介したaddTaskという関数をカスタマイズして流用します。

Google Apps Scriptでチャットワークにタスクを追加する最も簡単なプログラム
チャットワークの大きな特徴であるタスク機能がもAPIを使って操作することができます。今回はGoogle Apps Scriptでチャットワークにタスクを追加する最も簡単なプログラムを紹介します。

関数はこちらです。

タスク内容を引数bodyとして渡すと、ROOM_IDで指定したグループチャットに、ACCOUNT_IDで指定した担当者でタスクを追加します。

payloadの中にはタスク期限を表すlimitも設定できるのですが、今回はなしで作っています。

例えば

などと指定してあげれば、「問い合わせメール:件名」というようなタスクが追加されるわけです。

実行結果

こちらのスクリプトを実行してみました。

問い合わせメールをチャットワークに通知してタスクを追加

無事にメッセージも送信できていますし、タスクも追加できていますね。

まとめ

Gmailに届いた問い合わせメールをスプレッドシートに集計記録しつつ、それをチャットワークに通知しながらタスクも追加する、そんな素敵なシステムをGoogle Apps Scriptで作成することができました。

しかも、イベントトリガーで5分ごととか10分ごとに設定をしておけば完全自動で全ての動作がなされます

便利ですね~。

さて、おさらいですが、本体のスクリプトfetchContactMailはこちらです。

ここまでメールの取得についてお伝えしてきましたが、次回はGmailの読み取り件数の制限という注意すべき点についてお伝えします。

Google Apps ScriptにおけるGmailの読み取り件数の制限とその対処法
Google Apps Scriptでメールを取得する際には、1日あたりのGmailの読み取り件数の制限があるので注意をしなければなりません。今回は、その制限の内容と対処法についてお伝えします。

どうぞお楽しみに!

連載目次:GASでGmailに届いた問い合わせメールを分析する

お仕事の現場では日々様々なメールが届きます。その中で重要なのが「問い合わせメール」ですね。このシリーズでは、Webサイトからの問い合わせメールを自動でスプレッドシートに取り込んだり、チャットワークに送る方法についてお伝えしていきます。
  1. 【GAS】Gmailに送られた過去のメールから特定条件のメールを検索して取得する
  2. 【GAS】Gmailからメールを検索してスプレッドシートに書き出す
  3. フリーランスの仕事はどこから来たか、独立して1年間の受注件数を全て晒す
  4. 【GAS】新たな問い合わせメールをGmailで取得しスプレッドシートに随時追加する
  5. 【GAS】Gmailに来た問い合わせをチャットワークに通知してかつタスク追加する
  6. Google Apps ScriptにおけるGmailの読み取り件数の制限とその対処法

  投稿者プロフィール

タカハシノリアキ株式会社プランノーツ 代表取締役
株式会社プランノーツ代表、コミュニティ「ノンプロ研」主宰。1976年こどもの日生まれ。東京板橋区在住。「ITで日本の『働く』の価値を上げる!」をテーマに、VBA&GASの開発、講師、執筆などをしております。→詳しいプロフィールはコチラ
★ご依頼・ご相談はお気軽にどうぞ!→お問い合わせはコチラ
★フォロー頂ければ嬉しいです。

コメント

  1. ナシタカ より:

    チャットワークとの連携について詳しく書いて頂きありがとうございます。

    質問なのですが、チャットワークに送るメッセージでルーム内全員にTo付けで送ることはできますでしょうか?

  2. ゆうすけ より:

    いつも非常に参考になる内容をありがとうございます。Twitterの方でもフォローさせていただいております。

    今回この件でお伺いしたいことがございます。

    送信元・件名が固定で受信したメールをこのスクリプトでチャットワークへ飛ばそうとしているのですが、送信元・件名が同じだと同一スレッドになってしまい一番最初に受信したメールの内容が飛んでしまい、かつ最新のメールは既読にならないといった状態になっております。
    送信元・件名は固定することしかできないので、そういったものへの対応はできるのでしょうか??

    • ゆうすけさん

      コメントありがとうございます。

      同様の悩みはみなさんお持ちのようで、よく問い合わせをいただきます。
      少し手間はかかりますが、重複をはじく方法として、既読をする方法ではなく、メッセージIDを使う方法がおすすめです。
      以下記事で紹介していますので、ごらんくださいませ。

      https://tonari-it.com/gas-gmail-message-getid/

  3. ゆうすけ より:

    早速のご返信ありがとうございます!

    是非参考にさせていただきます!

    もしかしたらまた、お聞きしてしまうかもしれませんがどうぞよろしくお願いいたします。

  4. ゆうすけ より:

    タカハシノリアキ様

    先日いただきましたアドバイスのお陰で、無事に送信元・同件名の新着未読メールをチャットワークに投稿〜メール既読処理まですることができました。

    本当にありがとうございました!これでさらに捗ります`‐ω‐´)!