GmailMessage.getDateでGmailデータ分析を自動化!レポート作成を効率化

GmailMessage.getDateでGmailデータ分析を自動化!レポート作成を効率化

Gmailに埋もれた情報を活用できていますか?GmailMessage.getDate関数を使えば、Gmailの受信日時のデータを取得し、レポート作成やグラフ生成などのデータ分析を自動化できます。この記事では、GmailMessage.getDate関数の基本的な使い方から、具体的な業務課題を解決するコード例、トラブルシューティング、カスタマイズ方法までを解説します。

GmailMessage.getDateとは?

GmailMessage.getDate()は、Google Apps Script (GAS) でGmailのメッセージオブジェクトから日付(Dateオブジェクト)を取得するための関数です。この関数を使うことで、特定のメールがいつ受信されたのかをプログラムで簡単に知ることができます。

GmailMessage.getDateの基本

GmailMessageオブジェクトは、GmailAppサービスを通じて取得できます。例えば、特定のメールボックスからメールを取得し、そのメールの受信日時を取得するといった流れになります。

function getDateExample() {
// 検索クエリ
const query = "from:example@example.com subject:レポート";
// Gmailのスレッドを取得
const threads = GmailApp.search(query, 0, 1);
// スレッド内のメッセージを取得
const messages = threads[0].getMessages();
// 最初のメッセージを取得
const message = messages[0];
// メッセージの受信日時を取得
const date = message.getDate();
// ログに出力
Logger.log(date);
}

Gmailデータ分析:レポート作成への応用

GmailMessage.getDate()は、受信メールのデータ分析に役立ちます。たとえば、特定期間に受信したメールの数をカウントしたり、特定の送信者からのメールの受信日時を分析したりできます。ここでは、レポート作成を効率化するための具体的なコード例を紹介します。

例1:日次メール受信数レポート

毎日のメール受信数を集計し、スプレッドシートに記録するスクリプトです。

function dailyEmailReport() {
const today = new Date();
const startOfDay = new Date(today.getFullYear(), today.getMonth(), today.getDate());
const endOfDay = new Date(today.getFullYear(), today.getMonth(), today.getDate() + 1);

// Gmailを検索(今日の日付のメール)
const threads = GmailApp.search('after:' + Utilities.formatDate(startOfDay, 'JST', 'yyyy-MM-dd') + ' before:' + Utilities.formatDate(endOfDay, 'JST', 'yyyy-MM-dd'), 0, 100);
let count = 0;
for (let i = 0; i < threads.length; i++) {
count += threads[i].getMessageCount();
}

// スプレッドシートに書き込む
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
sheet.appendRow([Utilities.formatDate(today, 'JST', 'yyyy-MM-dd'), count]);
}

例2:特定の送信者からのメール受信頻度分析

特定の送信者からのメール受信頻度を分析し、傾向を把握するスクリプトです。

function analyzeSenderFrequency(senderAddress) {
const threads = GmailApp.search('from:' + senderAddress, 0, 100);
const dates = [];

for (let i = 0; i < threads.length; i++) {
const messages = threads[i].getMessages();
for (let j = 0; j < messages.length; j++) {
dates.push(messages[j].getDate());
}
}

// 日付の配列をログに出力
Logger.log(dates);
// ここで日付の配列を分析して、頻度を計算するなどの処理を追加できます
}

例3:期間ごとのメール受信数グラフ作成

特定の期間におけるメール受信数を集計し、Google Charts APIを使ってグラフを作成するスクリプトです。

function generateEmailTrafficGraph(startDate, endDate) {
// 開始日と終了日の間のメールを検索
const threads = GmailApp.search('after:' + Utilities.formatDate(startDate, 'JST', 'yyyy-MM-dd') + ' before:' + Utilities.formatDate(endDate, 'JST', 'yyyy-MM-dd'), 0, 100);
const counts = {};

for (let i = 0; i < threads.length; i++) {
const messages = threads[i].getMessages();
for (let j = 0; j < messages.length; j++) {
const date = messages[j].getDate();
const dateString = Utilities.formatDate(date, 'JST', 'yyyy-MM-dd');
if (counts[dateString]) {
counts[dateString]++;
} else {
counts[dateString] = 1;
}
}
}

// グラフデータを作成
const data = [['Date', 'Count']];
for (const dateString in counts) {
data.push([dateString, counts[dateString]]);
}

// グラフを作成(サンプル)
Logger.log(data);
// 実際には、Charts APIを使ってグラフを作成する処理を追加します
}

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

  • 日付の形式が期待通りでない:Utilities.formatDate()を使って、日付の形式を調整しましょう。
  • タイムゾーンの問題:GASのタイムゾーン設定を確認し、必要に応じてUtilities.formatDate()でタイムゾーンを指定しましょう。
  • 検索クエリが正しくない:Gmailの検索オプションを確認し、正しいクエリを使用しましょう。

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

  • 特定のラベルのメールのみを処理する:GmailApp.getUserLabelByName()を使ってラベルを取得し、GmailThread.hasLabel()でフィルタリングします。
  • 定期的に実行する:GASのトリガーを設定し、スクリプトを定期的に実行します。
  • エラー処理を追加する:try-catchブロックを使って、エラー発生時の処理を記述します。

まとめ

GmailMessage.getDate()関数を使うことで、Gmailのデータ分析を効率化し、レポート作成を自動化できます。この記事で紹介したコード例を参考に、ぜひ業務に役立ててください。

さらに、この記事を参考に、あなたのビジネスに合わせた分析・レポート作成を自動化し、より効率的な業務を実現してください。

PR

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

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