Quantcast
Channel: いつも隣にITのお仕事
Viewing all articles
Browse latest Browse all 2089

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

$
0
0

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

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

前回はこちらの記事。

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

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

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

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

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

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

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

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

メルマガ配信リストのスプレッドシート

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

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

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

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

function insertName(){

  /* スプレッドシートのシートを取得と準備 */
  var mySheet=SpreadsheetApp.getActiveSheet(); //シートを取得
  var rowSheet=mySheet.getDataRange().getLastRow(); //シートの使用範囲のうち最終行を取得

  /* ドキュメント「メール本文テスト」を取得する */
  var docTest=DocumentApp.openById("XXXXXXXXXXXX"); //ドキュメントをIDで取得
  var strDoc=docTest.getBody().getText(); //ドキュメントの内容を取得

  /* シートの全ての行について社名、姓名を差し込みログに表示*/
  for(var i=2;i<=rowSheet;i++){

    var strCompany=mySheet.getRange(i,1).getValue(); //社名
    var strSecond=mySheet.getRange(i,2).getValue(); //姓
    var strFirst=mySheet.getRange(i,3).getValue(); //名

    var strBody=strDoc.replace(/{社名}/,strCompany).replace(/{姓}/,strSecond).replace(/{名}/,strFirst); //社名、姓名を置換
    Logger.log(strBody); //ドキュメントの内容をログに表示

  }
}

スクリプトの流れとしては

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

となります。

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

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

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

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

GmailApp.sendEmailメソッドを使います。引数として

  • toアドレス
  • 表題
  • 本文
  • from:fromアドレス(任意)
  • name:差出人名(任意)

が必要でした。fromアドレスとnameはなくても良いのですが、メルマガとしてはあるべきなので設定することにします。

表題、fromアドレス、差出人名を準備

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

var strSubject="メルマガ送信テスト"; //表題
var strFrom="XXXX@XXXX.co.jp"; //From
var strSender="いつも隣にITのお仕事"; //差出人

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

各レコードのtoアドレスはD列に記載されていますので

var strTo=mySheet.getRange(i,4).getValue(); //toアドレス

で取得します。

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

/* メールを送信 */
GmailApp.sendEmail(
     strTo, //toアドレス
     strSubject,  //表題
     strBody, //本文
     {
          from: strFrom, //fromアドレス
          name: strSender //差出人
     }
);

これでOKなはずです。

メルマガ配信の実行結果

実行をしてみますと

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

無事にメールが送られていますね。ちゃんと、社名や宛名の姓名などの差し替えもきいていますね。

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

ただ、Google Apps Scriptの仕様上、一般ユーザーの場合は1日の最大メール配信数が100通という制限がありますので、スプレッドリストに100件を超える宛先がある場合は数日にわけて配信する必要があります。(Businessユーザーなら1,500通まで)

その点は次回以降、解決をしていければと思います。

まとめ

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

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

function insertName(){

  /* スプレッドシートのシートを取得と準備 */
  var mySheet=SpreadsheetApp.getActiveSheet(); //シートを取得
  var rowSheet=mySheet.getDataRange().getLastRow(); //シートの使用範囲のうち最終行を取得

  /* ドキュメント「メール本文テスト」を取得する */
  var docTest=DocumentApp.openById("XXXXXXXXXXXX"); //ドキュメントをIDで取得
  var strDoc=docTest.getBody().getText(); //ドキュメントの内容を取得

  /* メール表題、fromアドレス、差出人名を準備 */
  var strSubject="メルマガ送信テスト"; //表題
  var strFrom="XXXX@XXXX.co.jp"; //From
  var strSender="いつも隣にITのお仕事"; //差出人

  /* シートの全ての行について社名、姓名を差し込みログに表示*/
  for(var i=2;i<=rowSheet;i++){

    var strCompany=mySheet.getRange(i,1).getValue(); //社名
    var strSecond=mySheet.getRange(i,2).getValue(); //姓
    var strFirst=mySheet.getRange(i,3).getValue(); //名
    var strTo=mySheet.getRange(i,4).getValue(); //toアドレス

    var strBody=strDoc.replace(/{社名}/,strCompany).replace(/{姓}/,strSecond).replace(/{名}/,strFirst); //社名、姓名を置換

    /* メールを送信 */
    GmailApp.sendEmail(
      strTo, //toアドレス
      strSubject,  //表題
      strBody, //本文
      {
        from: strFrom, //fromアドレス
        name: strSender //差出人
      }
    ); 

  }
}

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

さすが、Google Apps Script!

次回はお伝えした通り、1日100件の壁がありますので、それをうまく対処していきたいと思います。

どうぞお楽しみに!

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

  1. 超初心者へGoogleAppsScriptを始めるメリットをこれでもかと説明します
  2. 初心者でも簡単!Google Apps ScriptでGmailを操作してメールを送る方法
  3. 初心者でも簡単!Google Apps Scriptでドキュメントを取得して表示する方法
  4. Google Apps Scriptでスプレッドシートのリストをもとに宛名を差し込んだメール本文を作る
  5. たったの38行!Google Apps Scriptで超簡易メルマガ配信システム

Viewing all articles
Browse latest Browse all 2089

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>