使用用途
WEBの問い合わせフォームなどに設定しているメールを、Chatworkで複数人対応したいときに使用したりすると良いでしょう。※Gmail使っていない場合は、Gmail上で他のアカウントを受信できるようにすれば良い。
プログラム概要
Gmailから未読+条件で検索
未読のメールを既読すると同時に
添付ファイルをGoogleドライブの特定のフォルダにセット
セットしたファイルのファイル名&URLリンクを取得する
メールの件名、本文の後にファイル名&URLリンクをメッセージとして特定のルームに投稿する。
設定箇所
コードに変数記入4か所
- ChatworkAPIトークン(BOTアカウントのAPIトークン)
- ChatworkのROOMID(BOTアカウントは事前にルームに加入させておく)
- Chatwork宛先ID(TOを入れる人数を増やすときはコード変更)
- Gmail検索条件(is:unread に続く条件)
その他設定
- GoogleドライブフォルダID(フォルダの権限を閲覧可にしておく)
コード.js
function main() {
//チャットワークトークン・ID
const CW_TOKEN = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
const CW_ROOM = "99999999";
const CW_TO = "9999999";
//Gmailから特定条件のスレッドを検索しメールを取り出す
var strTerms = 'is:unread label:hogehoge@hoge.co.jp';
var myThreads = GmailApp.search(strTerms, 0, 50); //条件にマッチしたスレッドを取得
var myMsgs = GmailApp.getMessagesForThreads(myThreads); //スレッドからメールを取得する→二次元配列で格納
//チャットワークAPI
var client = ChatWorkClient.factory({
token: CW_TOKEN
});
//各スレッド×メール
for (var i = myMsgs.length - 1; i >= 0; i--) {
var msgsInThread = myMsgs[i];
for (var j = 0; j < msgsInThread.length; j++) {
var msg = msgsInThread[j];
//未読のみ
if (msg.isUnread()) {
//メールを既読にする
msg.markRead();
//添付ファイルを処理
var filelist = ""
var myFolder = DriveApp.getFolderById("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"); //フォルダを取得
var attachments = msg.getAttachments(); //添付ファイルを取得
for(var k in attachments){
var file = myFolder.createFile(attachments[k]); //ドライブに添付ファイルを保存
filelist = filelist + "\n" + attachments[k].getName() + "\n" + file.getUrl()
}
//メッセージ作成
var msgBody = "[To:" + CW_TO + "]" +
"[info]" +
"[title]" + msg.getSubject() + "[/title]" +
msg.getFrom() + "[hr]" +
msg.getPlainBody().slice(0,5000) + "[hr]" +
msg.getDate() + filelist +
"[/info]";
//チャットワークに送る
client.sendMessage({
room_id: CW_ROOM,
body: msgBody
});
}
}
}
}