特定の件名メールをGoogle Chatへ通知する機能

特定の件名メールをGoogle Chatへ通知する機能

Googleアカウントを持っていれば誰でも使える機能としてApps Scriptというものがあります。
今回はこちらを使用していきます。

まずは通知先のスペースを作成します。
作成したらアプリと統合からwebhookの作成、名前はスペースに通知する際のユーザ名になります。
URLは記入せず保存を押すと作成されます。
URLはApps Scriptで使用します。

始め方は

  1. 右上のメニューからドライブをクリック
  2. 左上の新規からGoogle apps scriptをクリック

そうすると以下のような画面になり、このコード.gsにコードを書いていきます。
(chatgptで作成しました)

処理内容はこんな感じです。

  • 件名を部分一致で検索
  • 検索した新しいメールの上から5件の未読メールをchatへ通知
  • 対象となったメールは既読
  • 一度の実行では500が読み込み上限らしいので500を上限として設定
function handleNewEmails4() {
var subjectKeywords = [‘あいうえお’, ‘かきくけこ’,’さしすせそ’]; // 対象のメールの部分文字列のリスト
var url = ‘https://untarakantar’; // ここにwebhookで作成したURLを入れる
var maxThreadsPerKeyword = 5; // 各件名ごとに処理するメールの上限
var maxTotalThreads = 500; // すべてのメールスレッドの合計の上限
var totalThreadsProcessed = 0;subjectKeywords.forEach(function(subjectKeyword) {
var threads = GmailApp.search(‘subject:’ + subjectKeyword, 0, maxThreadsPerKeyword); // 指定された件名を含むメールを検索
threads.forEach(function(thread) {
var messages = thread.getMessages();
messages.forEach(function(message) {
// 未読のメールのみを処理する
if (message.isUnread() && subjectKeywords.some(function(keyword) { return message.getSubject().indexOf(keyword) !== -1; })) {
// メールの件名を取得
var subject = message.getSubject();// 通知を送信
sendChatNotification(subject, url);// メールを既読に設定
message.markRead();
}
});
});totalThreadsProcessed += threads.length;
if (totalThreadsProcessed >= maxTotalThreads) {
return; // 上限に達したら処理を終了する
}
});
}function sendChatNotification(subject, url) {
var botMessage = { ‘text’ : subject };
var options = {
‘method’: ‘POST’,
‘headers’ : {
‘Content-Type’: ‘application/json; charset=UTF-8’
},
‘payload’: JSON.stringify(botMessage)
};
UrlFetchApp.fetch(url, options);
}

書き終わったら実行を押し、エラー、期待通りの動きになっているか確認。
左の実行数から実行したログが見れます。このログの期間の秒数を見てトリガーを設定していきます。


というのもこの機能には制限があり守らないとエラーとなってしまいます。
(詳しい制限 https://developers.google.com/apps-script/guides/services/quotas?hl=ja

今回はこの3つを気にしながら設定していこうと思います。

  • メールの読み取り/書き込み(送信を除く) 50,000 / 日
  • トリガーの合計実行時間 6 時間 / 日
  • スクリプト ランタイム 6 分 / 実行

左のトリガーをクリックし右下のトリガーを追加から追加していきます。

実行する関数 作成したものの名前 今回でいうとhandleNewEmails4
実行するデプロイ Head 最新のものということ
イベントのソース 時間主導型 今回は時間で指定するため
時間ベースのトリガーのタイプ 分ベースのタイマー
時間の間隔 1分
で保存

保存したら後は実行数を見ながらエラー等がないかを見ながら調整という形です。

設定は以上になります。
件名だけでなく色々条件は変更できるのでやってみてください。

いいね (1 いいね)
読み込み中...

未分類カテゴリの最新記事