MAGAZINE
ルーターマガジン
【GAS】Gmailの内容をスプシに自動転記する(特定メールの抽出方法)
はじめに
こんにちは。エンジニアのmiyakawaです。
業務の中では毎日たくさんのEメールが受信されます。
Eメールを受信していくうちに過去に届いたメールは重要なラベルを付けていたとしても、2年前や3年前のメールを全て探し出すことは困難です。また複数のメールに抽出したい内容が分かれている場合も面倒ですよね。
Gmailに関してGoogle Apps Script(GAS)を用いると、受信したメール内容や送信者の情報をスプレッドシート(スプシ)に転記し、メール内容をデータのように扱えてメール情報の整理が効率的にできます。本内容はそのGASを用いたGmailの受信内容のスプシへの転記を共有します。
前準備
はじめにGmailの内容を転記するスプシを作成します。特にファイル作成箇所にこだわりがないならこちらから作成できます。
GASの実装
メニューバーの「拡張機能」から「Apps Script」を開いてください。

以下のスクリプトは、Gmailにて「日報」と検索した結果の最新の5件から、メール件名と抽出したメール内容を「シート1」のシートに記録します。下記のスクリプトはコピペで動作します。
function copyGmailContentsToSpreadsheet() {
// Gmailの内容を転記するスプシ(ここでは新規作成したスプシの対象シートに記録)
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("シート1");
const query = "日報"; // Gmailの検索クエリ、「日報」というワードを含むGmailのスレッドを取得する
// 受信ボックスから探したい場合は「in:inbox」と、特定の送信者から探したい場合は from:example@gmail.com と書き換えてください
const maxReadCount = 5; // 読み取るスレッドの件数、最大500件まで
const startIndex = 0; // スレッドを読み取り始める位置、0が最初のメール
let sheetRow = 1; // スプシのシートに転記する行の値
// ヘッダーをスプシに表記する
sheet.getRange(1, 1).setValue("メール件名");
sheet.getRange(1, 2).setValue("抽出したメール内容");
// Gmailの検索機能でスレッドを取得する
const threads = GmailApp.search(query, startIndex, maxReadCount);
// スレッドごとに内容を読み取る
threads.forEach((thread) => {
// スレッドの最初のメール件名を取得
const mailSubject = thread.getFirstMessageSubject();
// スレッド内の全てのメール情報を取得
const allMailMessages = thread.getMessages();
// 最後のメール内容を取得
const lastMailMessage = allMailMessages[allMailMessages.length - 1].getPlainBody();
// 最後のメール内容から、「本日の日報」と記載されたテキストを行の終わりまで抽出(マッチしない場合は空文字を代入)
const extractionMessage = lastMailMessage.match(/本日の日報.+/) || "";
// 取得した情報をスプシに転記する
sheetRow += 1;
sheet.getRange(sheetRow, 1).setValue(mailSubject);
sheet.getRange(sheetRow, 2).setValue(extractionMessage);
});
}
コピペしましたら変更を保存し、実行ボタンをクリックしてください。権限を全て許可することでスクリプトが実行されます。

Gmailでの検索した内容です。

こちらと同等のメールを取得できていることが確認できます。

検索したいメールや取得したい件数、抽出したい内容はお好みで変更してください。
おわりに
Gmailの内容を抽出することができました。メール内容の他にも、送信者や受信者、送信日などやり取りがあったメールの詳細内容も取得できます。
過去のGmailの内容をスプシに転記してみることで、見えていなかった活路を発見できるかもしれません。ぜひみなさんも自身のGmailの情報を一度は収集してみてはいかがでしょうか。
CONTACT
お問い合わせ・ご依頼はこちらから