ChatWorkにメッセージが投稿されると [To:*****] ○○さん 宛にメールを送信します。
送信元のGmailに返信するとChatWorkにメールの内容が投稿されます。
コミュニケーションツールは、ChatWork をメインに使っていますが、営業の社用携帯がガラケーなので、いちいちメール送るのが面倒!!!!!
なのでガラケーとの連絡もChatWork ですませてしましまいます。
イチイチメールソフト起動してメールアドレス選んで....とうっとうしい作業をしなくて良くなります。
ChatWorkメッセージの最初が [To:*****] で始まっていれば、メールを送信します。
なので、メール送受信用のルームでも[To:*****] で始まっていないメッセージなら通常通り使用できます。
「var Members =」にメールを送信したい人の「ChatWork ID」と「メールアドレス」を記述する必要があります。
以下のコードをGoogle Apps Scriptに記述。
「プロジェクトのトリガー」で「fire」を1分ごとに設定。
var CW_TOKEN = '********************'; //チャットワークAPIトークン
var ROOM_ID = '**********'; //チャットワークルームID
//{チャットワークID:メールアドレス}
var Members = {
"264000" : "aaa@aaa.ne.jp"
, "264000" : "bbb@bbb.ne.jp"
, "263000" : "ccc@ccc.ne.jp"
, "263000" : "ddd@ddd.ne.jp"
, "264000" : "eee@eee.ne.jp"
, "264000" : "fff@fff.ne.jp"
, "271000" : "ggg@ggg.ne.jp"
}
function fire(){
fetchContactMail();
SendMailFromChatWork();
}
function fetchContactMail() {
/* Gmailから特定条件のスレッドを検索しメールを取り出す */
var strTerms = '(is:unread -from:cwmail "[cwmail]")';
var thds = GmailApp.search(strTerms, 0, 500); //条件にマッチしたスレッドを取得、最大500通と決まっている
//var thds = GmailApp.getMessagesForThreads(myThreads); //スレッドからメールを取得する →二次元配列で格納
var row = 1;
for(var n in thds){
var thd = thds[n];
var msgs = thd.getMessages();
for(m in msgs){
var msg = msgs[m];
var from = msg.getFrom();
var to = msg.getTo();
var date = msg.getDate();
var subject = msg.getSubject();
var body = msg.getBody();
var PlainBody = msg.getPlainBody().slice(0,200);
Logger.log(subject+from);
msg.markRead(); //メッセージを既読にする
if ( from.match(/cwmail/)) {
}else{
/* メッセージを生成しチャットワークにを送る */
var msgBody = "[hr]" + "\n" +
"date:" + date + "\n" +
"from:" + from + "\n" +
subject +"\n" +
PlainBody ;
sendMessage(msgBody);
}
row++;
}
}
}
/*ROOM_IDのメッセージを読み込みメールを送信*/
function SendMailFromChatWork() {
var params = {
headers : {"X-ChatWorkToken" : CW_TOKEN },
method : "get"
};
var url = "https://api.chatwork.com/v1/rooms/" + ROOM_ID + "/messages?force=0"; //指定のグループチャットからメッセージを取得
var strRespons = UrlFetchApp.fetch(url, params); //チャットワークAPIエンドポイントからレスポンスを取得
try{
var json = JSON.parse(strRespons.getContentText()); //文字列をJSON形式として解析しJSONオブジェクトとして返す
}catch(e){
return;
}
Utilities.sleep(500);
//Logger.log(json);
var sent_number = 0;//メール送信数
/*
for each(var obj in json){
Logger.log(obj.body);
}
*/
for(var i=0;i
var body =json[i].body + "\n\n" +
json[i].account.name;
/*宛先メールアドレス*/
var myRegexp = /^\[To:(.*?)\]+/i;
var match = myRegexp.exec(body);
Logger.log(match);
var ToCwID = match[1];
var EmailTo=Members[ToCwID];
//Logger.log(EmailTo);
if(EmailTo){
/*2行目をSubjectに設定*/
var textArray = body.split(/\r\n|\r|\n/);
var Subject = textArray[1];
Subject += "[cwmail]";
var EmailCc=Members[json[i].account.account_id];
Logger.log(EmailCc);
GmailApp.sendEmail(EmailTo,
Subject,
body,
{
/*
attachments: [file.getAs(MimeType.PDF)],
bcc: 'abc@g.com',
from: 'abc@g.com',
*/
cc: EmailCc,
name: 'cwmail'
});
sent_number+=1;
Utilities.sleep(500);
}
}//for(var.....
if(sent_number>0){
var notification="[info]メール送信済:"+sent_number+"[/info]";
sendMessage(notification);
}
}
/* 本文を受け取りメッセージを送る */
function sendMessage(body){
var params = {
headers : {"X-ChatWorkToken" : CW_TOKEN},
method : "post",
payload : {
body : body
}
};
var url = "https://api.chatwork.com/v1/rooms/" + ROOM_ID + "/messages";
UrlFetchApp.fetch(url, params);
Utilities.sleep(500);
}
0 件のコメント:
コメントを投稿