- ヨシモト
総記事本数:17
営業部 ヨシモトです。
PCでもスマホでも共通のストレージとして利用できるGoogle ドライブってとっても便利ですよね!
しかもGmailの添付ファイルも簡単に保存できるのも便利!
でも、受信トレイ内の特定の条件に合致した複数のメールの添付ファイルを一括で、しかも自動で保存できたらもっと便利なんですが…。
これをGoogle Apps Script(以下、GAS)で解決します。
手順としては
2.そのメールに添付されているファイルをドライブへ保存する
コードを書く前に、Google ドライブ内に添付ファイル保存用のフォルダを作っておいてください。
function hasAttachment() {
var fol = DriveApp.getFolderById('ここはドライブのID');
var thds = GmailApp.search("いらすと has:attachment jpg OR png", 0, 3);
var messe = GmailApp.getMessagesForThreads(thds);
for(var i = 0; i < messe.length; i++) {
for(var j = 0; j < messe[i].length; j++) {
var attach = messe[i][j].getAttachments();
for(var k = 0; k < attach.length; k++){
fol.createFile(attach[k]);
}
}
}
}
var fol = DriveApp.getFolderById('ここはドライブのID');
まず添付ファイルを保存するフォルダのをIDにて指定しておきます。
該当フォルダに入るとURLに書いてあります。
var thds = GmailApp.search("いらすと has:attachment jpg OR png", 0, 3);
検索クエリを指定します。
has:attachment を指定すると、添付ファイルが存在するメールを検索してくれます。
また、ここではjpg OR png を加えて画像ファイルに絞っています。
ちなみにこの場合、ZIPファイルにjpgファイルが含まれていると、該当のZIPファイルも拾ってくれます。便利!
Gmailの検索演算子は他にも便利なのがたくさんあるので、公式のヘルプページをご覧ください。
var attach = messe[i][j].getAttachments();
検索で取得したメッセージに対してgetAttachments()することで添付ファイルを取得することができます。
getAttachments()は添付ファイルが配列に格納されることをイメージしましょう。
for(var k = 0; k < attach.length; k++){
fol.createFile(attach[k]);
}
はじめに指定したフォルダに対してcreateFile()することで、フォルダの中にファイルを作成します。
この時、先ほど格納した添付ファイルの配列で繰り返しこの動作をしてもらいます。
これを実行すると
ドライブに保存されました!これは便利!
その他、スプレッドシートやGASに関する記事はこちらからどうぞ。
【GAS】正規表現を使ってGmailの本文から文章を抜き出す
【簡単】GASでスプレッドシートの送信リストからメールを送る
【GAS】正規表現を使って複数行の文章をGmailから抜き出す
【GAS】Gmailの受信トレイにあるメールの添付ファイルを自動でGoogleドライブへ保存する
【難しくない】GASでwebスクレイピングして正規表現でデータを集める
コメントをどうぞ