MENU

スプレッドシートの一覧から、決まった書式のメールを自動で作る【まず動かす版】

スプレッドシートの一覧から決まった書式のメールを作る

同じ文面のメールを、宛名だけ変えて何十通も送る。

手で打っていると、そのうち1通くらい間違えます。しかもメールは、送ってしまうと取り消せません。

この記事では、スプレッドシートに並んだ一覧から、決まった書式のメールを自動でつくるところまでをやります。 プログラミングの経験は必要ありません。コードは全部そのまま貼るだけです。

ひとつだけ、順番を守ってほしいところがあります。 いきなり送信はしません。まず「下書き」を作ります。 Gmailの下書きフォルダに並んだものを自分の目で確認して、問題なければ送信に切り替える。下書きなら、間違っていても消せば済みます。


目次

できあがるもの

こういうシートを用意して……

宛先・名前・品名の3列を並べたスプレッドシート
A列に宛先、B列に名前、C列に品名。この3列だけで動きます。

ボタンを1回押すと、Gmailの下書きがこうやって並びます。

Gmailの下書き一覧に2件のメールが並んでいる画面
シートの行数ぶん、下書きが並びます。

中身はこんなメールです。

下書きを開いて本文を確認している画面
宛名と品名が差し込まれ、改行もそのまま入っています。

シートを用意する

Googleスプレッドシートを新しく1つ作って、1行目に見出し、2行目から中身を入れます。

ABC
1宛先名前品名
2自分のメールアドレス山田 太郎4月号
3自分のメールアドレス鈴木 花子4月号

最初は必ず、自分のメールアドレスだけを入れてください。 テストのつもりで他人のアドレスを入れておくと、うっかり送信してしまったときに取り返しがつきません。自分宛てなら何度失敗しても大丈夫です。

なお、この記事の画像では test@example.com と表示していますが、これは説明用の表記です。実際にはご自身のアドレスを入れてください。

見出しの1行目は、あってもなくても動くように後で処理します。今は気にせずそのまま入れてください。


スクリプトエディタを開く

シートの上のメニューから、

拡張機能 → Apps Script

をクリックします。新しいタブでエディタが開きます。

スプレッドシートの拡張機能メニューを開いたApps Scriptの項目
スプレッドシートの「拡張機能」から「Apps Script」をクリックします。

最初から書いてある

function myFunction() {

}

は、全部消してしまって大丈夫です。


コードを貼る

消したところに、下のコードをそのまま貼り付けてください。1文字も打ち替えなくて構いません。

function createMails() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const rows = sheet.getDataRange().getValues();

  // 1行目は見出しなので、slice(1) で2行目から取り出す
  for (const row of rows.slice(1)) {
    const address = row[0];
    const name = row[1];
    const item = row[2];

    // 宛先が空の行は飛ばす
    if (!address) {
      continue;
    }

    const subject = `${item}のご案内`;
    const body = `${name} 様

いつもお世話になっております。
${item}について、ご案内をお送りいたします。

ご不明な点がありましたら、このメールにご返信ください。

下町自動化`;

    GmailApp.createDraft(address, subject, body);
  }
}

貼ったら、フロッピーディスクのマーク(保存)を必ずクリックします。 ここを忘れると、次の実行で「さっきのコード」が動いてしまいます。わたしは何度もやりました。

もうひとつ、左上の「無題のプロジェクト」をクリックして、名前をつけておきます。 「メール自動作成」のように、中身が分かる名前で構いません。

この名前は、このあとの承認画面にそのまま表示されます。「無題のプロジェクト」のままだと、警告画面を見たときに自分が作ったものだと分かりにくいので、先につけておくのがおすすめです。

Apps Scriptエディタにコードを貼り付けて保存した画面
コードを貼って保存し、プロジェクト名をつけたところ。

実行する

上のほうにある 実行 ボタンを押します。

初回だけ、Googleから「承認が必要です」という画面が出ます。

  1. 「権限を確認」をクリック
  2. 自分のGoogleアカウントを選ぶ
  3. 「このアプリはGoogleで確認されていません」と出たら、左下の 詳細 → 一番下の (プロジェクト名)に移動 をクリック
  4. 「許可」をクリック

自分で書いたスクリプトなので、この警告が出るのは正常です。びっくりしなくて大丈夫です。

なお、以前にGASを動かしたことがあるアカウントでは、この承認画面が出ないことがあります。その場合は承認済みということなので、そのまま次に進んでください。

下に「実行完了」と出たら成功です。


下書きを確認する

Gmailを開いて、左のメニューから 下書き を見てください。

シートの行数ぶん、下書きが並んでいるはずです。

Gmailの下書き一覧に2件のメールが並んでいる画面
下書きフォルダに2件並んでいれば成功です。

ここで必ず中身を開いて、

  • 宛先は合っているか
  • 名前は正しく入っているか
  • 改行の位置は思ったとおりか

を目で確かめてください。送ってしまってからでは直せないので、ここで見ておくと安心です。


送信に切り替える

下書きの中身に問題がなければ、いよいよ送信です。

コードの下のほうにある、この1行を見つけてください。

    GmailApp.createDraft(address, subject, body);

