スポンサーリンク
GASでメールを転送したら、転送したメールが分かるように転送済'ラベルを付与し、転送したメールをスプレッドシートに転記するプログラムを作成しました。
使い方
GAS(Google Apps Script)にはスタンドアロンスクリプトとコンテナバインドスクリプトの2種類のスクリプトがあります。このプログラムはどちらにも対応しやすいように記載しています。
スプレッドシートで利用する場合は、あらかじめスプレッドシートの用意が必要です。また、シートには「一覧」シートを用意しておく必要があります。
「▼#####▼」と「▲#####▲」で囲まれた箇所はスプレッドシートに転記する処理を記載しています。もしもスプレッドシートに転記しなくても良い場合は、コメントアウトしてください。
ソースコード
function Main() {
ForwardMail(検索Fromのメールアドレス, 検索Toのメールアドレス, '検索の件名01', 300, 送信先のメールアドレス);
// ForwardMail(検索Fromのメールアドレス,検索Toのメールアドレス, '検索の件名01',300, 送信先のメールアドレス);
}
const ForwardMail = (srchFrom, srchTo, srchSubject, srchTime, emailTo) => {
try {
// 受信日時指定
const date = new Date(); // 現在時刻を取得
const unixTime = date.getTime(); // UNIX TIMEに変換
const now = Math.floor(unixTime / 1000); // ミリ秒を秒に変換
const term = (now - srchTime).toString(); // 60の場合、現在時刻から1分(60秒)前
const srchTerm = term.toString(); // 文字列に変換
const label = GmailApp.getUserLabelByName('転送済') || GmailApp.createLabel('転送済');
let srchCondition = '';
srchCondition = srchCondition + 'from:' + srchFrom;
srchCondition = srchCondition + '\u0020';
srchCondition = srchCondition + 'to:' + srchTo;
srchCondition = srchCondition + '\u0020';
srchCondition = srchCondition + 'subject:' + srchSubject;
srchCondition = srchCondition + '\u0020';
srchCondition = srchCondition + 'after:' + srchTerm;
srchCondition = srchCondition + '\u0020';
srchCondition = srchCondition + '-label:' + "転送済";
const myThreads = GmailApp.search(srchCondition, 0, 10); // 条件にマッチしたスレッドを取得
const myMessages = GmailApp.getMessagesForThreads(myThreads); // スレッドからメールを取得する
if (typeof myMessages === "undefined" || myMessages.length === 0) {
console.log("対象なし");
} else {
const recipient = emailTo;
const options = {};
myMessages.map(function (myMsgs) {
const myMsg = myMsgs[0];
console.log("対象あり:メール送信開始" + " " + "Rfc822msgid:" + myMsg.getId() + " " + "subject:" + myMsg.getSubject());
MailApp.sendEmail(recipient, myMsg.getSubject(), myMsg.getPlainBody(), options);
// myMsg.forward(recipient);
myMsg.getThread().addLabel(label);
console.log("対象あり:メール送信完了" + " " + "Rfc822msgid:" + myMsg.getId() + " " + "subject:" + myMsg.getSubject());
//▼#####▼#####▼#####▼#####▼#####▼#####▼#####▼#####▼#####▼#####▼#####▼#####▼#####▼#####▼
console.log("対象あり:スプレッドシート書込み開始" + " " + "Rfc822msgid:" + myMsg.getId() + " " + "subject:" + myMsg.getSubject());
// 書き込むシートを取得
const sheet = SpreadsheetApp.getActive().getSheetByName('一覧');
// const sheet_id = 'xxxxx';
// const sheet_name = '一覧';
// const sheet = SpreadsheetApp.openById(sheet_id).getSheetByName(sheet_name);
// const addArray = ['1', '2', '3'];
// sheet.appendRow(addArray);
let array = [];
array.push(['Date', Utilities.formatDate(myMsg.getDate(), 'Asia/Tokyo', 'yyyy/MM/dd HH:mm:ss')]);
array.push(['Subject', myMsg.getSubject()]);
array.push(['From', myMsg.getFrom()]);
array.push(['To', myMsg.getTo()]);
array.push(['Cc', myMsg.getCc()]);
array.push(['Bcc', myMsg.getBcc()]);
array.push(['ReplyTo', myMsg.getReplyTo()]);
array.push(['Body', myMsg.getBody()]);
array.push(['PlainBody', myMsg.getPlainBody()]);
array.push(['Id', myMsg.getId()]);
array.push(['Header("Message-ID")', myMsg.getHeader("Message-ID")]);
// array.push(['RawContent', myMsg.getRawContent()]);
let nameRow = 1;// ヘッダー行を設定
for (let i = 0; i < array.length; i++) { sheet.getRange(nameRow, i + 1).setValue(array[i][0]); }
let lastRow = sheet.getLastRow() + 1;// 最終行を取得
for (let i = 0; i < array.length; i++) { sheet.getRange(lastRow, i + 1).setValue(array[i][1]); }
console.log("対象あり:スプレッドシート書込み完了" + " " + "Rfc822msgid:" + myMsg.getId() + " " + "subject:" + myMsg.getSubject());
//▲#####▲#####▲#####▲#####▲#####▲#####▲#####▲#####▲#####▲#####▲#####▲#####▲#####▲#####▲
});
}
} catch (err) {
Logger.log(err);
}
}
参考サイト/関連サイト
Class GmailMessage - Apps Script - Google Developers
最後までお付き合いいただきありがとうございます!
この情報が誰かの役にたてれば幸いです。