「GAS」メール内の内容を取得して、チャットルームに送信

社内SE

「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); 
  } 
};




コメント