こんにちは!Gmailもスプレッドシートも生活必需品になってしているtknria(@tknria0304)です!
立場上、部下や後輩から定型フォーマットの報告メールを送ってもらうのですが、これをひとつずつ開いて内容を確認するのがとても手間です。
この作業を簡単にしようと思うと、
・Gmailを検索する
・メールの本文を解析する
・必要な部分だけを抽出する
・スプレッドシートに書き込む
というステップを踏めば実現できます。
「Gmailを検索」ってスプレッドシート上からできるの??
そんなことを思っていましたが、いろいろ試してみるとできちゃいました。
ということで、今回はGmailからメール内容を引用してスプレッドシートに反映する方法をご紹介します。
Gmailとスプレッドシートを連携しよう
まずはスプレットシート上に、ボタンを用意し、スクリプトエディタを開いてください。
(わからない方は以前ご紹介した「まずGASを使ってみたい」という記事を参考にしてみてください。)
そして以下のコードをそのままコピペしてください。
function checkHRS() {
var out_START = 5; // 出力のスタート行を指定する
// 報告メールに付けているラベル名を設定。ここでは「報連相」というラベルをメールに付けているとします。
var Label = "報連相";
// Gmail上で検索し、今回の報連相を取得
var this_threads = GmailApp.search('label:' + Label); // 日
// このシート上に報連相の内容を出力
for(var n in this_threads){
var thd = this_threads[n];
var msgs = thd.getMessages();
var msg = msgs[msgs.length-1];
var from = msg.getFrom();
var date = msg.getDate();
var title = msg.getSubject();
var body = msg.getBody();
sheet.getRange(out_START,1).setValue(date);
sheet.getRange(out_START,2).setValue(from);
sheet.getRange(out_START,3).setValue(title);
sheet.getRange(out_START,4 + i).setValue(body);
out_START++;
Utilities.sleep(500);
}
}
var out_START = 5; // 出力のスタート行を指定する
// 報告メールに付けているラベル名を設定。ここでは「報連相」というラベルをメールに付けているとします。
var Label = "報連相";
// Gmail上で検索し、今回の報連相を取得
var this_threads = GmailApp.search('label:' + Label); // 日
// このシート上に報連相の内容を出力
for(var n in this_threads){
var thd = this_threads[n];
var msgs = thd.getMessages();
var msg = msgs[msgs.length-1];
var from = msg.getFrom();
var date = msg.getDate();
var title = msg.getSubject();
var body = msg.getBody();
sheet.getRange(out_START,1).setValue(date);
sheet.getRange(out_START,2).setValue(from);
sheet.getRange(out_START,3).setValue(title);
sheet.getRange(out_START,4 + i).setValue(body);
out_START++;
Utilities.sleep(500);
}
}
設定として、報告メールには「報連相」というラベルが付いているものとします。
このメールを、GmailApp.search()で検索して取得しています。
上記ではラベルだけで検索していますが、報告メールは毎日、毎週送ってもらうと思うので、日付も指定したくなります。
その場合は、
var this_threads = GmailApp.search('label:' + Label + ' after:2018/11/21 before:2018/11/24');
というように、追加で条件を指定することができます。
(上記であれば、受信日が「2018年11月21日~24日」のメール、という条件を追加しています)
試しに、Gmailで「報連相」というラベル付きのメールをいくつか用意してテストしてみてください。
このコードをベースにすれば、いろんなことができるので、そちらも模索してみてください。
億劫なあとがき
いかがでしょうか。
余談ですが、コード内にある「HRS」というのは、以前某企業に勤めていたときに使われていた用語で、「報連相(HouRenSou)」を指します。
そのときの名残で未だに使ってしまいます笑
関連記事
・これからGASを始めたい!という方にはこちらの記事がオススメ
→ 億劫な細道「GAS まずGASを使ってみたい」
・VBAやGASについてもっとざっくり知りたい方はこちらの記事がオススメ
→ 億劫な細道「VBAやGASを用いた業務効率化のススメ」