これを、こう書き替えます。

    GmailApp.sendEmail(address, subject, body);

createDraft を sendEmail に変える。それだけです。

保存して、もう一度 実行 を押すと、今度は本当に送信されます。

注意:一度送ったメールは取り消せません。 切り替える前に、シートの宛先欄をもう一度見てください。テスト用のダミー行が残っていないか。自分宛て以外のアドレスが混ざっていないか。ここだけは、面倒でも毎回確認する習慣をつけてください。

なお、1日に送れる通数には上限があります。数十通くらいなら問題ありませんが、まとめて大量に送りたい場合は注意が必要です。この話は、このあとの記事で扱います。


つまずき集

わたしが実際にひっかかったところです。同じところで止まっている方は、ここを見てください。

エラーには2種類あります

これを知っておくと、原因を探す場所がすぐ分かります。

構文エラー — 書き方そのものが間違っているとき。 コードを直した瞬間に、画面の左下に赤い帯で出ます。実行を押す前に出るのが特徴です。 行: 17 のように場所を教えてくれるので、その行を見に行けば解決します。

実行時エラー — 書き方は合っているが、動かしてみると困ることが起きたとき。 実行を押したあと、「実行ログ」の中に出ます。

赤い帯が出たら書き方の問題、実行ログに出たらデータや設定の問題。

見出し行までメールにしようとしている

実行ログに、こう出たときです。

Exception: Invalid email: 宛先
createMails @ コード.gs:26

コードの rows.slice(1) が rows になっていないか確認してください。 slice(1) は「1行目を飛ばして、2行目から使う」という指示です。これが抜けると、見出しの「宛先」という文字をメールアドレスとして送ろうとして失敗します。

エラー文の中に「宛先」と日本語で出るので、見出し行が原因だと気づけます。

アドレスに全角の文字が混ざっている

同じ Invalid email: でも、そのあとに自分のアドレスが表示されるときは、こちらです。

よくあるのが、コピペしたときに前後に入り込む全角スペースです。見た目ではまったく分かりません。 シートのセルをクリックして、末尾でカーソルを動かしてみてください。 何もないはずの場所でカーソルが1回止まったら、そこにスペースがあります。

コードを消しすぎた・消し足りない

左下に赤い帯で、こう出たときです。

構文エラー: SyntaxError: Unexpected token ')' 行: 6 ファイル: コード.gs

わたしがやったのは、rows.slice(1) を消すときにピリオドだけ残してしまったケースです。

for (const row of rows.) {   // ← ピリオドが残っている

行: 6 と教えてくれるので、その行を見て、余分な記号がないか確かめてください。

本文を囲む記号を取り違えた

左下に赤い帯で、こう出たときです。

構文エラー: SyntaxError: Invalid or unexpected token 行: 17 ファイル: コード.gs

このコードでは、本文を `(バッククォート) で囲んでいます。 これを '(シングルクォート)や "(ダブルクォート)に変えると、動かなくなります。 改行が消えるのではなく、保存すらできずにエラーになります。

見分け方

この2つ、画面上ではほとんど同じに見えます。拡大しないと分かりません。

記号名前形日本語キーボードでの入力
`バッククォート左上から右下へ斜めShift + @
'シングルクォートまっすぐ縦Shift + 7

正直に言うと、わたしもこの2つの区別がすぐには分かりませんでした。 記事のコードをそのままコピーして貼れば、この問題は起きません。 手で打ち直さないのが、いちばん確実な対策です。

なお、本文を囲む記号は17行目と24行目の2か所にあります。 片方だけ変えても、やはりエラーになります。

何も起きない・エラーも出ない

シートの2行目以降が空っぽになっていませんか。 宛先が空の行は飛ばす作りにしているので、データが1行もないと何も作られずに終わります。

直したはずなのに、前と同じ結果になる

コードを直したあと、保存していません。

画面の上に「変更が保存されていません」と出ていないか見てください。 出ていたら、その左にある保存マークをクリックします。「ドライブに保存しました」に変われば大丈夫です。

保存せずに実行すると、直す前のコードが動きます。 直したつもりで実行して、同じエラーが出て悩んだことがあります。


まとめ

  • スプレッドシートの一覧から、決まった書式のメールを自動で作れる
  • まず createDraft で下書きを作り、目で確認してから sendEmail に切り替える
  • テストは必ず自分のアドレスで

ここまでで「動く」ところまで来ました。

ただ、このコードには弱いところがあります。 たとえば、実行を2回押したら同じ人に2通送られてしまいます。文面を変えたくなったら、コードそのものを触らないといけません。

このあとの記事では、送信済みの印をつけて二重送信を防ぐ方法と、文面をシート側で編集できるようにする方法をやります。職場で使うつもりなら、そこまでやっておかないと危ないです。

→ スプレッドシートの一覧から、決まった書式のメールを自動で送る【整えたコード版】

→ Gmailの添付ファイルをGoogleドライブに自動保存する【GAS初心者向け・コピペOK】

※2026年9月時点の画面で確かめた内容です。Googleの画面表示は変わることがあります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

CAPTCHA


目次