📚

Studioのフォーム+SendGridで資料ダウンロードフォームを作成する

に公開

Studioのフォーム+SendGridで資料ダウンロードフォームを作成する方法

こんにちは!この記事では、StudioのフォームSendGridを活用して、ユーザーが資料をダウンロードできるフォームを作成する方法をステップバイステップで解説します。

目次

  1. はじめに
  2. 必要なツールと準備
  3. Studioでフォームを作成する
  4. Googleスプレッドシートにフォームのデータを保存
  5. SendGridでメールテンプレートを作成
  6. Google Apps Scriptで自動メール送信を設定
  7. まとめ

はじめに

ユーザーがフォームに入力すると、自動的にメールで資料を送付する仕組みは、多くのビジネスで活用されています。これにより、ユーザー体験を向上させ、手作業を減らすことができます。本記事では、ノーコードツールのStudioとメール配信サービスのSendGridを組み合わせて、この仕組みを構築する方法を紹介します。

必要なツールと準備

  • Studioアカウント:ウェブサイトやフォームをノーコードで作成できます。
  • SendGridアカウント:メールの送信とテンプレートの作成が可能です。
  • Googleアカウント:スプレッドシートとGoogle Apps Script(GAS)を使用します。

Studioでフォームを作成する

まず、ユーザーが入力するフォームを作成します。

  1. Studioにログインします。
  2. 新しいプロジェクトを作成し、適切なテンプレートを選択します。
  3. フォームをページに追加し、必要なフィールド(例:名前、メールアドレス、メッセージなど)を設定します。
  4. フォームの送信先を設定し、データが適切に保存されるようにします。

Googleスプレッドシートにフォームのデータを保存

フォームの入力データをGoogleスプレッドシートに保存します。

  1. Googleスプレッドシートを新規作成し、適切な列(例:Name、Email、Messageなど)を設定します。

  2. Studioのフォーム送信設定で、データがスプレッドシートに保存されるように連携します。

    • API連携Zapierなどのツールを使用して、フォームデータをスプレッドシートに送信します。

SendGridでメールテンプレートを作成

ユーザーに送信するメールのテンプレートをSendGridで作成します。

  1. SendGridにログインし、ダッシュボードに移動します。

  2. 左側のメニューから「Templates」>「Transactional」を選択します。

  3. Create a Template」をクリックし、テンプレート名を入力します。

  4. 作成したテンプレート内で「Add Version」をクリックし、メールの内容をデザインします。

    • 動的テンプレートを使用して、ユーザー名などのパーソナライズされた情報を挿入できます。
    • 例:Hello, {{customer_name}}! のように変数を設定します。
  5. テンプレートを保存し、Template IDをメモしておきます。

Google Apps Scriptで自動メール送信を設定

スプレッドシートにデータが追加されたときに、SendGridを通じて自動的にメールを送信するスクリプトを作成します。

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

  1. スプレッドシート上部のメニューから「拡張機能」>「Apps Script」を選択します。

2. スクリプトを貼り付ける

以下のコードをスクリプトエディタに貼り付けます。

function sendEmailUsingTemplate(recipientEmail, recipientName, templateId, dynamicData) {
  var scriptProperties = PropertiesService.getScriptProperties();
  var SENDGRID_API_KEY = scriptProperties.getProperty('SENDGRID_API_KEY');

  var url = 'https://api.sendgrid.com/v3/mail/send';

  var emailData = {
    personalizations: [{
      to: [{ email: recipientEmail, name: recipientName }],
      dynamic_template_data: dynamicData
    }],
    from: { email: 'no-reply@yourdomain.com', name: '[会社名]' },
    template_id: templateId
  };

  var options = {
    method: 'post',
    contentType: 'application/json',
    headers: {
      Authorization: 'Bearer ' + SENDGRID_API_KEY
    },
    payload: JSON.stringify(emailData),
    muteHttpExceptions: true
  };

  try {
    var response = UrlFetchApp.fetch(url, options);
    var responseCode = response.getResponseCode();
    var responseBody = response.getContentText();

    if (responseCode >= 200 && responseCode < 300) {
      Logger.log('メール送信成功: ' + recipientEmail);
    } else {
      Logger.log('メール送信失敗: ' + recipientEmail);
      Logger.log('レスポンスコード: ' + responseCode);
      Logger.log('レスポンスボディ: ' + responseBody);
    }
  } catch (e) {
    Logger.log('メール送信エラー: ' + recipientEmail);
    Logger.log('エラー: ' + e.toString());
  }
}

function onChange(e) {
  var sheet = e.source.getActiveSheet();
  var targetSheetName = 'シート1'; // 実際のシート名に置き換えてください
  if (sheet.getName() !== targetSheetName) {
    return;
  }

  var lastRow = sheet.getLastRow();
  if (lastRow < 2) {
    return;
  }

  var dataRange = sheet.getRange(lastRow, 1, 1, sheet.getLastColumn());
  var data = dataRange.getValues()[0];

  var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0];

  // ヘッダー名の前後のスペースを削除
  headers = headers.map(function(header) {
    return header.toString().trim();
  });

  var nameIndex = headers.indexOf('Name');
  var emailIndex = headers.indexOf('Email');

  if (nameIndex === -1 || emailIndex === -1) {
    Logger.log('必要な列が見つかりません');
    Logger.log('ヘッダー行: ' + JSON.stringify(headers));
    return;
  }

  var recipientName = data[nameIndex];
  var recipientEmail = data[emailIndex];

  Logger.log('受信者名: ' + recipientName);
  Logger.log('受信者メールアドレス: ' + recipientEmail);

  if (!recipientEmail) {
    Logger.log('受信者メールアドレスがありません');
    return;
  }

  var templateId = 'YOUR_TEMPLATE_ID'; // SendGridのテンプレートIDに置き換えてください

  var dynamicData = {
    customer_name: recipientName,
    // 他の動的データがあれば追加
  };

  sendEmailUsingTemplate(recipientEmail, recipientName, templateId, dynamicData);
}

3. APIキーの設定

  • スクリプトエディタのメニューから「ファイル」>「プロジェクトのプロパティ」を開きます。
  • スクリプトのプロパティ」タブで、「新しいプロパティ」をクリックします。
    • プロパティ名:SENDGRID_API_KEY
    • 値:あなたのSendGrid APIキー
  • 保存」をクリックします。

4. シート名とテンプレートIDの設定

  • コード内のtargetSheetNameを実際のシート名に置き換えます。
  • templateIdに先ほどメモしたSendGridのテンプレートIDを入力します。

5. トリガーの設定

  1. スクリプトエディタの左側にある「時計アイコン(トリガー)」をクリックします。
  2. トリガーを追加」をクリックし、以下の設定を行います。
    • 実行する関数:onChange
    • 実行デプロイ:Head
    • イベントのソース:スプレッドシートから
    • イベントの種類:変更時
  3. 保存」をクリックし、必要な権限を付与します。

6. スプレッドシートのヘッダーを確認

  • スプレッドシートの1行目に以下のようなヘッダーがあることを確認します。
    • NameEmailMessageなど
  • ヘッダー名に余分なスペースや誤字がないように注意してください。

7. テスト

  • Studioのフォームから新しいデータを送信します。
  • スプレッドシートにデータが追加され、自動的にメールが送信されることを確認します。

まとめ

これで、StudioのフォームとSendGridを使用して、資料ダウンロードフォームが完成しました。ユーザーがフォームに入力すると、自動的にメールが送信され、資料をダウンロードできるようになります。

この仕組みにより、手作業を減らし、ユーザー体験を向上させることができます。ぜひ活用してみてください!

参考リンク:

注意点:

  • SendGridの無料プランには送信制限があるため、必要に応じてプランを確認してください。
  • ユーザーの個人情報を取り扱う場合は、プライバシーポリシーを明確にし、適切に管理してください。

ご質問や不明点がありましたら、お気軽にコメントしてください。一緒に素敵なフォームを作りましょう!

Discussion