Gmailでメールを受信したらスプレッドシートに項目を出力したいという業務依頼があり、実装しましたのでやったことを書いています。
Gmailで受信したメールをGASで取得ってできる?
できます。
GmailAppというライブラリでGmailから検索をします。
https://developers.google.com/apps-script/reference/gmail/gmail-app?hl=ja
下記は過去30分以内のメールを最大30件取得する例です。
// Gmailから特定条件のスレッドを検索しメールを取り出す
const unixTime = (new Date()).getTime();//UNIX TIMEに変換
const now = Math.floor(unixTime/1000); //ミリ秒を秒に変換
const term = now - 1800; //現在時刻から30分(1800秒)前
const termStr = term.toString(); //検索期間を文字列に変換
const strTerms = 'after:'+ termStr
var threads = GmailApp.search(strTerms, 0, 30);
下記はメールのタイトルと本文を取得してスプレッドシートに出力する例です。
for (var i = 0; i < threads.length; i++) {
var messages = threads[i].getMessages();
for (var j = 0; j < messages.length; j++) {
var message = messages[j];
var subject = message.getSubject();
var date = message.getDate();
// スプレッドシートにデータを書き込む
sheet.appendRow([subject, date]);
}
}
GASで取得できるデータ項目
GASを使用してGmailから取得できるデータは以下の通りです:
メールの情報:
- 件名 (Subject)
- 送信者 (From)
- 受信者 (To)
- CC
- BCC
- 受信日時 (Date)
- メールのID (ID)
- スレッドID (Thread ID)
- メールのサイズ (Size)
- ラベル (Labels)
- 重要度 (Importance)
- 未読/既読状態 (Read/Unread)
本文の形式:
- プレーンテキスト本文 (Plain Text Body)
- HTML形式の本文 (HTML Body)
添付ファイル:
- 添付ファイルのファイル名 (Attachment File Name)
- 添付ファイルのコンテンツタイプ (Attachment Content Type)
- 添付ファイルのサイズ (Attachment Size)
スレッド情報:
- スレッド内のメールの数 (Number of Messages in Thread)
- スレッドのID (Thread ID)
- スレッドの件名 (Thread Subject)
- スレッドの初めのメッセージ (First Message in Thread)
- スレッドの最新のメッセージ (Last Message in Thread)
- スレッドの未読/既読状態 (Thread Read/Unread)
gasでGmailから取得できるデータは何があるかChatGPTさんに聞いた回答です。
メールの受信時にGASの処理をトリガーすることはできる?
調べたところそのような方法は見つかりませんでした。
私がやった方法としては、30分おきにメールBOXを検索するバッチ処理を発火させるやり方です。
Apps Scriptの[トリガー]から設定が可能です。
今回は30分おきでも問題ありませんでしたが、最短で1分間隔の設定ができるのでほぼほぼリアルタイムでメールの内容がスプレッドシートに反映可能だと思います。
以上です。
ちなみに、「Gmailでメールを受信したことをトリガーにGASの関数を実行させることはできますでしょうか。」とChatGPTに質問したところ回答をもらえたのですが、、これは本当なのでしょうか?
はい、Gmailでメールを受信した際にGASの関数を自動的に実行させることは可能です。これを実現するためには、GASのトリガーを設定する必要があります。
以下に、Gmailでメールを受信したときにGASの関数を実行する方法を説明します。
GASのプロジェクトを開きます。
メニューから「トリガー」を選択します。
画面右下の「+新しいトリガーを追加」をクリックします。
「トリガーを設定する関数を選択」のドロップダウンメニューから、実行したい関数を選択します。例えば、前回説明したprocessNewEmails関数を選択します。
「イベントのソースを選択」のドロップダウンメニューから、「Google Apps のトリガー」→「Gmail」を選択します。
「イベントの種類を選択」のドロップダウンメニューから、「受信時」を選択します。
トリガーの詳細を適切に設定し、保存します。
これにより、Gmailでメールが受信された際に指定した関数が自動的に実行されます。
ただし、この機能を有効にするためには、Gmail APIを有効にする必要があります。GASエディタで「リソース」→「高度なGoogleサービス」を選択し、Gmail APIを有効にしてください。
この方法で、Gmailの受信をトリガーにしてGASの関数を実行することができます。