このページの本文へ

Googleフォームによる無料メルマガ配信システムの作り方

2014年07月14日 13時00分更新

掌田津耶乃

  • この記事をはてなブックマークに追加
本文印刷

 Webデザイナーを対象に、Google Apps Script(以下、GAS)の基本的な使い方から実践的なWebサービスの開発方法までを解説する本連載。第6回に引き続きGoogleフォームとGASを使ったメールマガジン管理システムを作成します。メールマガジンのメール送信と登録解除機能を加え、システムを完成させましょう。応用例として、イベントの案内などのドキュメントをPDF化して送信するスクリプトも考えます。

メールマガジン送信メニューを作る

 前回は、あらかじめ用意したテンプレートに沿って、メールマガジンの原稿となるドキュメントを自動生成するところまでを説明しました。次に、メールマガジンの送信機能を作ります。

 メールマガジンをそのまま自動的に送信するシステムも作れますが、自動生成された内容を確認せずに送信するのは不安です。自動生成されたドキュメントを開いて確認し、細かな編集を加えて完成させてから送信するほういいでしょう。

 メール送信機能は、生成されたメールマガジンのドキュメントのメニューから選んで送信できるようにします。Googleドキュメントやスプレッドシートは、スクリプトでファイルをコピーすると、そのファイルに設定されていたスクリプトまで自動的にコピーされます。つまり、メールマガジンのテンプレートにメール送信のスクリプトを書いておけば、それを元に作成されたメールマガジンでもスクリプトが利用できます。

 「メルマガ・テンプレート」のドキュメントを開いてください。「ツール」メニューから「スクリプトエディタ...」を選びます。

メルマガ・テンプレートの「スクリプトエディタ」を開く

 スクリプトエディタにリスト1のスクリプトを記述します。「☆メルマガ作成(回答)スプレッドシートのID☆」の部分には、メールマガジン作成フォームの回答用スプレッドシートのIDを指定します。また、「☆メルマガ登録(回答)スプレッドシートのID☆」には、メールマガジンの登録フォームの回答用スプレッドシートのIDを指定します。前回、IDを調べる関数を作成してIDを調べましたのでそれぞれを参考にしてください。

リスト1


function onOpen(){
  var ui = DocumentApp.getUi();
  var menu = ui.createMenu("メルマガ");
  menu.addItem("メルマガを送信""sendMagazine");
  menu.addToUi();
}

function sendMagazine(){
  var id = DocumentApp.getActiveDocument().getId();
  var content = DocumentApp.getActiveDocument().getBody().getText();
  Logger.log(content);
  var sheet = SpreadsheetApp.openById("☆メルマガ作成(回答)スプレッドシートのID☆").getSheets()[0];
  var row = sheet.getLastRow();
  var genre = "";
  for (var i = 2;i <= row;i++){
    if (sheet.getRange(i, 9).getValue() == id) {
      genre = "ファッション"break;
    }
    if (sheet.getRange(i, 10).getValue() == id) {
      genre = "日用雑貨";break;
    }
    if (sheet.getRange(i, 11).getValue() == id) {
      genre = "靴・バッグ"break;
    }
  }
  var sheet2 = SpreadsheetApp.openById("☆メルマガ登録(回答)スプレッドシートのID☆").getSheets()[0];
  var row2 = sheet2.getLastRow();
  for (var i = 2;i <= row2;i++){
    if (sheet2.getRange(i, 5).getValue() == "") {
      if (sheet2.getRange(i, 4).getValue() == genre) {
        var body = sheet2.getRange(i, 2).getValue() + "様\n" + content;
        MailApp.sendEmail(sheet2.getRange(i, 3).getValue(), "ショップABCメルマガ", body);
      }
    }
  }
}

 作成したら一度メルマガ・テンプレートを閉じ、改めて開いてください。メニューバーに「メルマガ」という項目が追加されます。このテンプレートを元に作成したメールマガジンのメニューにも、同様に「メルマガ」が追加されます。そこから「メルマガを送信」メニューを選ぶと、メールマガジンの登録ユーザーにメールが送られます。

メルマガ・テンプレートに「メルマガ」メニューが追加された

 「メルマガを送信」メニューを選ぶと、おなじみの「承認が必要」ダイアログが現れます。ここで「続行」ボタンをクリックします。

承認を求めるダイアログが現れる。「続行」ボタンをクリック

 画面に許可をリクエストするウィンドウが現れます。複数のGoogleアカウントを持っている場合は、利用するアカウントを選んでください。

アカウントを選択する画面が現れる

 許可のリクエストが現れたら、そのまま「承認する」ボタンをクリックして承認します。これでメールが送信されるようになります。

「許可のリクエスト」で承認すると、スクリプトが実行されるようになる

 メールは、登録者の好みに応じて一部カスタマイズされたものが届きます。実際に3種類それぞれのジャンルでテスト登録(メルマガ登録)をして、表示を確かめてみましょう。

送信されたメールの内容。中段のおすすめ情報だけがジャンルによって異なる

 今回のサンプルでは、ジャンルごとに3種類のメールマガジンが自動生成され、ドキュメントごとに「メルマガ」メニューが用意されます。たとえば、「ファッション」のメールマガジンで「メルマガ」→「メルマガを送信」を選んでも、送信されるのはそのメールマガジンだけで、ほかの2つのメールマガジンは同時には送られません。作成された各メールマガジンのドキュメントをそれぞれ開いて編集し、完成したら、それぞれで「メルマガを送信」を実行する必要があります。

この連載の記事

一覧へ
Web Professionalトップページバナー

この記事の編集者は以下の記事をオススメしています

ASCII.jp会員サービス 週刊Web Professional登録

Webディレクター江口明日香が行く