たったの28行!Google Apps Scriptで超簡易メルマガ配信システム


みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

引き続きGoogle Apps Scriptで簡単メールマガジンシステムを作成しています。

前回はこちらの記事。

Google Apps Scriptでスプレッドシートのリストをもとに宛名を差し込んだメール本文を作る
Google Apps Scriptで簡単メールマガジンシステムを作成しています。今回はスプレッドシートのリストをもとに、ドキュメントのメール本文内の社名、姓名などを差し込みして出力する方法です。

Googleドキュメントで作成したメール本文にスプレッドシートの宛先リストの社名、宛名を差し込む方法についてお伝えしました。

今回はいよいよ差し込みをしたメール本文を順次Gmailで送信する処理を追加して、Google Apps Scriptによる超簡易メルマガ配信システムを完成させます!

といってもすごく簡単で、全体としてはたったの28行のスクリプトで実現できます。

では、よろしくお願いします!

スポンサーリンク

前回のおさらい:ドキュメント本文に差し込みをしてログ出力

では、まず前回のおさらいをしていきましょう。

まず宛先リストをスプレッドシートで作っていましてこちらです。

スプレッドシートのメール宛先リスト

メール本文はドキュメントで作っていましてこちらです。

Googleドキュメントで作成したメール本文

{社名}、{姓}、{名}の3か所をそれぞれの送り先に合わせて差し込みをします。

前回作成したスクリプトはこちらです。

function insertName(){

  const sheet = SpreadsheetApp.getActiveSheet();
  const lastRow = sheet.getLastRow();

  const DOC_URL = '*****ドキュメントのURL*****'; 
  const doc = DocumentApp.openByUrl(DOC_URL);
  const docText = doc.getBody().getText();

  for(let i = 2; i <= lastRow; i++){

    const company = sheet.getRange(i,1).getValue();
    const lastName = sheet.getRange(i,2).getValue(); //姓
    const firstName = sheet.getRange(i,3).getValue(); //名

    const body = docText
      .replace('{社名}',company)
      .replace('{姓}',lastName)
      .replace('{名}',firstName);
      
    console.log(body);

  }
}

スクリプトの流れとしては、以下のようになります。

  1. スプレッドシートを取得
  2. ドキュメントからメール本文docTextに取得
  3. スプレッドシートの各レコードについて
    1. 社名、姓、名をdocTextに差し込んでbodyを作成
    2. bodyをログ出力

今回は3-2の部分をGmailで送信するという内容に変更していけばOKということですね。

スプレッドシートのアドレス宛にGmailでメールを送る

Google Apps Scriptを使ってGmailでメールを送る方法はこちらの記事でお伝えしています。

初心者でも簡単!Google Apps ScriptでGmailを操作してメールを送る方法
Google Apps Scriptでメールマガジンを送るシステムを作りたいと思います。シリーズ初回の今回は、Google Apps ScriptでGmailを操作してメールを送る方法です。

GmailApp.sendEmailメソッドを使いますね。

GmailApp.sendEmail(宛先アドレス, 件名, 本文, オプション)

引数としては以下が必要ですね。

  • 宛先アドレス
  • 件名
  • 本文

あと、オプションはオブジェクトを渡しますが、nameプロパティのみを指定したいと思います。

件名、差出人名を準備

表題、差出人名については、各レコードに依存せずに固定の値なのでfor文の外で指定をしておきます。

const subject = 'メルマガ送信テスト';
const options = {name: 'いつも隣にITのお仕事'};

メールアドレスを取得してメールを送信

宛先アドレス、つまり各レコードのメールアドレスはD列に記載されていますので、以下のように取得します。

const recipient = sheet.getRange(i, 4).getValue();

これでGmailで送信するための引数はすべて揃いましたのであとは送るだけ。

GmailApp.sendEmail(recipient, subject, body, options);

これでOKなはずです。

メルマガ配信の実行結果

実行をしてみますと、各アドレス宛にメールが届きます。

例えば、こんな感じです。

GoogleAppsScriptによるメルマガ配信結果

ちゃんと、社名や宛名の姓名などの差し替えもきいていますね。

現在は2件だけですが、件数が多くなった場合はとってもメール送信が楽になります。

ただ、Google Apps Scriptの仕様上、無料アカウントの場合は1日の最大メール配信数が100通という制限(G Suiteユーザーなら1,500通まで)があります。

その場合は、リストに100件を超える宛先がある場合は数日にわけて配信する必要があります。

まとめ

以上、Google Apps Scriptで超簡易メールマガジンシステムを作成しました。

スクリプトはこちらです。

function sendMail(){

  const sheet = SpreadsheetApp.getActiveSheet();
  const lastRow = sheet.getLastRow();;
  
  const DOC_URL = '*****ドキュメントのURL*****'; 
  const doc = DocumentApp.openByUrl(DOC_URL);
  const docText = doc.getBody().getText();

  const subject = 'メルマガ送信テスト';
  const options = {name: 'いつも隣にITのお仕事'};
   
  for(let i = 2; i <= lastRow; i++){

    const company = sheet.getRange(i, 1).getValue();
    const lastName = sheet.getRange(i, 2).getValue(); //姓
    const firstName = sheet.getRange(i, 3).getValue(); //名
    const recipient = sheet.getRange(i, 4).getValue();
    
    const body = docText
      .replace('{社名}',company)
      .replace('{姓}',lastName)
      .replace('{名}',firstName);
    
    GmailApp.sendEmail(recipient, subject, body, options);
  }
}

ドキュメントやスプレッドシートの準備は必要ですが、とってもシンプルなスクリプトで各種Google Appsを操作そして連携できますね。

