Gmail 差し込みメールでスプレッドシートの日付・金額が崩れる時の直し方
Gmail の差し込みメールで Google スプレッドシートを差し込み元にしたとき、日付欄に「46321」、金額欄に「1250」とそのまま入ってしまう。この症状の直し方はどのツールでも同じで、「セルの生の値を送るのをやめて、文字列にして送る」ことです。TEXT() 関数で値を文字列に変換した補助列を作り、差し込みにはその列を指定すれば、シート上で見えている通りの表記がメールに入ります。この記事では、なぜこうなるのか、日付・金額・割引率・番号それぞれにどの式を使えばよいか、そして送信前に何を確認すべきかを順に説明します。
Gmail 差し込みメールでスプレッドシートの日付や金額が変わってしまう理由
Google スプレッドシートの日付は、本当は「2026年10月26日」という文字ではありません。中身は「1899年12月30日から数えて何日目か」というシリアル値(通し番号)で、セルに日付の表示形式が付いているから日付に見えているだけです。金額も同じで、「¥1,250」は数値 1250 に通貨の表示形式をかぶせたものです。
差し込みツールは Google の API を通じてシートを読みますが、ツールによっては「表示されている文字」ではなく「中身の値」を受け取ります。その結果、こうなります。
- 読める日付の代わりに
46321 ¥1,250の代わりに125015%の代わりに0.15- 請求書番号や会員番号の
000007が7 - ツールによっては日付が
2026-10-26T00:00:00.000Z
表示形式どおりに読むツールもあれば、生の値を読むツールもあり、テスト送信して見るまでどちらかは分かりません。ツールごとの挙動を覚えるより、列そのものを文字列にしてしまうほうが確実です。そうすれば、どのツールでも同じものが届きます。
Google Workspace のプランで Gmail 標準の差し込み機能(作成画面の「マルチ送信」)が使える場合も、リンクしたシートから列を差し込めますが、話は同じです。無料の個人 Gmail アカウントにはこの機能がないため、多くの人はスプレッドシートの URL をアドオンや拡張機能、あるいは簡単な Apps Script に渡して差し込みをしています。
TEXT() 関数で差し込み用の列を作る
TEXT() 関数は、値と書式パターンを受け取って文字列を返します。返ってくるのは数値でも日付でもない文字列なので、ツール側で解釈し直される余地がありません。並べ替えや絞り込みに使う元の列はそのまま残し、その隣に差し込み専用の列を追加します。
日付
支払期限が C 列、見出しが「期限」、データの最初の行が 2 行目だとします。新しい列に「期限_文字」という見出しを付け、次の式を入れます。
=TEXT(C2,"yyyy年m月d日")
これで 2026年10月26日 になります。Google スプレッドシートで使える他のパターンも挙げておきます。
"m月d日(ddd)"→10月26日(月)"yyyy/MM/dd"→2026/10/26"M月d日"→10月26日"yyyy-MM-dd"→2026-10-26
月は大文字の MM、または 1 桁表示なら m です。小文字の mm は「分」を意味するので、月の位置に 00 が出てくるときは、ほぼこれが原因です。
金額
金額が D 列にある場合は、
=TEXT(D2,"¥#,##0")
で ¥1,250 になります。「円」を後ろに付けたいなら "#,##0円" とすれば 1,250円 です。#,##0 の部分が桁区切りのカンマを付け、値が 0 のときに空文字ではなく 0 と表示してくれます。小数が必要な単価などは "#,##0.00" のように桁数を指定します。
なお、書式パターンの区切り記号はシートの言語設定(ロケール)に従います。通常の日本語設定であれば上のパターンのままで問題ありません。
割引率・達成率
0.15 として入っている割引率は、
=TEXT(E2,"0%")
で 15% になります。小数第 1 位まで出したいときは "0.0%" です。
先頭にゼロが付く番号
請求書番号、会員番号、注文番号は、スプレッドシートが数値として扱った瞬間に先頭のゼロが消えます。データを貼り付ける前に列を書式なしテキストにしておく(列を選択して、表示形式 → 数字 → 書式なしテキスト)か、その場で変換します。
=TEXT(F2,"000000")
これで 7 が 000007 になります。電話番号もまったく同じ問題で、文字列として持っておかないと 090 の先頭のゼロが落ちたり、指数表記になったりします。郵便番号も同様です。
式を下までコピーし、空欄を処理する
フィルハンドルを下にドラッグするか、見出し行に配列数式を入れて、あとから追加した行にも自動で効くようにします。
={"期限_文字"; ARRAYFORMULA(IF(C2:C="", "", TEXT(C2:C,"yyyy年m月d日")))}
IF(C2:C="", "", ...) の部分が重要です。これがないと、日付が空のセルはメール上で 1899年12月30日 になり、空欄より見栄えが悪くなります。本来任意の項目なら空欄で構いませんし、必須の項目なら後述の送信前チェックで引っかかります。
シート上は問題なく見えるのに、メールで崩れる他の列
日付と金額が目立つ問題ですが、もっと地味なところで「入力した内容と違う」が起きます。
末尾のスペースや見えない文字
CRM やフォーム、別のスプレッドシートから貼り付けたデータには、余分なスペースや改行が混じっていることがよくあります。「田中 様」の間に全角スペースが二つ入っていたり、「田中様 、」のように読点の前に空白が入るのが典型的な症状です。次の式で列をきれいにします。
=TRIM(CLEAN(B2))
CLEAN が印刷されない制御文字を取り除き、TRIM が先頭・末尾・連続した半角スペースを削ります。全角スペースは TRIM では消えないので、必要なら SUBSTITUTE(B2," ","") を組み合わせてください。気づいた列だけでなく、氏名・会社名・住所の列すべてに適用します。
フルネームしかないのに姓だけ使いたい
「氏名」列に「田中 太郎」のように姓と名がスペース区切りで入っているなら、宛名には最初の語だけで十分です。
=INDEX(SPLIT(B2," "),1)
これで「田中」が取れ、本文で「田中様」と書けます。ただし、名前欄に会社名(「株式会社サンプル」)が入っている行や、スペースなしで「田中太郎」と入っている行は要注意です。列を一度並べ替えると、例外がまとまって見えます。結果が空になったときの扱いは別の話ですが、要するに「様」の前が空になる事故を防ぐため、必ず中立的な代替文言(「お客様」など)を用意しておくことです。
英字の大文字・小文字
英語表記の名前や社名が「SARAH JONES」のように大文字で入っている場合、=PROPER(B2) で「Sarah Jones」になります。ただし「McDonald」が「Mcdonald」に、「iPhone」が「Iphone」になるので、適用したあとに列を目で確認してください。日本語の氏名には影響しません。
別のシートを参照している式
補助列が IMPORTRANGE や別ファイルへの VLOOKUP を使っていると、差し込みツールが読み込み途中の値を拾い、メールに #N/A や Loading... が入ることがあります。安全なのは値として固定することです。補助列を選択してコピーし、編集 → 特殊貼り付け → 値のみ貼り付け。データが確定したあと、送信の直前に行います。
5 分で終わる送信前チェック(再送の手間を省く)
差し込みメールは取り消しのきかないメールです。毎回同じ手順で確認します。
- 見出し名と差し込みタグを完全に一致させる。 ほとんどのツールは見出しの文字で列を探すので、「期限_文字」と「期限 文字」は別の列です。記号や空白を含まない短い見出しにします。例:
kigen、kingaku、sei。 - 自分を 2 行目に入れる。 データの最初の行に自分のメールアドレスを入れ、わざと厄介な値を入れます。長い名前、4 桁以上の金額、月末の日付など。その行だけに送り、スマートフォンとパソコンの両方で開いて、受け取る側の目で読みます。
- 必須列の空欄を絞り込む。 見出し行を選択し、データ → フィルタを作成。必須の列ごとにフィルタを開き、「(空白)」だけにチェックを入れます。出てきた行には値か代替文言が必要です。終わったらフィルタを解除し、差し込みから行が隠れないようにします。
- 件数を数える。 メールアドレスが入っている行数と、送るつもりの通数が一致するはずです。見出し行がデータに紛れ込んでいたり、アドレスが別の列に入っていたりすると、ここで気づけます。
- 重複を探す。 メールアドレスの列を選択し、データ → データ クリーンアップ → 重複を削除。同じ人に同じメールを 2 通送ると、信頼をあっさり失います。
- 式の結果を固定する(特殊貼り付け → 値のみ貼り付け)。別のシートに依存している列がある場合は、前述の通りです。
- まず少量で送る。 10 行だけ送り、送信済みフォルダを確認してから残りを送ります。何か見落としていても、謝罪メールは 300 通ではなく 10 通で済みます。
Zestmail のようなツールが役立つ場面
ここまでの方法は、自分で書いた無料の Apps Script を含め、どの差し込み方法でも使えます。専用ツールが加えてくれるのは手軽さです。コードを組む代わりにシートの URL を貼り付けるだけで、Gmail の作成画面から離れずに済みます。
Zestmail は Gmail 用の Chrome 拡張機能で、Google スプレッドシートの URL からの差し込み送信のほか、予約送信と、各受信者がメールを開いたかどうか・いつ開いたかを示す開封確認の機能があります。開封確認では、自分自身の開封とよくあるボットによる開封は除外されます。請求書やリマインダーをまとめて差し込み送信するような場面では、どれが開封されたかが分かれば誰に追って連絡すべきかが見え、開封時刻は次回の送信時間を決める参考になります。ただし開封確認は完璧ではありません。画像のブロックや Apple Mail のプライバシー保護のようなプロキシによって、開封が隠れたり、実際より早く記録されたりします。証拠ではなく、強めの手がかりとして扱ってください。Zestmail は Gmail の受信トレイを読み取る権限を求めませんが、一部の機能は動作のために下書きを Zestmail のサーバーに送ります。拡張機能と Web サイトは英語のみで、日本語表示はありません。インストールは Chrome ウェブストアからです。
無料プランでは 1 日 20 通まで送信でき、各メールの末尾に「Sent with Zestmail」という小さなフッターが付きます。Pro はこの制限がなくなり、月額 9 ドルまたは年額 69 ドルで、7 日間の無料トライアルがあります。詳細は料金ページにあります。数十行程度の一回きりの差し込みなら無料プランで足ります。どちらにしても、先に文字列の列を作っておくことです。ツールはシートが渡したものしか送れません。