【GAS】新たな問い合わせメールをGmailで取得しスプレッドシートに随時追加する

★気に入ったらシェアをお願いします!


contact

photo credit: Pen Friends via photopin (license)

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

こちらの記事でGmailから特定条件で検索したメールをスプレッドシートに書き出す方法についてお伝えしました。

【GAS】Gmailからメールを検索してスプレッドシートに書き出す
Gmailに届いたWordPressサイトからの問い合わせメールの分析を進めています。 今回はGoogle Apps ScriptでGmailから検索して取り出したメールたちをスプレッドシートに出力します。

具体的にはWordPressサイトの問い合わせフォームからのメールを検索してスプレッドシートに取り出しました。

過去の問い合わせメールを集計分析してみたりして、なかなか便利です。

フリーランスの仕事はどこから来たか、独立して1年間の受注件数を全て晒す
独立してからもうすぐ1年となります。その間、いかにして仕事を獲得したのか、毎日書いているブログによるコンテンツマーケティングの効果はあったのか、実際の件数を全て晒してフリーランスのリアルをお伝えします。

ただ、過去のメールは良いのですが、これから来る問い合わせメールについてはどうしましょう?

来たメールを順次このスプレッドシートに追加してくれると便利なんですけどね…

ということで、今回はGoogle Apps Scriptで問い合わせメールを都度スプレッドシートに追加していく方法についてお伝えします。

新たな問い合わせメールをスプレッドシートに追加するシステム

追加先のスプレッドシート

問い合わせを追加するのは、こちらのスプレッドシートです。

問い合わせメールをスプレッドシートに出力

過去の問い合わせメールについて

  1. 日付
  2. 送信元(返信先)
  3. 件名
  4. メッセージ(冒頭200文字)
  5. パーマリンク
  6. カテゴリ(手動入力)
  7. 結果(手動入力)

が記録されています。

6,7は後ほど手動で入力するものですので、1~5についてGoogle Apps Scriptで自動入力をしていきたいと思います。

システム動作の流れ

システムの動作としては

  • イベントトリガーで15分ごとなど動作
  • Contact Form 7から送られたメールで未読のものがあれば
    • スプレッドシートの最終行に追加をする
    • そのメールを既読にする

という流れで考えます。

メールを既読にする理由は同じメールを何度もシートに取得しないようにするためですね。

既読にしてしまうと、うっかり見逃す可能性もありますが、これについては追々チャットワークにメッセージ送信&タスク追加などで対応をしたいと思います。

前回のスクリプトを確認

さて、スクリプトですが前回紹介したこちらのスクリプトを大活用したいと思います。

このスクリプトからの変更点としては

  • 検索条件として「未読」であることを追加
  • スプレッドシートへの出力先を最終行の次の行に
  • スプレッドシートに追加したメッセージを既読にする

といった点になります。

では、具体的にスクリプトを作成していきましょう。

新たな問い合わせメールをスプレッドシートに追加するスクリプト

新たな問い合わせメールを都度スプレッドシートに追加するスクリプトを作りました。

せっかくなので名前もfetchContactMailと変更してみました。

冒頭で紹介したsearchContactMailをほんの少~し変更しただけですのでポイントを解説していきますね。

Gmailで未読のメールのみ検索する

4行目の検索条件ですが

(is:unread “このメールは いつも隣にITのお仕事 https://tonari-it.com のお問い合わせフォームから送信されました”)

と変更をしました。

Gmailの検索条件として「is:unread」未読のメールという条件になります。逆に「is:read」は既読ですね。

半角スペースはAND条件になりますので、未読のメールで「このメールは いつも隣にITのお仕事 https://tonari-it.com のお問い合わせフォームから送信されました」という文字列を含むスレッドを検索するということになります。

試しにGmailで検索してみますと

Gmailで未読のメールを検索

と未読のメールでかつ指定した文字列のもののみ抽出できました。

markReadメソッドでメールを既読にする

メールを既読にする場合はmarkReadメソッドを使って

Messageオブジェクト.markRead()

と書きます。

スクリプトでいうと20行目の部分ですね。

スプレッドシートの最終行の下に追加する

27行目~29行目ですが、スプレッドシートの最終行の行数を取得して、その次の行にsetValuesをすることで、スプレッドシートに”追加”となります。

よく使うテクニックですのでぜひマスターしてくださいね。

実行結果

では、まず指定の文字列を含むメールのうち2つのメールを未読にしました。

Gmailで条件に合う未読のメールは2つ

この状態で上記スクリプトを実行してみますと

スプレッドシートに新たな問い合わせを追加した

このようにシートの76,77行目に対象の2つのメールが追加されました。

Gmailを更新してみますと

Gmailでメールが既読になった

先ほどの2つのメールが既読になっていますね。

これで、同じメールを何度も取得することを防ぐことができるというわけです。

まとめ

Google Apps Scriptで問い合わせメールを都度スプレッドシートに追加していく方法についてお伝えしました。

未読のメールだけを取得してきて既読にしちゃうというのがポイントですね。

少し変えるだけで良いというのが気持ちいですね。

次回は、問い合わせメールが来たらチャットワークに通知して、かつタスク追加する方法についてお伝えしたいと思います。

【GAS】Gmailに来た問い合わせをチャットワークに通知してかつタスク追加する
Google Apps Scriptを使って問い合わせメールをスプレッドシートに記録集計するシステムを作っています。今回はさらに問い合わせメールの通知をチャットワークに送りつつタスクも立てる方法です。

どうぞお楽しみに!

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

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

コメント

  1. ぜっきー より:

    詳細な解説ありがとうございます。
    参考にさせていただきました。

    ちなみに、ほぼコピペで本機能を実装したのですが、
    メールを既読にする機能だけがうまく動作しませんでした・・・

    タカハシ様の方では、今でも動作していますか?
    GASの仕様変更を疑っているので、ご確認していただけましたら幸いです。

    • ぜっきーさん

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

      このスクリプトは実際に弊社でも利用しているのですが、今のところ正しく動作しています。

      • ぜっきー より:

        タカハシ様

        迅速なご確認ありがとうございます。
        こちら、当方の確認不足でした。失礼致しました。

        トリガーの実行間隔を「1分」にしていたため、
        処理が完了する前に次の処理が発生していたことが原因でした。
        トリガーの実行間隔を「10分」に変更したところ、正常に動作しました。

        こちらの記事、大変参考になりました。
        ありがとうございます。