さすが、Google Apps Script!

次回は、処理の高速化について考えていきます。

Google Apps Scriptのメルマガ配信スクリプトを高速化する
Google Apps Scriptを使ってメルマガ配信システムを作成しています。今回は、スプレッドシートのAPI呼び出し回数を抑えることで、メルマガ配信クリプトの高速化を図ります。

どうぞお楽しみに!

連載目次:Google Apps Scriptでメルマガシステムを作っちゃおう!

Google Apps ScriptでGmail、スプレッドシート、ドキュメントを連携させて操作することでメルマガシステムが簡単に実現できます。思ったより2割くらい簡単にできますよ。ちなみに無料です…さすがGoogle。
  1. 初心者でも簡単!Google Apps ScriptでGmailを操作してメールを送る方法
  2. 初心者でも簡単!Google Apps Scriptでドキュメントを取得して表示する方法
  3. Google Apps Scriptでスプレッドシートのリストをもとに宛名を差し込んだメール本文を作る
  4. たったの28行!Google Apps Scriptで超簡易メルマガ配信システム
  5. Google Apps Scriptのメルマガ配信リスト自動更新スクリプトを高速化する

コメント

  1. 阪村勝彦 より:

    たったの38行!Google Apps Scriptで超簡易メルマガ配信システム
    こちらの記事を拝見しました。そこで1つ教えてください。
    差し込みメールにて、ccも個々のアドレスを差し込みたいです。
    そして添付ドキュメントも送付したいです。ドキュメントは1つのみ、同一のドキュメントを一斉送付したいのですが、掲載のスクリプトに何をどう追記すればいいのか分かりません。大変お手数を掛けますが、教えてください。

  2. 鈴木亮太 より:

    高橋様
    こちらの記事とても参考になり、今月の頭から実際にscriptを使ったメール配信を
    開始することが出来ました。ありがとうございます!
    G-suiteで有償アカウントを取得しているのですが、1日の送信上限が100件のままです。
    何か回避する術はありませんでしょうか?
    googleに問い合わせしてもscriptはサポート対象外と言われ、非常に困っております。

    • 鈴木さん、ご覧いただきましてありがとうございます。

      メール送信数の上限についてですが、もし仕様期間の場合、または使用期間後すぐでアカウント数が少ないのでしたら、以下条件に引っかかっている可能性があります。

      無料試用を終了して上限をアップグレードする
      試用アカウントに対しては固有の制限事項が設けられています。無料試用期間が終了し、ドメインに対する請求額が累計 30 米ドル(またはご利用通貨での同等額)に達すると、上限が自動的にアップグレードされます。

      試用期間が終わっていれば、手動で一定の支払を前払いすれば上限がアップグレードされるようです。

      https://support.google.com/a/answer/166852

      以上、ご確認いただければ幸いです。

      • 鈴木亮太 より:

        高橋様

        お礼が遅くなり申し訳ありません。事前支払いで合計30米$以上を払った結果、
        上限の解除ができました。本当に助かりました。
        今後共、勉強させていただきます。

  3. 尾中たけお より:

    タカハシノリアキ 様
    お世話になります。
    このスクリプト、非常に便利です!
    さっそくですが、質問させてください!
    メーリスのあたまに{社名} {姓} {名} を入れることは成功したのですが、文中に
     「{姓}さんもお体に気を付けて~」といった文章を入れたいときには、どのようなスクリプトを組めばよろしいでしょうか。
    また、別のかたも質問をされていたようですがPDFファイルを添付する方法がありましたら、合わせて教えて頂けると幸いです。
    お忙しいところ恐縮ですが、ご教示くださいますようお願い申し上げます。

    • 尾中たけおさん

      コメントありがとうございます!

      メーリスのあたまに{社名} {姓} {名} を入れることは成功したのですが、文中に
       「{姓}さんもお体に気を付けて~」といった文章を入れたいときには、どのようなスクリプトを組めばよろしいでしょうか。

      おそらく、スクリプトは変更する必要はないかと思います。
      そのままの文言「{姓}さんもお体に気を付けて~」をドキュメント内に記載頂ければ、その箇所も置換されると思います。

      試してみて頂ければ嬉しいです!

  4. 尾中たけお より:

    タカハシノリアキ 様
    お返事ありがとうございました。
    いろいろと試してみましたが反映されませんでした。

    何がダメなのか・・・。

    また、PDFかJPGの添付方法もお分かりでしたらよろしくお願い申し上げます。

  5. 渡辺 より:

    送り先がエラーだとその場で止まってしまうのですが
    エラー処理はどうしたらいいでしょうか。

  6. 鈴木亮太 より:

    高橋さま
    お世話になります!通常使っていたgmailでgoogleフォーム入力者への自動返信メールを設定しましたが、上限100日があり、機能しない場面があります。そこで、有償化しようとしたのですが、通常のgmailでは有償化出来ずでした。何か対策はないでしょうか?

  7. たいよう より:

    businessユーザーとは
    ・Gsuite の「business」 プラン
    ・Google マイビジネス
    ・ビジネス用のgmail
    のどれを指されてますでしょうか。

    • たいようさま

      コメントありがとうございます。
      「Businessユーザー」は今で言うと「G Suiteユーザー」ですね。G Suiteのいずれかのプランで利用されているアカウントであればOKです。

      今では表現が適切ではないので、本文内も修正をさせていただきました。
      お問い合わせに感謝いたします。

      • たいよう より:

        迅速なご対応、大変ありがとうございます。

        本当に助かりました。
        今後も参考にさせていただきます。

タイトルとURLをコピーしました