ふくちゃん
GASを使ってGmailを取得する方法を紹介します。
取得時にスプレッドシート名に表示される日付を修正する方法もあわせて紹介します。
Google Apps Script (GAS) はGoogleのアプリを動かすことを得意とするプログラム言語です。Googleアプリの需要と共にGASの需要も上がってきています。
Googleアプリの中でもGmailの使用頻度が高く、アカウントを持っている人は非常に多いと思います。私もアカウントをいくつか複数持っていて、毎日使用しています。
内容によっては、Gmailをスプレッドシートで取得する必要が生じることがあります。
そこで今回は、Gmailから特定のmailを抽出してスプレッドシートに取得する方法を紹介したいと思います。
Gmailをスプレッドシートで取得する方法
特定のGmailを抽出してスプレッドシートに取得する方法を紹介します。
まずプロジェクトを作成して下記のコードをコピーしてください。
function contact_Gmail() {
var rowNumber = 2;
var mysheetname = 'Gmail解析_' + DateString(new Date());
var GmailSS = SpreadsheetApp.create(mysheetname);
var mySheet = GmailSS.getSheets()[0];
mySheet.setName(mysheetname);
mySheet.getRange(1,1).setValue("日時");
mySheet.getRange(1,2).setValue("送信元");
mySheet.getRange(1,3).setValue("件名");
mySheet.getRange(1,4).setValue("本文");
var newfolder = DriveApp.createFolder(mysheetname);
var searchQuery = 'subject:(”検索条件を入力してください") ';
var threads = GmailApp.search(searchQuery, 0, 200);
var mymsg=[];
var msgs = GmailApp.getMessagesForThreads(threads);
for(var i = 0; i < msgs.length; i++) {
mymsg[i]=[];
for(var j = 0; j < msgs[i].length; j++) {
mymsg[i][0] = msgs[i][j].getDate();
mymsg[i][1] = msgs[i][j].getFrom();
mymsg[i][2] = msgs[i][j].getSubject();
var nbsp = String.fromCharCode(160);
mymsg[i][3] = msgs[i][j].getPlainBody().replace(/\s+/g, "");
}
}
if(mymsg.length>0){
GmailSS.getSheets()[0].getRange(2, 1, i, 4).setValues(mymsg); //シートに貼り付け
}
}
function DateString(date){
return date.getFullYear().toString()
+ date.getMonth().toString()
+ date.getDate().toString()
+ date.getHours().toString()
+ date.getMinutes().toString()
+ date.getSeconds().toString();
};
プロジェクトにコピーできたら、12行目の”検索条件を入力してください“に検索条件を入力します。
var searchQuery = 'subject:(”検索条件を入力してください") ';
検索条件には、取得したいメールに共通するワードを入れます。演算子が「subject」になっているので、件名から検索されます。
件名で共通するキーワードを探して入力します。
また、演算子を変更することも可能です。例えば、宛先から検索することもできます。宛先から検索する場合は演算子を「subject」 → 「from」に変更します。
var searchQuery = 'from:(”検索条件を入力してください") ';
宛先に含まれるキーワードでも良いですし、アドレスをそのまま入れても検索できます。
演算子を変えることによって任意の場所から検索することが可能になります。
ほかにもGmailで使用できる演算子が多数ありますので掲載しておきます。
コマンド 説明 使用例・注意事項 メール関連のコマンド from: 差出人(送信者)の
アドレスや名前の一部を検索from:花子,from:hanako@gmail.com,
from:ezweb.ne.jpto: 宛先(受信者)の
アドレスや名前の一部を検索to:太郎,to:taro@,
to:gmail.comcc: [Cc:]宛先の
アドレスや名前の一部を検索toと同様 bcc: [Bcc:]宛先の
アドレスや名前の一部を検索toと同様。
ただし受信メールでは使えない。subject: 件名の中の単語を検索 subject:至急
subject:”Gmail 使い方”has:attachment 添付ファイル付のメールを検索 subject:GMAILFS: has:attachment
→ Gmail Drive検索filename: 添付ファイル名の一部を検索 filename:(.jpg OR .jpeg OR .jpe)
→ JPEG画像検索構文コマンド OR 「または」を示すOR構文。足し算。 from:taro@gmail.com OR from:花子 半角スペース 「かつ」を示すAND構文。掛け算。
絞込みに使用。from:上司 subject:至急
フィルタの条件枠同士は最終的に掛け算– 除外や否定を示すNOT構文。 夕食 -映画
フィルタの「含めないキーワード」( ) キーワードやコマンドをグループ化 filename:(.jpg OR .jpeg OR .jpe)
→ JPEG画像検索{ } 上記と同じだがOR構文で繋がる
(A OR B)={A B}filename:{.jpg .jpeg .jpe}
→ JPEG画像検索“” 特定のフレーズを検索 “Gmail 使い方”
スペースのあるフレーズにも使える* ワイルドカード。 *の使い方 状態コマンド is:unread 未読メールを検索
=「l:^u」is:unread is:starred is:read 既読メールを検索
=「l:^r」unreadと同様 after: 特定日以降のメールを検索
(当日含む)after:2006/03/31 before:2006/04/1
※世界標準時。日本の日付とズレる。before: 特定日以前のメールを検索
(当日含む)afterと同様 lang: メールの言語で検索。
=「language:」lang:en,lang:ja,lang:japanese
誤認識メールを救出するのに便利トレイ検索コマンド label: 特定のラベルのメールを検索
「l:」でも可。label:友達 subject:花見 in:anywhere アカウント内全てのメールを検索 「すべてのメール」トレイとは違う
←迷惑メールとゴミ箱も含む全てin:inbox 受信トレイを検索
=「l:inbox」,「l:^i」from:花子 in:inbox
受信トレイの花子のメールis:starred スターを付けたメールを検索
=「l:^t」基本的に使い方は同じ is:chat Gmailチャットメッセージ履歴検索
=「l:^b」,「in:chats」基本的に使い方は同じ is:voicemail Googleトークのボイスメール検索 基本的に使い方は同じ is:muted ミュートしたスレッドを検索
=「l:^g」,「is:mute」基本的に使い方は同じ is:sent 送信済みメールを検索
=「l:^f」基本的に使い方は同じ in:drafts 下書きメールを検索
=「l:^r」基本的に使い方は同じ in:spam 迷惑メールを検索
=「l:^s」基本的に使い方は同じ in:trash ゴミ箱を検索
=「l:^k」基本的に使い方は同じ 参照元:Gmail ヘルプセンター及びGmailの使い方!