Google Apps Script でGmailを操作して一斉送信でメールを送る方法

はじめに、Google Apps Scriptとは?

Google Apps Scriptとは、Google社が提供するプログラミング言語のことです。
Google Apps Scriptというプログラミング言語を使い、同じくGoogle社が提供するGmailやGoogleスプレッドシート、Gドライブ、Googleドキュメントを操作することができます。Gmailや、Googleスプレッドシートを使ったことがある方には「Gmailやスプレッドシートは使ったことがあるけど、プログラミングと聞くとなんだか難しいそう」という印象を持たれるかもしれませんが、コツさえつかんでしまえば意外と簡単で、今まで手間だった仕事をボタンをクリックするだけに簡略化し、効率化することもできるのです。

Google Apps Scriptでは何が出来るか?

Google Apps Scriptで出来ることの代表例は下記の通りです。

・カスタムのメニュー、ダイアログ、サイドバーを Google ドキュメント、スプレッドシート、フォームに追加する。
・Google スプレッドシート用のカスタム関数を作成する。
・ウェブアプリを公開する(スタンドアロンまたは Google サイトへの埋め込み)。
・AdSense、アナリティクス、カレンダー、ドライブ、Gmail、マップなど、他の Google サービスと連携する。
・Google ドキュメント、スプレッドシート、スライド、フォームを拡張するアドオンを作成して、アドオンストアで公開する。

上記以外にもさまざまな用途がございますが、今回は、Googleスプレッドシートを用いて、複数のメールアドレスに一括でメールを送信する方法をご紹介いたします。
※あらかじめGoogle Apps Scriptの基本的な使い方を熟知されてからの閲覧をお勧めいたします。

スプレッドシートに入力した複数のメールアドレスに対して一括でメールを送信する方法について

まずはスプレッドシートを開き、シートに複数の送付先の名前とメールアドレス、メッセージ内容を記入します。

※列は任意で減らしても増やしても問題ありませんが、送付先のメールアドレスは必須です。
※メールアドレスのドメイン名が「gmail.com」となっていますが、Gmail以外のドメイン名のアドレスにも送れます。

次に、メニューの「ツール」から「スクリプト エディタ」を開きましょう。
「スクリプト エディタ」を開くと、「コード.gas」が開いていますので、そこに下記のコードを入力してください。


function mailTest(){
 var a = SpreadsheetApp.getActiveSpreadsheet();
 a.setActiveSheet(a.getSheetByName(“sheet2”));
 var b = SpreadsheetApp.getActiveSheet();
 var c = b.getRange(“A2:C5”);
 var d = c.getValues();

 for(i in d){
  var h = d[i];
  var toName = h[0];
  var toAddress = h[1];
  var message = h[2];
  var mainMessage = toName+’さん\n\nこんにちは。\n’+message;
  var subjest= toName+’さん宛てのテストメールのタイトルです。’;
  MailApp.sendEmail(toAddress,subjest,mainMessage);
  }
 }

 function onOpen(){
  var myTest = [{name:”メールテスト”,functionName:”mailTest”}];
  SpreadsheetApp.getActiveSpreadsheet().addMenu(“テスト”, myTest);
 }

下記の内容の「getActiveSpreadsheet()」メソッドを使い、現在開いているスプレッドシートを取得します。
「getSheetByName(“sheet2”)」メソッドで、取得するスプレッドシートのシート名(今回はシート名を「sheet2」としましたので、シート名を別の名称にした場合は2つの「”」ダブルクォーテーションで囲まれた()内を変更します。
「b.getRange(“A2:C5”)」の2つの「”」ダブルクォーテーションで囲まれた()内のA2:C5はシート内のセルの範囲を指定します。こちらもセルの範囲を増やした場合は変更します。2行追加した場合は、「b.getRange(“A2:C7”)」のようにします。

 var a = SpreadsheetApp.getActiveSpreadsheet();
 a.setActiveSheet(a.getSheetByName(“sheet2”));
 var b = SpreadsheetApp.getActiveSheet();
 var c = b.getRange(“A2:C5”);
 var d = c.getValues();

次に、拡張for文を使って繰り返し処理を行い、MailApp.sendEmail()メソッドでメールを送信します。

 for(i in d){
  var h = d[i];
  var toName = h[0];
  var toAddress = h[1];
  var message = h[2];
  var mainMessage = toName+’さん\n\nこんにちは。\n’+message;
  var subjest= toName+’さん宛てのテストメールのタイトルです。’;
  MailApp.sendEmail(toAddress,subjest,mainMessage);
  }

最後に、onOpen()メソッドを使い、クリプトエディタをいちいち開かずにスプレッドシートのメニューから選べるようにメニューを増やします。
今回はメニューの名称を「テスト」としましたが、名称を変更したい場合は「SpreadsheetApp.getActiveSpreadsheet().addMenu(“テスト”, myTest)」の2つの「”」ダブルクォーテーションで囲まれた()内を別の名称に変更してください。

 function onOpen(){
  var myTest = [{name:”メールテスト”,functionName:”mailTest”}];
  SpreadsheetApp.getActiveSpreadsheet().addMenu(“テスト”, myTest);
 }

まとめ

今回はあまり複雑では無いですが、活用の仕方によっては業務にもプライベートな行事にも役立つ、Googleスプレッドシートを使ったメールの一括送信についてご紹介致しました。今までは手動で行っていたメールの一括送信を、Google Apps Scriptを使って行ってみてはいかがでしょうか。