Googleスプレッドシートで作業していると、メールで送られてきたファイルを都度手動で保存するのが手間に感じることがある。GASで添付ファイルの保存を自動化しておくと少し楽になる。
スプレッドシート業務の前段として、Gmailの添付をごっそり抜き出したいとき
「件名が請求書で、添付があるもの」といった条件でGmailを検索し、Googleドライブの特定フォルダにファイルを保存していく。
const threads = GmailApp.search("has:attachment subject:請求書", 0, 5);
const folder = DriveApp.getFolderById("FOLDER_ID");
threads.forEach(t => t.getMessages().forEach(m => m.getAttachments().forEach(att => folder.createFile(att))));
検索条件と保存先フォルダのIDを指定する。スレッドの中のメッセージを確認し、添付ファイルがあれば createFile で放り込んでいく。
処理済みのメールをGoogleドライブへ重複保存しないための対策
スクリプトを定期的に実行する場合、そのままでは毎回同じファイルを保存してしまう。
処理が終わったスレッドにはスターを付けるか、処理済み用の特定ラベルを付与して、次回の検索条件から除外する工夫を入れる必要がある。
請求書PDFや日報CSVの回収を完全無人化する
スプレッドシート側でデータを処理する準備として、指定のフォルダに日報CSVや請求書PDFが自動で集まる状態を作りたいときに役立つ。
業務自動化の鉄板ともいえる処理なので、検索条件の文字列とフォルダIDを変えるだけで様々な案件に応用しやすい。

