「GAS」メール内の内容を取得して、チャットルームに送信
let POSTURL = "PostURL";
function myFunction() {
var SEARCH_TERM = 'is:unread subject:{' + "件名" + '} from:{' + "メール@メール" + '}'; //検索条件
var subjectString = 'subjectString';
var SheetName = 'SheetName';
try{
var threads = GmailApp.search(SEARCH_TERM, 0, 60);
if (threads.length == 0){
Browser.msgBox('処理終了', '対象のメールがありませんでした。\n終了します。', Browser.Buttons.OK);
return;
}
// スプレッドシートのシートをgetSheetByNameで読み込み
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); //スプレッドシート
var sheetName = spreadsheet.getSheetByName(SheetName);
if(!sheetName){
spreadsheet.insertSheet(SheetName);
var sheetName = spreadsheet.getSheetByName(SheetName);
var textArray = textArrayCreate();
for (var count in textArray){
sheetName.getRange(1,parseInt(count)+1).setValue(textArray[count]);
}
} else {
// そのシート上の値が存在するセル範囲を取得
var getRow = sheetName.getDataRange().getLastRow();
Logger.log('行数:' + getRow);
}
var mymsg=[];
var msgs = GmailApp.getMessagesForThreads(threads); // メールを取得し二次配列に格納する
Logger.log('メール数:' + msgs.length);
for(var i = 0; i < msgs.length; i++) {
mymsg[i]=[];
for(var j = 0; j < msgs[i].length; j++) {
mymsg[i][0] = parseInt(getRow + i);
mymsg[i][1] = msgs[i][j].getDate();
mymsg[i][2] = msgs[i][j].getFrom();
mymsg[i][3] = msgs[i][j].getSubject();
var mymsgbodys = msgs[i][j].getBody().replace(/<("[^"]*"|'[^']*'|[^'">])*>|nbsp|&|;/g,'').replace(/;; | /g,'').substring(0,50000);
mymsg[i][4] = mymsgbodys.match(/内容1:(.+)/)[1];
mymsg[i][5] = mymsgbodys.match(/内容2:(.+)/)[1];
mymsg[i][6] = mymsgbodys.match(/内容3:(.+)/)[1];
mymsg[i][7] = mymsgbodys.match(/内容4:(.+)/)[1].replace(/[\s\t\n]/g,"");
msgs[i][j].markRead(); // メールを既読にする
}
}
if(mymsg.length > 0){
Logger.log(mymsg.concat());
sheetName.getRange(getRow + 1, 1, mymsg.length, mymsg[0].length).setValues(mymsg); //シートに貼り付け
sheetName.getRange(getRow + 1, 1, mymsg.length, mymsg[0].length + 4).setBorder(true, null, true, true, true, false, "red", SpreadsheetApp.BorderStyle.DASHED); //枠線設定
// mailSending((mymsg.length) + "通のGmailExportが完了しました。\n" + spreadsheet.getUrl(),subjectString);
var msgBox = mymsg[0][3] + "\n" + "ユーザー:" + mymsg[0][12] + "\n" + "ファイルパス:" + mymsg[0][7] + "\n" + spreadsheet.getUrl();
postoptions(msgBox);
}
}catch(e){
var errmsg = "エラーが発生しました。\n" + e.message;
postoptions(errmsg);
}
};
// 項目名配列の生成
function textArrayCreate(){
var textArray = [];
textArray.push('Ref.');
textArray.push('日付');
textArray.push('from');
textArray.push('件名');
textArray.push('補足等');
return textArray;
};
/*** 結果のメール送信 ***/
// function mailSending(messageString,subjectString){
// var user = Session.getActiveUser();
// if (user){
// try{
// MailApp.sendEmail(user.getEmail(),subjectString,messageString);
// }catch(e){
// Logger.log(e.message);
// }
// }
// };
// ブラウザ非依存日付文字列生成
function toOriginalDateString(date){
return date.getFullYear().toString()
+ date.getMonth().toString()
+ date.getDate().toString()
+ date.getHours().toString()
+ date.getMinutes().toString()
+ date.getSeconds().toString();
};
/**POSTメソッドのオプション*/
function postoptions (msg) {
var options = {
'method' : 'POST',
'headers' : {'Content-Type': 'application/json; charset=UTF-8'},
'payload' :JSON.stringify({'text' : msg}),
"muteHttpExceptions" : true
}
try{
//通知
var response = UrlFetchApp.fetch(POSTURL, options);
if (response.getResponseCode() == 200){
return response
}
} catch (e){
console.log("通知エラー" + e.messages);
}
};

コメント