GmailApp.searchでGmail検索をWebアプリに連携!フォームからの問い合わせ管理を自動化

GmailApp.searchでGmail検索をWebアプリに連携!フォームからの問い合わせ管理を自動化

Webアプリ開発において、Gmailの検索機能を活用することで、問い合わせフォームからのメールを効率的に管理し、業務を自動化できます。特に、GmailApp.search関数を使うことで、WebアプリからGmailを検索し、必要な情報を抽出することが可能になります。本記事では、GmailApp.search関数の基本的な使い方から、Webアプリのフォームと連携した問い合わせ管理の実装例、さらにはトラブルシューティングまで、詳しく解説します。

GmailApp.search関数の基本

GmailApp.search関数は、Gmailのメールを検索するためのGAS(Google Apps Script)の関数です。検索条件を指定することで、特定のキーワードや日付、送信者などに基づいてメールを絞り込むことができます。

GmailApp.search関数の構文

GmailApp.search(query, start, max)

  • query:検索クエリ(文字列)。Gmailの検索ボックスに入力するのと同じ形式で指定します。
  • start:検索結果の開始位置(数値)。0から始まります。
  • max:検索結果の最大数(数値)。

検索クエリの例

  • from:example@example.com subject:お問い合わせ:example@example.comからの「お問い合わせ」という件名のメールを検索
  • after:2023/01/01 before:2023/01/31:2023年1月1日から1月31日までのメールを検索
  • has:attachment:添付ファイル付きのメールを検索

WebアプリのフォームとGmailApp.searchを連携した問い合わせ管理

Webアプリのフォームから送信された問い合わせ内容をGmailで受信し、GmailApp.searchを使って特定の条件でメールを検索し、スプレッドシートに情報を抽出する例を紹介します。

実装例1:フォーム送信後のメールを検索し、スプレッドシートに情報を記録

フォームから送信された問い合わせメールを受信後、スクリプトを実行し、メールを検索してスプレッドシートに問い合わせ内容を記録します。

function searchAndLogEmails() {
// スプレッドシートのIDとシート名
const spreadsheetId = "YOUR_SPREADSHEET_ID";
const sheetName = "お問い合わせ記録";

// 検索クエリ(例:特定のアドレスからのメール)
const searchQuery = "from:inquiry@example.com subject:お問い合わせフォーム";

// 検索結果の開始位置と最大数
const start = 0;
const max = 10;

// Gmailを検索
const threads = GmailApp.search(searchQuery, start, max);

// スプレッドシートを開く
const ss = SpreadsheetApp.openById(spreadsheetId);
const sheet = ss.getSheetByName(sheetName);

// スレッドを処理
threads.forEach(thread => {
const messages = thread.getMessages();
messages.forEach(message => {
// 必要な情報を取得(例:送信者、件名、本文)
const sender = message.getFrom();
const subject = message.getSubject();
const body = message.getPlainBody();
const date = message.getDate();

// スプレッドシートに書き込む
sheet.appendRow([date, sender, subject, body]);
});
});
}

実装例2:特定の期間の問い合わせメールを検索し、未対応のメールを抽出

特定の期間に受信した問い合わせメールを検索し、件名に「対応済」というキーワードが含まれていないメールを抽出し、担当者に通知します。

function findUnresolvedInquiries() {
// 検索期間(例:過去1週間)
const startDate = new Date();
startDate.setDate(startDate.getDate() - 7);
const endDate = new Date();

// 検索クエリ(例:特定の期間のメールで「対応済」が含まれない)
const searchQuery = `from:inquiry@example.com after:${startDate.getFullYear()}/${startDate.getMonth() + 1}/${startDate.getDate()} before:${endDate.getFullYear()}/${endDate.getMonth() + 1}/${endDate.getDate()} -subject:対応済`;

// Gmailを検索
const threads = GmailApp.search(searchQuery, 0, 50);

// 未対応の問い合わせを抽出
const unresolvedInquiries = [];
threads.forEach(thread => {
const messages = thread.getMessages();
messages.forEach(message => {
unresolvedInquiries.push({
sender: message.getFrom(),
subject: message.getSubject(),
body: message.getPlainBody(),
date: message.getDate()
});
});
});

// 未対応の問い合わせを担当者に通知(メール送信)
if (unresolvedInquiries.length > 0) {
const recipient = "担当者のメールアドレス";
const subject = "未対応の問い合わせがあります";
let body = "未対応の問い合わせ:\n";
unresolvedInquiries.forEach(inquiry => {
body += `- 送信者: ${inquiry.sender}\n`;
body += `- 件名: ${inquiry.subject}\n`;
body += `- 本文: ${inquiry.body}\n`;
body += `- 受信日: ${inquiry.date}\n`;
body += "\n";
});
GmailApp.sendEmail(recipient, subject, body);
}
}

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

  • 検索結果が取得できない:検索クエリが正しいか確認してください。また、Gmail APIが有効になっているか確認してください。
  • スクリプトの実行時間が長すぎる:検索範囲を絞るか、検索結果の最大数を減らしてください。
  • スプレッドシートへの書き込みエラー:スプレッドシートのIDとシート名が正しいか確認してください。また、スクリプトにスプレッドシートへの書き込み権限があるか確認してください。

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

  • 検索クエリの動的な生成:フォームの入力内容に基づいて検索クエリを動的に生成することで、より柔軟な検索が可能になります。
  • 定期的な自動実行:タイムトリガーを設定することで、定期的にスクリプトを実行し、問い合わせ情報を自動的に収集・処理できます。
  • 他のAPIとの連携:GmailApp.searchで取得した情報を他のAPI(例:Google Cloud Natural Language API)と連携することで、問い合わせ内容の感情分析やキーワード抽出など、より高度な分析が可能になります。

まとめ

GmailApp.search関数をWebアプリのフォームと連携することで、問い合わせ管理を大幅に効率化できます。本記事で紹介した実装例やトラブルシューティングを参考に、ぜひGmailApp.searchを活用して、Webアプリの可能性を広げてください。

PR

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

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