2022/03/19に更新

【GASで時短】送信先のメールアドレスを抽出する

メールスプレッドシート

Gmailで過去に送信した宛先をスプレッドシートにまとめて出力するGoogle Apps Scriptです。ウイルス等により勝手にメールが送信されることもあるようで、、チェックしやすくなるかも?

こんな悩みを解決します


  • 送信済みメールが本当に自分で送ったものかどうかをチェックしたいので、スプレッドシートにリストアップしたい。

用意するもの


特にありません。今お使いのスプレッドシートに組み込めます。

このスクリプトで出来ること


  • Gmailの送信済みアイテムを、スプレッドシートに出力することが出来ます。
  • 検索期間の開始日を指定することが出来ます(指定した開始日から本日までが対象期間になります)。

使い方


1.スクリプトの実行

上のメニューに有る「スクリプト実行」から「メールの送信先を抽出する」を実行します。

2.地域の入力

検索する期間の開始日を入力します。yyyy/mm/ddの形式で入力してください。

3.結果の確認

アクティブなスプレッドシートに、メールの宛先、送信日時、件名が出力されます。
処理時間はメールの件数によると思いますが、対象のメールが600件の場合は約50秒で処理が完了しました。

4.エラーメッセージ

指定された日付の範囲内にメールが見つからなかった場合は、「条件に一致するメールは見つかりませんでした」というエラーメッセージが表示され、スクリプトが終了します。

スクリプト


/**
 * このスクリプトの説明、使い方はこちら。
 * https://myfunc.jp/items/00057/index.html
 */

function onOpen() {
  // スプレッドシートを開いたときに実行される関数

  // UIの取得
  const ui = SpreadsheetApp.getUi()

  // メニューの表示名
  const menu = ui.createMenu('スクリプト実行');

  // メニューに追加するボタン
  menu.addItem('メールの送信先を抽出する', 'get_mail_destination');

  // メニューを画面に追加する
  menu.addToUi();
}

function get_mail_destination() {

  // UIを取得
  const ui = SpreadsheetApp.getUi();

  // アクティブなスプレッドシート、シートを取得
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  // 検索条件を入力させる
  const input = ui.prompt('検索期間の開始日を入力してください(例:2022/3/1)', ui.ButtonSet.OK_CANCEL);

  // キャンセルが押されたらスクリプトを終了する
  if (input.getSelectedButton() == ui.Button.CANCEL) {
    return;
  }

  // 開始日を取得する
  const date_start = input.getResponseText();

  // メールの検索条件を定義する。送信済で、ユーザが入力した日付以降のメールを対象とする。
  const query = 'in:sent after:' + date_start;

  // 条件を元にメールを検索する
  const threads = GmailApp.search(query);

  // 条件にマッチするものが1件もない場合は処理を中止する。
  if (threads.length == 0) {
    ui.alert('条件に一致するメールは見つかりませんでした');
    return;
  }

  // 結果を格納する配列を作成
  const result = new Array();

  // 見つかったスレッドでループ
  for (let i = 0; i < threads.length; i++) {

    // スレッドからメールを取り出す
    // (スレッドは一連のやり取りのグループのため、1スレッドに複数のメールが含まれうる)
    let msgs = threads[i].getMessages();

    // メール1通ずつ、日時、送信先、タイトルを取得する
    for (let j = 0; j < msgs.length; j++) {

      let date = msgs[j].getDate(); //日時
      let dest = msgs[j].getTo(); //送信先
      let subject = msgs[j].getSubject(); //タイトル

      // 結果を配列に追加する
      result.push([dest, date, subject]);

    }
  }

  // シートの書き込み範囲を定義する。A1セルを起点にする。
  const range = sheet.getRange(1, 1, result.length, result[0].length);

  // シートへの書き込み処理
  range.setValues(result);

}

関連するアプリ


タグ一覧

最新のアプリ

人気のアプリ

ページトップに戻る
myfunc.jp