0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Gmailの返却期限メールをGoogle Apps Scriptで抽出し、確認漏れを減らす

0
Posted at

背景

レンタル機器や貸出品を扱う業務では、返却期限がメール本文にだけ書かれていることがあります。注文確認、発送連絡、請求書など同じ案件のメールが増えると、検索できても「どの記載が確定情報か」を見落としがちです。

この記事では、Gmailから返却期限の候補を抽出し、Googleスプレッドシートへ一覧化する最小構成を紹介します。自動で確定・返信するのではなく、最後は人が原文を確認する設計です。

設計方針

  1. Gmail検索で候補を狭める
  2. 本文から日付らしい文字列を抽出する
  3. メールへのリンクと一緒にシートへ保存する
  4. 確定日・返却先・配送方法は人が確認する

期限管理では、誤検出よりも「根拠へ戻れること」が重要です。

Apps Script

スプレッドシートを作成し、拡張機能からApps Scriptを開いて次のコードを貼り付けます。

function collectReturnDateCandidates() {
  const query = 'newer_than:90d ("返却日" OR "返却期限" OR "レンタル期間")';
  const threads = GmailApp.search(query, 0, 50);
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getSheetByName('期限候補') || ss.insertSheet('期限候補');

  if (sheet.getLastRow() === 0) {
    sheet.appendRow(['取得日時', '送信元', '件名', '日付候補', 'メール']);
  }

  const knownIds = new Set(
    sheet.getLastRow() < 2
      ? []
      : sheet.getRange(2, 5, sheet.getLastRow() - 1, 1)
          .getDisplayValues()
          .flat()
          .map(url => (url.match(/[#/]([0-9a-f]+)$/) || [])[1])
          .filter(Boolean)
  );

  for (const thread of threads) {
    for (const message of thread.getMessages()) {
      const id = message.getId();
      if (knownIds.has(id)) continue;

      const body = message.getPlainBody();
      const dates = extractJapaneseDates(body);
      if (dates.length === 0) continue;

      const url = 'https://mail.google.com/mail/u/0/#all/' + id;
      sheet.appendRow([
        new Date(),
        message.getFrom(),
        message.getSubject(),
        dates.join(', '),
        url
      ]);
      knownIds.add(id);
    }
  }
}

function extractJapaneseDates(text) {
  const patterns = [
    /\b20\d{2}[\/-]\d{1,2}[\/-]\d{1,2}\b/g,
    /20\d{2}年\s*\d{1,2}月\s*\d{1,2}日/g
  ];
  const found = patterns.flatMap(pattern => text.match(pattern) || []);
  return [...new Set(found)];
}

なぜ「候補」止まりにするのか

メールには発送日、到着予定日、利用開始日、返却日など複数の日付が含まれます。正規表現だけで意味まで断定すると、誤った日を予定に登録する危険があります。

そのため、一覧には次の情報を必ず残します。

  • 送信元
  • 件名
  • 抽出した日付
  • 元メールへのリンク

担当者は元メールを開き、返却先住所、元払い・着払い、同梱書類まで確認します。

運用を安定させる工夫

時間主導トリガーで1日1回実行できますが、最初は手動実行で検索結果を確認するのがおすすめです。また、機密情報を外部APIへ送らず、Google Workspace内で完結させる構成にしておくと管理しやすくなります。

期限そのものだけでなく、「返却先を確認する日」「梱包を始める日」も別に登録すると、当日に慌てることが減ります。

まとめ

メール起点の期限管理では、完全自動化よりも候補抽出+原文確認の組み合わせが安全です。小さな仕組みでも、検索時間と確認漏れを着実に減らせます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?