Googleフォームによる無料メルマガ配信システムの作り方 (2/3)
2014年07月14日 13時00分更新
メールマガジン解除フォームの作成
これでメールマガジンを送れるようになりました。残る機能であるメールマガジンの解除も、Googleフォームを使って作成しましょう。Googleドライブで、「作成」ボタンから「フォーム」を選んでください。
新しいフォームのウィンドウが開いたら、タイトルを「メルマガ解除」とし、テーマを適当に選んで「OK」ボタンをクリックしてください。
Google Appsユーザーは、いちばん上にある「フォームの設定」で、「このフォームを表示する際に○○へのログインを求める」「自動的に回答者の○○ユーザー名を取得する」といったチェックボックスが表示されます。いずれもチェックをOFFに変更してください。
フォームの内容を作成する
フォームの内容を作りましょう。まずは、フォームのタイトルと説明を以下のように設定します。
タイトル:メルマガ解除
フォームの説明:ショップ「ABC」のメルマガを解除します。以下に記入し、送信してください。
続いて、フォームの項目を作成します。今回は2つだけ作成します。以下のように項目を作ってください。
・1つ目
質問のタイトル:メールアドレス
補足文:メルマガを登録したメールアドレスをご記入ください。
質問の形式:テキスト
詳細設定:「データの検証」をONにする
「テキスト」「メールアドレス」を選択する
必須の質問:ONにする
・2つ目
質問のタイトル:登録ID
補足文:※メルマガ登録受付メールに記載されていた、登録IDを記入してください。
質問の形式:テキスト
必須の質問:ONにする
いちばん下にある「確認ページ」欄に、メッセージを以下のように記入します。チェックボックス類はすべてOFFにしておきます。
「メルマガの解除を受け付けました。」
スプレッドシートにスクリプトを作成する
メールマガジン解除の処理を作ります。作成したフォームの「回答を表示」ボタンをクリックして、回答用のスプレッドシートを開いてください。
ツールバーに「回答を表示」ボタンがない場合は、代りに「回答を選択する」ボタンが表示されるので、これをクリックします。
現れたダイアログで新規スプレッドシートを選び、名前を「メルマガ解除(回答)」として作成します。「回答を表示」ボタンをクリックします。
スプレッドシートが表示されたら、「ツール」メニューから「スクリプトエディタ...」を選びます。
スクリプトエディタが現れたら、上部の「無題のプロジェクト」をクリックし、名前を「メルマガ解除(回答)」と入力してください。
では、スクリプトを作成しましょう。リスト2の内容をスクリプトエディタに記述してください。なお、「☆メルマガ登録(回答)のスプレッドシートのID☆」には、メールマガジン登録フォームの回答を保管するスプレッドシートのIDを指定します。
リスト2
function remove(e) {
var mail = e.namedValues['メールアドレス']
var id = e.namedValues['登録ID']
var sheet = SpreadsheetApp.openById("☆メルマガ登録(回答)のスプレッドシートのID☆").getSheets()[0];
var row = sheet.getLastRow();
for (var i = 2;i <= row;i++) {
if (sheet.getRange(i, 3).getValue() == mail && sheet.getRange(i, 6).getValue() == id) {
sheet.getRange(i, 5).setValue("LEFT");
var body = sheet.getRange(i, 2).getValue()
+ "様\nオンラインショップ「ABC」のメルマガを解除しました。\n"
+ "またのご利用をお待ちしています。\n"
MailApp.sendEmail(mail, "メルマガ解除", body);
return;
}
}
}
トリガーを設定する
作成したremove関数を、フォーム送信時に実行するようにトリガーを設定します。「リソース」メニューから「現在のプロジェクトのトリガー」を選びます。
現れたダイアログにある「トリガーが設定されていません。」のリンクをクリックして新しいトリガーを作り、以下のように設定します。
「remove」「スプレッドシートから」「フォーム送信時」
「保存」ボタンで保存すると、「承認が必要です」のダイアログが現れます。そのまま「続行」ボタンをクリックして続けてください。
画面に「許可のリクエスト」ウィンドウが現れるので、そのまま「承認する」ボタンをクリックします。これでスクリプトが実行できるようになりました。