##はじめに
COBOLしか触ったことがない元エンジニアがGASにてアプリケーションの開発をしてみました。鉞は投げず暖かく見守ってください。。
##【概要】
社内で飛び交っているメール群から、必要な情報だけを抽出して
スプレッドシートに書き出すプログラムを作成しました。
##【詳細】
・件名に「検索ワード1」と「検索ワード2」を持っているメールを抽出
・メール本文から、「特定の文字」の後ろにある数字(桁数ランダム、かつ先頭が0以外)
をスプレッドシートに出力する
##【ソースコード】
function myfanction(){
var mailQuery = 'subject:検索ワード1 subject:検索ワード2 newer_than:1m';
//「件名に検索ワード1、検索ワード2を持っている」「受信から1か月以内」
var threads = GmailApp.search(mailQuery);
var messages = GmailApp.getMessagesForThreads(threads);
//条件に合致するメールを抽出
var sheet = SpreadsheetApp.getActiveSheet();
for(var i=0; i<messages.length; i++){
var plainBody = messages[i][0].getPlainBody();
var hitText = plainBody.match(/'特定の文字'.*/);
//抽出したメール本文から、特定の文字を抽出
if (hitText ==null){
continue;
}
//抽出したい文字が見つからなかった場合の処理
var deletedText = hitText[0].replace('特定の文字', '').replace(' ', '');
//特定の文字の後ろにある数字を抽出したいので、「特定の文字」は削除。
//ゴミ(スペース)も削除
var resultText = deletedText.match(/^\d+/);
//頭の文字から、文字が終わる箇所までを抽出
if (resultText ==null){
continue;
}
sheet.appendRow(resultText);
}
}
##大変だったこと
- hitText、resultText変数がnullだった場合の処理を怠っており、
例外が発生した - 配列の概念をぶっちゃけ理解していなかった。(まだ出来ていないかもしれないのでこれから頑張る)
以上