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『娘日記』
朝は公園へ。
砂で遊んでいました。エンドレスで。
城をつくったり、走り回ったり。
夜はマクロスフロンティアを。
■著書
『改訂版 税理士のためのRPA入門 ~一歩踏み出せば変えられる!業務効率化の方法~』
『税理士は「話せなくても」うまくいく ―独立がより楽しくなるコミュニケーション思考―』
『税理士のためのプログラミング -ChatGPTで知識ゼロから始める本-』
『すべてをがんばりすぎなくてもいい!顧問先の満足度を高める税理士業務の見極め方』
ひとり税理士のギモンに答える128問128答
【インボイス対応版】ひとり社長の経理の基本
「繁忙期」でもやりたいことを諦めない! 税理士のための業務効率化マニュアル
ひとり税理士の自宅仕事術
リモート経理完全マニュアル――小さな会社にお金を残す87のノウハウ
ひとり税理士のセーフティネットとリスクマネジメント
税理士のためのRPA入門~一歩踏み出せば変えられる!業務効率化の方法~
やってはいけないExcel――「やってはいけない」がわかると「Excelの正解」がわかる
AI時代のひとり税理士
新版 そのまま使える 経理&会計のためのExcel入門
フリーランスとひとり社長のための 経理をエクセルでトコトン楽にする本
新版 ひとり社長の経理の基本
『ひとり税理士の仕事術』
『フリーランスのための一生仕事に困らない本』
【監修】十人十色の「ひとり税理士」という生き方
