【GAS】Gmailの未読メールをChatworkに通知する
※投稿内容は個人の学習目的の記事であり、所属組織とは一切関係ありません。
Chatwork公式ドキュメントではございませんので、自己責任でご利用ください。
こんにちわ、さかぐち(@sakaguchi_mamii)です。
今回はGmailの未読メールを15分おきにチェックし、未読メールがあったらChatworkにメッセージを送信しようと思います。
APIトークンを取得する
Chatworkにログインし、右上のメニューから「API設定」を選択する。
ルームIDを取得する
メッセージを送信したいグループチャットのルームIDを取得する。
グループチャットのURL末尾の数字がルームIDとなります。
ライブラリを読み込む
Chatworkへメッセージ送信は「Chatwork Client for Google Apps Script」を利用します。
プロジェクトキー: M6TcEyniCs1xb3sdXFF_FhI-MNonZQ_sT
スクリプト
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
});
}
トリガーの設定
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分おきに動かすトリガを設定します。
内容を設定し「保存」をクリックする。
今回は15分おきにGmailの未読メールの有無を確認したいので以下を設定します。
- 時間ベースのトリガーのタイプを選択: 分ベースのタイマー
- 時間の間隔を選択: 15分おき
※1日のメール取得件数には制限があります。数の指定にはご注意ください。
下記にわかりやすくまとめてくれてます。
Google Apps ScriptにおけるGmailの読み取り件数の制限とその対処法
テスト
最後に
グループチャットにメッセージが送信されたときに、スマホでプッシュ通知を受け取りたい場合は、スマホアプリで「すべてのメッセージ」にチェックを入れてください。
Author And Source
この問題について(【GAS】Gmailの未読メールをChatworkに通知する), 我々は、より多くの情報をここで見つけました https://qiita.com/sakaguchi_mami/items/71291d2065ab618fa7b3著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .