見出し画像

【備忘録】Googleスプレッドシートからメールを一括送信する方法



ステップ 1: Google スプレッドシートの準備

  • スプレッドシートに「メールアドレス」「パスワード」などを記載したシートを用意。
    ※筆者は既存の名簿を利用しました。

ステップ 2: Google Apps Script の作成

  1. スプレッドシートで「拡張機能」メニューを開き、「Apps Script」を選択します。

  2. 新しいスクリプトファイルが開かれるので、以下のサンプルコードをコピー&ペーストします。

  3. コードを適宜編集し、自分のニーズに合わせてカスタマイズします。

サンプルコード(全体)

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('案内メール送信')
    .addItem('実行', 'sendEmailsToMultipleSheets') // メニュー項目を追加
    .addToUi();
}

function sendEmailsToMultipleSheets() {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var sheets = spreadsheet.getSheets();

  sheets.forEach(function(sheet) {
    var sheetName = sheet.getName();
    var data = sheet.getDataRange().getValues();
    for (var i = 1; i < data.length; i++) { // 1行目はヘッダーと仮定
      var row = data[i];
      if (row[0] !== "済") {
        var emailAddress = row[4]; // E列: メールアドレス
        var name = row[2]; // C列: 名前
        var password = row[5]; // F列: パスワード
        var emailData = {name: name, email: emailAddress, password: password};

        if (emailAddress) {
          var subject, message;
          var specialSubject, specialMessage;

          // シート名に基づいてメールの件名と本文を変更
          switch(sheetName) {
            case "シート1":
              subject = "【シート1】●●専用アカウント開設のお知らせ";
              message = createStaffMessage(emailData);
              break;
            case "シート2":
              subject = "【シート2】●●専用アカウント開設のお知らせ";
              message = createTeacherMessage(emailData);
              specialSubject = "【シート2】●●ついてのスペシャルなお知らせ";
              specialMessage = createTeacherSpecialMessage(emailData);
              break;
            case "シート3":
              subject = "【シート3】●●専用アカウント開設のお知らせ";
              message = createStudentMessage(emailData);
              specialSubject = "【シート3】●●ついてのスペシャルなお知らせ";
              specialMessage = createStudentSpecialMessage(emailData);
              break;
            default:
              subject = "その他のシートの件名";
              message = "その他のシートに対するメッセージ";
          }

          // 通常のメール送信
          MailApp.sendEmail({
            to: emailAddress,
            cc: "*******@gmail.com",  // ここにCcのアドレスを設定
            bcc: "*******@yahoo.co.jp, *******@icloud.com",  // ここにBccのアドレスを設定
            subject: subject,
            body: message
          });

          // 「シート2」または「シート3」の場合、スペシャルメッセージを送信
          if (sheetName === "シート2" || sheetName === "シート3") {
            MailApp.sendEmail({
              to: emailAddress,
            cc: "*******@gmail.com",  // ここにCcのアドレスを設定
            bcc: "*******@yahoo.co.jp, *******@icloud.com",  // ここにBccのアドレスを設定
              subject: specialSubject,
              body: specialMessage
            });
          }

          sheet.getRange(i+1, 1).setValue("済"); // A列に「済」とマーク
        }
      }
    }
  });
}


function createStaffMessage(data) {
  return `${data.name}様\n\nこんにちは。\n社内で、使用できるアカウント(メール・オンラインストレージ)を作成しましたので、ご連絡させて頂きます。\n\n-------------------------\n\nアカウント情報\n\nメールアドレス: ${data.email}\nパスワード: ${data.password}\n\n※「WEBメール」「オンラインストレージ」共に共通のアカウントとなります。\n\n-------------------------\n\n※このメールは、配信専用のアドレスで配信されています。\nこのメールに返信されても、返信内容の確認およびご返答ができません。あらかじめご了承ください。\nこのメールの内容についてのお問い合わせは、下記の連絡先までメール、またはお電話でお願いします。`;
}

function createTeacherMessage(data) {
  return `${data.name}様\n\nこんにちは。\n社内で、使用できるアカウント(メール・オンラインストレージ)を作成しましたので、ご連絡させて頂きます。\n\n-------------------------\n\nアカウント情報\n\nメールアドレス: ${data.email}\nパスワード: ${data.password}\n\n※「WEBメール」「オンラインストレージ」共に共通のアカウントとなります。\n\n-------------------------\n\n※このメールは、配信専用のアドレスで配信されています。\nこのメールに返信されても、返信内容の確認およびご返答ができません。あらかじめご了承ください。\nこのメールの内容についてのお問い合わせは、下記の連絡先までメール、またはお電話でお願いします。`;

}

function createStudentMessage(data) {
  return `${data.name}様\n\nこんにちは。\n社内で、使用できるアカウント(メール・オンラインストレージ)を作成しましたので、ご連絡させて頂きます。\n\n-------------------------\n\nアカウント情報\n\nメールアドレス: ${data.email}\nパスワード: ${data.password}\n\n※「WEBメール」「オンラインストレージ」共に共通のアカウントとなります。\n\n-------------------------\n\n※このメールは、配信専用のアドレスで配信されています。\nこのメールに返信されても、返信内容の確認およびご返答ができません。あらかじめご了承ください。\nこのメールの内容についてのお問い合わせは、下記の連絡先までメール、またはお電話でお願いします。`;
}

function createTeacherSpecialMessage(data) {
  return `${data.name}様\n\nこんにちは。\nスペシャルメッセージの案内です。`;
}

function createStudentSpecialMessage(data) {
  return `${data.name}様\n\nこんにちは。\nスペシャルメッセージの案内です。`;
}

※筆者の場合は、シートを3つ用意しました。そのうちの2つのシートは別メールを送るスクリプトになっています。


ステップ 3: スクリプトの実行


「案内メール送信」を項目に設けています。
  • スプレッドシートの「メニューバー」から〚案内メール送信〛をクリクすると、自動でメールが送信されます。

  • ※初回実行時には、Googleからの認証が求められますので、指示に従って承認してください。


〚案内メール送信〛のサンプルコードの抜粋

全体コードの上部に記載のあるスクリプトです。これによりメニューバーに項目を追加しています。

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('案内メール送信')
    .addItem('実行', 'sendEmailsToMultipleSheets') // メニュー項目を追加
    .addToUi();
}

この基本的な方法で、Google スプレッドシートからのメール送信をほぼ自動化できます。

筆者の使用用途としては、社内のアカウント作成後に一括で案内のメールを送信するのに使用しています。※1件づつ案内を送信していたのが苦痛になったためw

この記事が気に入ったらサポートをしてみませんか?