Gmailで過去に送信した宛先をスプレッドシートにまとめて出力するGoogle Apps Scriptです。ウイルス等により勝手にメールが送信されることもあるようで、、チェックしやすくなるかも?
特にありません。今お使いのスプレッドシートに組み込めます。
上のメニューに有る「スクリプト実行」から「メールの送信先を抽出する」を実行します。
検索する期間の開始日を入力します。yyyy/mm/ddの形式で入力してください。
アクティブなスプレッドシートに、メールの宛先、送信日時、件名が出力されます。
処理時間はメールの件数によると思いますが、対象のメールが600件の場合は約50秒で処理が完了しました。
指定された日付の範囲内にメールが見つからなかった場合は、「条件に一致するメールは見つかりませんでした」というエラーメッセージが表示され、スクリプトが終了します。
/**
* このスクリプトの説明、使い方はこちら。
* 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);
}