TwitterのDMをSlackにBotとして通知させたいです。
解決したいこと
TwitterのDMをSlackにBotとして通知させたいです。
初投稿です。足りない説明などございましたらお伝えください。
会社で使っているTwitterに送られてくるDMを、Gメール経由でSlackの希望のチャンネルに通達させたいです。
var FindSubject = 'label:twitterdm ';
function fetchContactMail() {
/* Gmailから特定条件のスレッドを検索しメールを取り出す */
var myThreads = GmailApp.search(FindSubject); //条件にマッチしたスレッドを取得
var myMsgs = GmailApp.getMessagesForThreads(myThreads); //スレッドからメールを取得する →二次元配列で格納 var valMsgs = [];
var br = /[\r\n]+/g; //改行
var rep = ""; //置換文字列
/* 各メールから日時、送信元、件名、内容を取り出す*/
for(var j =0;j<myMsgs.length;j++){
for(var i =0;i<myMsgs[j].length;i++){
if(!myMsgs[j][i].isStarred()){
valMsgs[i] = myMsgs[j][i].getBody().replace(br,""); //html形式の取得と空白削除
var myRegexp = /<td class=\"preheader\" style=\"padding:0;margin:0;line-height:1px;font-size:1px;font-size:1px;color:#ffffff;\">([\s\S]*?)<d><\/d><\/td>/;
//↑tdタグで囲われた場所を抽出するための正規表現。gmailだとstyleで書かれるため大変汚い。
var text = valMsgs[i].match(myRegexp);// matchを用いると0に素のテキスト1に抽出したテキストが入る
var date = myMsgs[j][i].getDate();
var formatD = Utilities.formatDate(date, "Asia/Tokyo", "yyyy-MM-dd HH:mm"); //見やすいようにフォーマットをかける
myMsgs[j][i].star();// starをつけることで次回以降引っかからないように
notice_slack(text[1],formatD);
}
}
}
}
// slackへの通知
var postUrl = 'https://hooks.slack.com/services/XXXXXXXXXXXXXX';// 会社Slackチャンネルのurl部分
var username = 'twitterDM'; // 通知時に表示されるユーザー名
var icon = ':bird:'; // 通知時に表示されるアイコン
var message = 'test'; // 投稿メッセージ
function notice_slack(text,date) {
var jsonData =
{
"username" : username,
"icon_emoji": icon,
"attachments":[
{
"fallback":"fallback Test",
"pretext":"DMが届きました\n"+date,
"color":"#4169e1",
"fields":[
{
"value":text
}
]
}
]
};
var payload = JSON.stringify(jsonData);
var options =
{
"method" : "post",
"contentType" : "application/json",
"payload" : payload
};
UrlFetchApp.fetch(postUrl, options);
}
発生している問題
エラー文は吐かないですが、個人のアカウントで会社のアカウントへDMしてみたところ、画像のように「undefined」と表示されてしまいます。
おそらくGメールを取得できていないのかな?と個人的に思いました。
自分で試したこと
こちらの記事を参考にGASに書き込みました。
非エンジニアですが用語などは調べますのでご指導ご鞭撻のほどよろしくお願いします。。
0