GmailのメールをPDF化。
これを自動化するプログラムを書いてみました。
※GmailとPDF by FUJIFILM X-Pro3+10-24mmF4
GmailをPDF化する必要性
GmailをPDFにする……はたしてその必要があるのでしょうか。
Gmailであれば、検索することもできますし、自分が消さない限りずっと残っています。
必要なときに検索すればいいわけです。
Google側もそう思ってか、メールのプリントアウト=PDF化にはショートカットキーもありません。
あえてやるなら、
Tabキーを4回→Enter→下を4回→Enter→Enter→Enter
です。
長すぎますし美しくありません。
メールをPDF化なんてやりたくなりものです。
ただ、この件でその必要性が出てきました。
(Gmail保存でいいじゃんと思うのですが)
2022年1月電子帳簿保存法改正。やってはいけないこと・すぐやるべきこと・税務調査までにやるべきこと
メールをPDF保存しておく必要があるわけです。
とはいえ、1つずつ保存していたら大変。
なんとかしたいものです。
案として、Gmail→PDFを自動化する流れをGAS(Googleのプログラミング言語)でつくってみました。
Gmail→PDFの流れ
Gmailを自動化するプログラムGASにも、「GmailをPDF化」するという方法がありません。
やはりおすすめされていないわけです。
そこで、今回は
・GmailをGoogleドキュメントにする
・GoogleドキュメントをPDFにする
という方法をとりました。
こういったPDFができます。
これがGmailからつくったPDF。
だいたい似せています。
スタバのモバイルオーダー&ペイは、レシートがなく、メールまたはアプリで明細を受け取るだけです。
アプリだと保存期間が短く(10個程度)、メールをとっておくのがいいでしょう。
その場合、PDFで保管しておきたいものです。
なお、
・モバイルオーダー&ペイで、レシートを別途もらう
・このことのためだけにモバイルオーダー&ペイを使わない
というのは想定していません。
また、Gmail上は、ラベル「電子」をつけ(自動または手動で)、そのラベルがついたものをPDF化するしくみにしています。
運用としては、月に1回程度、PDF化したら、ラベルを外すといいでしょう。
プログラムで対応もできますが、複雑なるので。
GASについては、この記事や動画を参考にしていただければ。
GAS(Google Apps Script)をコピペして使う方法
こういったプログラムです。
テンプレートのドキュメントをつくり、[ツール]→[スクリプトエディタ]を開き、貼り付けていただければ。
テンプレートは後述します。
function gmail_pdf() { //1 設定 //保存するフォルダ const folderID='1I1OSB3DRjlJD70yR08FLVi_wnAAT6aMH' //Gmailの抽出条件 const conditions = "label:電子" //抽出数 const mail_count = 6 //2 メールPDFテンプレートを読み込む //このドキュメント読み込み const templete =DocumentApp.getActiveDocument(); //ドキュメントのIDを読み込み const templeteID=templete.getId(); //3 Gmailから抽出 let search_mail = GmailApp.search(conditions,0,mail_count); let mail_message = GmailApp.getMessagesForThreads(search_mail); //4 抽出したメールからデータ取得 for(let i= 0;i<mail_message.length;i++){ for(let j= 0;j<mail_message[i].length;j++){ //日付 let date = mail_message[i][j].getDate(); //件名 let subject = mail_message[i][j].getSubject(); //送信元 let senderaddress = mail_message[i][j].getFrom(); //受取人 let myaddress = mail_message[i][j].getTo(); //メール本文 let body = mail_message[i][j].getPlainBody(); //テンプレートをコピー let copy_doc =DriveApp.getFileById(templeteID).makeCopy(folderID); //コピーしたドキュメントのID取得 let copy_docID= copy_doc.getId(); //コピーしたドキュメントを開く let doc = DocumentApp.openById(copy_docID); //コピーしたドキュメントからテキストを読み込む let doc_text =doc.getBody(); //テキストをGmailから取得したデータで置換 doc_text.replaceText('件名',subject).replaceText('送信元',senderaddress).replaceText('受取人',myaddress).replaceText('本文',body).replaceText('日付',date); //保存 doc.saveAndClose(); //PDFに変換 let pdf = doc.getAs('application/pdf'); //保存フォルダをGoogleドライブ上で読み込み const folder = DriveApp.getFolderById(folderID); //保存PDF名を設定 let filename = senderaddress+date; //PDFファイルを保存 folder.createFile(pdf).setName(filename); //コピーしたファイルを削除 const file = DriveApp.getFileById(copy_docID); file.setTrashed(true); }; }; };
では、解説していきます。
Gmail→PDFを自動化するGAS
大まかな流れは、
1 必要な設定をする
2 PDFにするテンプレート(ドキュメント)をコピーする
3 対象のメールをGmailから抽出
4 以降を指定の回数だけ繰り返す
・メールから日付、件名、送信元、受取人、本文を抽出
・ドキュメントに上記のものを入れる
・ドキュメントをPDFにして名前をつけて保管
・ドキュメントは、削除
といったものです。
まず、PDFのテンプレートをドキュメントでそれっぽく準備します。
このURLの一部がドキュメントのIDです。
プログラムの中で使います。
まず、設定。
保存するフォルダを指定し、抽出の条件(ここでは、「電子というラベル」)、抽出数(ここでは6)と決めまましょう。
抽出数は多めにしておけば、メールの数だけ繰り返します。
フォルダをGoogleドライブ内につくり、URLの一部からIDをコピーしておきましょう。
これらをダウンロードしてもいいですし、そのまま置いておいてもかまいません。
私は置いておきます。
次にメールPDFのテンプレート、IDを読み込みます。
Gmailから対象のメールを抽出します。
Gmailから抽出したメール1つずつから、日付、件名等を取り出し、
テンプレートをコピーし、そのコピー後のドキュメントに該当部分に、データを入れていきます。
テンプレートはこうなっており、それぞれ、「件名」「送信元」などを、replacetTextで、置換していくのです。
こうしたほうがテンプレートを活用しやすくなります。
そのドキュメントをPDFに変換し、フォルダを設定して、保存します。
最後に、データを入れたドキュメントは、不要なので、削除するようにしました。
こんな感じで「らしく」なればいいかと。
ヨドバシ・ドットコムは、サイトで領収書をダウンロードできますが、手間もかかり、日付がダウンロード日になるのがちょっとやっかいです。
この方法でやっています。
GASの研究も含めて、試してみていただければ。
■編集後記
昨日は朝、公園へ行き、午後からセミナーに参加しました。
夜は、オンラインブランディング講座の入門セミナーを開催。
19:40までだったので、娘に風呂は待ってもらいました。
■1日1新→Kindle『1日1新』 ・Instagram『1日1新』
浅草 ドトール
■娘(4歳8ヶ月)日記→Kindle『娘日記』
朝は公園へ。
砂で遊んでいました。エンドレスで。
城をつくったり、走り回ったり。
夜はマクロスフロンティアを。
■著書
『税理士のためのプログラミング -ChatGPTで知識ゼロから始める本-』
『すべてをがんばりすぎなくてもいい!顧問先の満足度を高める税理士業務の見極め方』
ひとり税理士のギモンに答える128問128答
【インボイス対応版】ひとり社長の経理の基本
「繁忙期」でもやりたいことを諦めない! 税理士のための業務効率化マニュアル
ひとり税理士の自宅仕事術
リモート経理完全マニュアル――小さな会社にお金を残す87のノウハウ
ひとり税理士のセーフティネットとリスクマネジメント
税理士のためのRPA入門~一歩踏み出せば変えられる!業務効率化の方法~
やってはいけないExcel――「やってはいけない」がわかると「Excelの正解」がわかる
AI時代のひとり税理士
新版 そのまま使える 経理&会計のためのExcel入門
フリーランスとひとり社長のための 経理をエクセルでトコトン楽にする本
新版 ひとり社長の経理の基本
『ひとり税理士の仕事術』
『フリーランスのための一生仕事に困らない本』
【監修】十人十色の「ひとり税理士」という生き方