Gmailの件名(Subject)から始めるデータ分析:GmailMessage.getSubjectで業務効率化

Gmailの件名(Subject)から始めるデータ分析:GmailMessage.getSubjectで業務効率化

GmailのGmailMessage.getSubject()メソッドを利用して、受信したメールの件名から必要な情報を抽出し、データ分析に活用することで、業務効率を大幅に向上させることができます。例えば、顧客からの問い合わせメールの件名から問い合わせの種類を判別し、自動で担当者に振り分けたり、特定のキーワードを含むメールの件数を集計してレポート作成に役立てたりできます。この記事では、GmailMessage.getSubject()の基本的な使い方から、具体的な業務課題を解決する応用例まで、詳細に解説します。

GmailMessage.getSubject()の基本

GmailMessage.getSubject()は、GAS(Google Apps Script)でGmailのメッセージオブジェクトからメールの件名を取得するためのメソッドです。非常にシンプルでありながら、様々なデータ分析の入り口として活用できます。

構文

message.getSubject()

ここで、messageGmailMessageオブジェクトを表します。

戻り値

メールの件名を文字列として返します。

データ分析でのGmailMessage.getSubject()の実装例

ここでは、GmailMessage.getSubject()をデータ分析に活用する具体的な例をいくつか紹介します。

1. 問い合わせ内容の自動分類とレポート作成

顧客からの問い合わせメールの件名に含まれるキーワードに基づいて、問い合わせ内容を自動的に分類し、レポートを作成する例です。

function analyzeEmailSubjects() {
// 検索クエリを設定 (例: 過去7日間の未対応のメール)
const searchQuery = 'is:unread newer_than:7d';
const threads = GmailApp.search(searchQuery);

let inquiryCounts = {};

for (const thread of threads) {
const messages = thread.getMessages();

for (const message of messages) {
const subject = message.getSubject();

// 問い合わせの種類を判別 (例: 件名に「請求」が含まれる場合は請求関連)
let inquiryType = 'その他';
if (subject.includes('請求')) {
inquiryType = '請求';
} else if (subject.includes('納期')) {
inquiryType = '納期';
} else if (subject.includes('仕様')) {
inquiryType = '仕様';
}

// 問い合わせの種類ごとの件数をカウント
if (inquiryCounts[inquiryType]) {
inquiryCounts[inquiryType]++;
} else {
inquiryCounts[inquiryType] = 1;
}
}
}

// 結果をログに出力 (実際にはスプレッドシートに出力したり、グラフを作成したりする)
console.log(inquiryCounts);

// スプレッドシートに出力する例
const ss = SpreadsheetApp.create('問い合わせ分析レポート');
const sheet = ss.getActiveSheet();
sheet.appendRow(['問い合わせ種類', '件数']);

for (const type in inquiryCounts) {
sheet.appendRow([type, inquiryCounts[type]]);
}
}

2. 特定のプロジェクトに関するメールの抽出と集計

件名に特定のプロジェクト名を含むメールを抽出し、その件数を集計する例です。

function countProjectEmails(projectName) {
// プロジェクト名を含むメールを検索
const searchQuery = 'subject:' + projectName;
const threads = GmailApp.search(searchQuery);

// スレッド数をカウント (各スレッドには複数のメッセージが含まれる可能性がある)
let emailCount = 0;
for (const thread of threads) {
emailCount += thread.getMessageCount();
}

// 結果をログに出力
console.log(projectName + 'に関するメールの数: ' + emailCount);
}

3. アラートメールの集計と重要度分析

システムからのアラートメールの件名から、アラートの種類を判別し、重要度に応じて対応を促す例です。

function analyzeAlertEmails() {
// 未読のアラートメールを検索
const searchQuery = 'is:unread subject:アラート';
const threads = GmailApp.search(searchQuery);

let highPriorityCount = 0;
let mediumPriorityCount = 0;
let lowPriorityCount = 0;

for (const thread of threads) {
const messages = thread.getMessages();

for (const message of messages) {
const subject = message.getSubject();

// アラートの種類を判別し、重要度を判断
if (subject.includes(' критический')) {
highPriorityCount++;
} else if (subject.includes('警告')) {
mediumPriorityCount++;
} else {
lowPriorityCount++;
}
}
}

// 結果をログに出力
console.log('高重要度アラート: ' + highPriorityCount);
console.log('中重要度アラート: ' + mediumPriorityCount);
console.log('低重要度アラート: ' + lowPriorityCount);
}

よくある問題とトラブルシューティング

  • 件名が取得できない場合: GmailMessageオブジェクトが正しく取得できているか確認してください。検索クエリが正しいか、メールが存在するかなども確認が必要です。
  • 文字コードの問題: 件名に特殊文字が含まれている場合、文字コードが正しく処理されないことがあります。Utilities.newBlob(message.getSubject()).getDataAsString('UTF-8')などで文字コードを指定して取得してみてください。

カスタマイズ方法と応用例

  • 定期的なレポートの自動作成: GmailMessage.getSubject()で取得したデータをGoogle Sheetsに出力し、定期的にレポートを作成するスクリプトを作成できます。
  • Slackへの通知: 特定のキーワードを含むメールの件名をSlackに通知することで、迅速な対応を促すことができます。
  • 機械学習との連携: GmailMessage.getSubject()で取得した件名を機械学習モデルに入力し、メールの内容を予測したり、感情分析を行ったりできます。

まとめ

GmailMessage.getSubject()は、Gmailの件名から情報を抽出し、データ分析に活用するための強力なツールです。この記事で紹介した例を参考に、ぜひ業務効率化に役立ててください。GASとGmailMessage.getSubject()を組み合わせることで、日々のメール処理を自動化し、より戦略的な業務に集中できるようになります。

PR

CodeCampは、現役エンジニアからマンツーマンで学べるオンラインプログラミングスクールです。WebデザインやWebサービス開発、転職支援など、目的に合わせた多様なコースが選べます。
朝7時〜夜23時40分まで、365日レッスンが受けられるため、忙しい方でも自分のペースで学習を進めることが可能です。通過率8%の厳しい選考を通過した質の高い講師陣が、あなたのキャリアチェンジを強力にサポートします。
さらに、未経験者向けのカリキュラムや、学習開始から20日以内の全額返金保証制度もあるため、プログラミング学習に不安を感じている方でも安心して始めることができます。

CodeCampで理想の働き方を実現しよう