GmailApp.getMessagesForThreadsでGmailマーケティングを効率化:顧客管理とキャンペーン分析
GmailApp.getMessagesForThreadsは、Google Apps Script(GAS)でGmailのメッセージをスレッドごとに取得できる強力な関数です。特にマーケティングの分野では、顧客とのコミュニケーション履歴を管理したり、メールキャンペーンの効果を分析したりするのに役立ちます。この記事では、GmailApp.getMessagesForThreadsの基本的な使い方から、マーケティングにおける具体的な活用例、よくある問題とその解決策までを詳しく解説します。
GmailApp.getMessagesForThreadsの基本
GmailApp.getMessagesForThreadsは、指定されたスレッドIDを持つスレッド内のすべてのメッセージを取得します。この関数を使うことで、特定のスレッドにおける顧客とのやり取りを時系列順に把握し、顧客のニーズや過去の対応履歴を理解することができます。
関数の構文:
GmailApp.getMessagesForThreads(threads)
threads
:メッセージを取得するスレッドの配列。
マーケティングにおけるGmailApp.getMessagesForThreadsの活用
マーケティング担当者は、GmailApp.getMessagesForThreadsを使うことで、以下のような業務を効率化できます。
- 顧客管理:顧客とのメールのやり取りを記録し、顧客の状況を把握する。
- キャンペーン管理:キャンペーンメールへの返信状況を分析し、効果測定を行う。
- 顧客分析:顧客の問い合わせ内容を分析し、製品やサービスの改善に役立てる。
実装例1:顧客とのコミュニケーション履歴を抽出する
顧客とのメールのやり取りをスプレッドシートに記録するスクリプトです。このスクリプトを使うことで、顧客とのコミュニケーション履歴を簡単に追跡できます。
function getCustomerCommunication(threadId) {
// スレッドIDからスレッドを取得
const thread = GmailApp.getThreadById(threadId);
if (!thread) {
Logger.log("スレッドが見つかりません: " + threadId);
return;
}
// スレッド内のメッセージを取得
const messages = GmailApp.getMessagesForThreads([thread]);
// スプレッドシートに書き出す
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName("コミュニケーション履歴");
if (!sheet) {
ss.insertSheet("コミュニケーション履歴");
sheet = ss.getSheetByName("コミュニケーション履歴");
sheet.appendRow(["日付", "送信者", "件名", "内容"]); // ヘッダー行
}
// メッセージをスプレッドシートに書き込む
for (const message of messages[0]) {
const date = message.getDate();
const from = message.getFrom();
const subject = message.getSubject();
const body = message.getPlainBody();
sheet.appendRow([date, from, subject, body]);
}
Logger.log("コミュニケーション履歴を記録しました: " + threadId);
}
カスタマイズ:
スプレッドシート名
、シート名
:記録先のスプレッドシートとシートの名前を変更できます。appendRow
:スプレッドシートに書き込む内容をカスタマイズできます。例えば、CCやBCCの情報も記録するように変更できます。
実装例2:キャンペーンメールの開封状況と返信状況を分析する
キャンペーンメールに対する顧客の反応を分析するスクリプトです。このスクリプトを使うことで、キャンペーンの効果測定を行い、改善に役立てることができます。
function analyzeCampaignResponse(campaignThreadId) {
// スレッドIDからスレッドを取得
const thread = GmailApp.getThreadById(campaignThreadId);
if (!thread) {
Logger.log("スレッドが見つかりません: " + campaignThreadId);
return;
}
// スレッド内のメッセージを取得
const messages = GmailApp.getMessagesForThreads([thread]);
let openCount = 0;
let replyCount = 0;
// メッセージを分析
for (const message of messages[0]) {
// 最初のメッセージはキャンペーンメールなのでスキップ
if (message === messages[0][0]) continue;
// 返信があった場合
replyCount++;
}
// スプレッドシートに結果を書き出す
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName("キャンペーン分析");
if (!sheet) {
ss.insertSheet("キャンペーン分析");
sheet = ss.getSheetByName("キャンペーン分析");
sheet.appendRow(["キャンペーン", "開封数", "返信数"]); // ヘッダー行
}
sheet.appendRow([campaignThreadId, messages[0].length -1 , replyCount]);
Logger.log("キャンペーン分析を記録しました: " + campaignThreadId);
}
カスタマイズ:
campaignThreadId
:分析対象のキャンペーンメールのスレッドIDを指定します。件名
:特定の件名のメールのみをカウントするように条件を追加できます。appendRow
:スプレッドシートに書き込む内容をカスタマイズできます。
実装例3:特定のキーワードを含む問い合わせを抽出する
顧客からの問い合わせメールに含まれる特定のキーワードを検出し、対応状況を記録するスクリプトです。このスクリプトを使うことで、顧客のニーズを把握し、迅速な対応を実現できます。
function trackKeywordInquiries(threadId, keywords) {
// スレッドIDからスレッドを取得
const thread = GmailApp.getThreadById(threadId);
if (!thread) {
Logger.log("スレッドが見つかりません: " + threadId);
return;
}
// スレッド内のメッセージを取得
const messages = GmailApp.getMessagesForThreads([thread]);
// スプレッドシートに書き出す
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName("キーワード問い合わせ");
if (!sheet) {
ss.insertSheet("キーワード問い合わせ");
sheet = ss.getSheetByName("キーワード問い合わせ");
sheet.appendRow(["日付", "送信者", "件名", "キーワード", "内容"]); // ヘッダー行
}
// キーワードを検索し、スプレッドシートに書き込む
for (const message of messages[0]) {
const body = message.getPlainBody();
for (const keyword of keywords) {
if (body.includes(keyword)) {
const date = message.getDate();
const from = message.getFrom();
const subject = message.getSubject();
sheet.appendRow([date, from, subject, keyword, body]);
break; // 同じメッセージで複数のキーワードを記録しない場合はbreak
}
}
}
Logger.log("キーワード問い合わせを記録しました: " + threadId);
}
カスタマイズ:
keywords
:検索するキーワードの配列を定義します。includes
:大文字・小文字を区別しない検索や、正規表現を使ったより複雑な検索に変更できます。appendRow
:スプレッドシートに書き込む内容をカスタマイズできます。
よくある問題とトラブルシューティング
- スレッドが見つからない:
GmailApp.getThreadById()
で指定したスレッドIDが存在するか確認してください。 - 権限エラー:スクリプトがGmailへのアクセス権を持っているか確認してください。GASエディタでスクリプトを実行する際に権限を許可する必要があります。
- タイムアウト:大量のメールを処理する場合、スクリプトがタイムアウトする可能性があります。
Utilities.sleep()
を使って処理を一時停止したり、処理対象の期間を絞ったりすることで、タイムアウトを回避できます。
まとめ
GmailApp.getMessagesForThreadsは、GASを使ったGmailマーケティングを効率化するための強力なツールです。顧客管理、キャンペーン分析、顧客のニーズ把握など、さまざまな業務に活用できます。この記事で紹介したコード例を参考に、ぜひGmailApp.getMessagesForThreadsをあなたのマーケティング活動に取り入れてみてください。