3
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【GAS】Gmailの未読メールをChatworkに通知する

Last updated at Posted at 2020-05-03

※投稿内容は個人の学習目的の記事であり、所属組織とは一切関係ありません。
 Chatwork公式ドキュメントではございませんので、自己責任でご利用ください。

こんにちわ、さかぐち(@sakaguchi_mamii)です。

今回はGmailの未読メールを15分おきにチェックし、未読メールがあったらChatworkにメッセージを送信しようと思います。

APIトークンを取得する

Chatworkにログインし、右上のメニューから「API設定」を選択する。
API設定.png

パスワードを入力し、APIトークンを取得する。
スクリーンショット 2020-04-29 20.30.31.png

ルームIDを取得する

メッセージを送信したいグループチャットのルームIDを取得する。
スクリーンショット_2020-04-29_20_32_05.png
グループチャットのURL末尾の数字がルームIDとなります。

ライブラリを読み込む

Chatworkへメッセージ送信は「Chatwork Client for Google Apps Script」を利用します。

プロジェクトキー: M6TcEyniCs1xb3sdXFF_FhI-MNonZQ_sT

スクリーンショット 2020-04-23 11.54.09.png

スクリプト

const token = 'APIトークン';
const room_id = 'メッセージを送信したいグループチャットのルームID';

function myFunction() {

  // Gmailを取得する条件を指定(未読)
  // 指定できる条件は以下ページを参照してください
  // https://support.google.com/mail/answer/7190?hl=ja
  var searchQuery = "is:unread";

  // Gmailからスレッドを取得
  // 引数:検索条件,開始スレッドのインデックス,最大取得数
  // 1日の取得件数には制限があります。数の指定にはご注意ください。
  // https://tonari-it.com/gas-gmail-search-limit/ にわかりやすく説明があります。
  var threads = GmailApp.search(searchQuery, 0, 30);
  
  // スレッドに含まれるメッセージを全て取得
  var messages = GmailApp.getMessagesForThreads(threads);

  for(var i = 0; i < messages.length; i++) {
    
    var date = messages[i][0].getDate(); // 受信日時
    var subject = messages[i][0].getSubject(); // 件名
    var from = messages[i][0].getFrom(); // 送信者
    var link = threads[i].getPermalink(); // Gmailリンク
    var post_message = "[info][title]Gmailを受信しました(" + Utilities.formatDate(date, 'Asia/Tokyo', 'yyyy/MM/dd hh:mm:ss') + ")[/title]" +
      "subject: " + subject + "\n" +
      "From: " + from + "\n" +
      link +
      "[/info]";

    // メッセージ送信
    sendMessage(post_message);
    
  }
  
}

function sendMessage(message) {
  var client = ChatWorkClient.factory({token: token});
  client.sendMessage({
    room_id: room_id,
    body: message
  });
}


トリガーの設定

スクリプトを15分おきに動かすトリガを設定します。

編集>現在のプロジェクトのトリガー を選択する。
スクリーンショット_2020-05-03_08_19_20.png

「トリガーを追加」をクリックする。
スクリーンショット_2020-05-03_08_19_31.png

内容を設定し「保存」をクリックする。
スクリーンショット_2020-05-03_09_31_59.png
今回は15分おきにGmailの未読メールの有無を確認したいので以下を設定します。

  • 時間ベースのトリガーのタイプを選択: 分ベースのタイマー
  • 時間の間隔を選択: 15分おき

※1日のメール取得件数には制限があります。数の指定にはご注意ください。
下記にわかりやすくまとめてくれてます。
Google Apps ScriptにおけるGmailの読み取り件数の制限とその対処法

テスト

できました!
スクリーンショット_2020-05-03_08_23_07.png
URLをクリックするとメッセージが表示される
スクリーンショット_2020-05-03_08_23_28.png

最後に

グループチャットにメッセージが送信されたときに、スマホでプッシュ通知を受け取りたい場合は、スマホアプリで「すべてのメッセージ」にチェックを入れてください。
グループチャット設定画面

3
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?