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を使って行ってみてはいかがでしょうか。