×

[PR]この広告は3ヶ月以上更新がないため表示されています。
ホームページを更新後24時間以内に表示されなくなります。


Googleを追いかけろ!

.

チュートリアル 1-4: スプレッドシートからのメール配信

  • スプレッドシートのデータを利用してメールを送信します。複数の人へ異なる内容のメールを一斉送信できるので大変便利です。およそ10分間の作業です。

  • 【Script Edito】が支障なく使えることやスプレッドシートの基本的な関数を経験していることが前提です。まだの人ははじめの一歩をご覧ください。

§1 簡単なサンプルの実行

§2 改良

チュートリアル 初心者/目次 参照ページ(Goolge)


WWW を検索 Googleを追いかけろ! を検索


§1 簡単なサンプルの実行

  1. 新しいスプレッドシートを用意します。
  2. 適当な量のデータを作ります。各行にはA列にメールアドレス、B列にはその人へのメッセージを入れておきます。テストのためなので自分のメールアドレスでもかもいません。 下が例です。
  1. 【Script Editor】を開きます。
  2. 下のコードを貼り付けてください。
function sendEmails() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 2;  //  処理すべき最初の行データ
  var numRows = 2;   // 処理すべき行数
  // A2:B3のセル範囲を取得
  var dataRange = sheet.getRange(startRow, 1, numRows, 2) 
  // 範囲の各行から値を取得
  var data = dataRange.getValues();
  for (i in data) {
    var row = data[i];
    var emailAddress = row[0];  // 1列目
    var message = row[1];       // 2列目
    var subject = "Sending emails from a Spreadsheet";
    MailApp.sendEmail(emailAddress, subject, message);
  }
}
  1. 保存します。
  2. 関数ボックスから sendEmails 関数を選んで実行します。このとき管理者権限を要求されますので Authorize します。(以後、要求されたときは同様に)

    auth

  3. スクリプトが実行されたら自分のメールボックスでメールが到着したかどうか確認してください。
サンプルコードのままですとメールの件名欄に Sending emails from a Spreadsheet と表示されてしまうのでスパムと間違えられそうです。適宜変更することをお忘れなく。 また今までの確認ではGmail内に送信済メールのコピーは残らないようです。
上のスクリプトで使われている3つのメソッドはドキュメントで確認できます。

§2 改良

配信済のセルにマークをつけるように改良します。

もしスクリプトが止まってしまったら(たとえばバグや配信能力を超えてしまった場合)二重送信は絶対に避けてください。 チェック後に再実行できます。

次のコードが配信後、 EMAIL_SENT のメッセージを C列 のセルに残すようにした拡張コードです。

// この定数はC列のうちメール配信が成功した各行に書き込まれる
var EMAIL_SENT = "EMAIL_SENT";
function sendEmails2() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 2;  // 処理すべき最初の行データ
  var numRows = 2;   // 処理すべき行番号
  // A2:B3のセル範囲を取得
  var dataRange = sheet.getRange(startRow, 1, numRows, 3)
  // 範囲の各行から値を取得
  var data = dataRange.getValues();
  for (var i = 0; i < data.length; ++i) {
    var row = data[i];
    var emailAddress = row[0];  // 1番目の列 メールアドレス
    var message = row[1];       // 2番目の列 メッセージ
    var emailSent = row[2];     // 3番目の列 送信済コメント
    if (emailSent != EMAIL_SENT) {  // 重複を防ぐ
      var subject = "Sending emails from a Spreadsheet";
      MailApp.sendEmail(emailAddress, subject, message);
      sheet.getRange(startRow + i, 3).setValue(EMAIL_SENT);
      // スクリプトが中断された場合、直ちにセルの更新を確認
      SpreadsheetApp.flush();  
    }
  }
}
今回でスプレッドシートから簡単にメール配信するスクリプトができました。送信メール件数を増やすときはセルの取得範囲 【B3】 の部分を変更しますが、配信能力に注意が必要です。




    * チュートリアル 初心者/目次
    1. はじめの一歩 - セルの基本的な修正方法とダイアログボックスの表示
    2. 自作関数の作成 - 標準装備されている関数のカスタマイズ
    3. メニューの定義 - メニューバーのカスタマイズとスクリプトの実行
    4. スプレッドシートからのメール配信 - 複数の配信先へシート内のデータを送る
    5. UIサービスの利用 - YouTubeによるユーザーインターフェース作成のための動画解説
    -- チュートリアル 1-4.スプレッドシートからのメール配信 : end -- 2011/10/30