今回は、Google Apps Script(GAS)で、名簿リストに書いてある宛先にメールを自動で送信する方法を紹介します。

営業メールを送りたいけど手作業だと大変・・・

クラウドソーシングでメール送信の作業があったんだけど、
自動化できたら楽して稼げそう!
某クラウドソーシングのサイトではメールの送信作業の募集が累計で2400件を超えています。
報酬金額は2円〜5円/件となっており、一つのメール送信に仮に1分だとしても時給300円です。これをもし自動化すれば、1時間に300円を生み出すことができます。
ということで今回は、GASでメールの自動送信をする方法を、初心者の方でも分かるように具体例を交えながら詳しく解説していきます。
【はじめに】やりたいことのおさらい、必要なツールの確認
自動メール送信の全体像は以下になります。

スプレッドシートに記載されたリストを読み取る
↓
GASでリストから宛先メールアドレスを取得
↓
対象の宛先にメールを送信
上記手順で出てくる「Googleスプレッドシート」と「GAS」について簡単に説明します。

もう知ってるよ!
具体的な方法だけ知りたい!
という方は次項からご覧ください。
Googleスプレッドシートとは?
スプレッドシートというのはMicrosoftのExcelのようなものです。Excelは基本的にPCのアプリとして使用しますが、スプレッドシートはWeb上で動きます。
ExcelはインストールされていないPCだと操作できませんが、スプレッドシートならネットの繋がるPCであれば操作可能です。一応スマホやタブレットからも編集できます(画面が小さい分かなり操作しづらいですが・・・)。
Google Apps Script(GAS)とは?
Google Apps Script(GAS)はExcelでいうVBA(Visual Basic for Applications)のようなものです。「GAS」と略されることが多いです。

私は「ガ(→)ス(↑)」と発音していますが正解は分かりません!
VBAはVisual BasicをベースにExcelなどのアプリで使えるように作られているのに対し、GASはJavascriptをベースにGoogleのサービスを扱える開発ツールです。LINEやSlackなどの外部サービスとも連携することができます。GASと外部サービスの連携については過去記事にて紹介しています。
実装に必要なもの
全てGoogleのサービスになりますので、Googleのアカウント登録が必要となります。ほとんどの方がGoogleのアカウントをお持ちだと思うのでアカウント作成については割愛します。
Google Apps Script、Google スプレッドシートについてもGoogleアカウントがあれば登録作業などの必要はありません。
【STEP1】Googleスプレッドシートでリストを作成する
では、まずはじめにスプレッドシートの作成をします。
スプレッドシート(https://doc.google.com/spreadsheets)を開きます。

新しいスプレッドシートを作成し、メールリストを作成します。以下の例では会社のメール営業リストを作成しています。

【STEP2】GASでメールを送信
続いて、GASでメールの作成・送信をします。
Google Apps Scriptを開く
Google Apps Script(https://script.google.com/home)を開きます。

「新しいプロジェクト」を押すと以下のような画面になります。

GASでメール送信スクリプトを作成
メール送信処理は以下になります。

const SHEET_ID = "XXXXXXXXXXXXXXXXXXXXXXXXXX"; // スプレッドシートのID
function myFunction() {
let subject = "これはメール件名です"; // 件名
let body = "これはメール本文です"; // 本文
// スプレッドシートの「メールアドレス」欄を取得
const listSheet = SpreadsheetApp.openById(SHEET_ID).getSheetByName("chaso担当");
let mailList = listSheet.getRange(2, 6, listSheet.getLastRow()-1).getValues();
for(let row = 0; row < mailList.length ; row++){
(GmailApp.sendEmail(mailList[row][0], subject, body));
}
}
上記コード内で変更が必要なのは以下の1箇所です。
変更箇所 | 設定する内容 |
---|---|
SHEET_ID | スプレッドシートのID (https://docs.google.com/spreadsheets/d/(スプレッドシートID)/edit#gid=0) |

URLに「gid」とありますが、こちらではありません!
上記の赤文字部分をコピペしてGASに記載してください♪
ソースコードの内容は次項にて詳しく解説します。
ソースコードの説明
GASでGmailを送信するにはsendEmail()を使用します。
名前 | 型 | 説明 |
---|---|---|
recipient | String | メールアドレス。 カンマ区切りにすると複数のメールアドレスに送信できます。 |
subject | String | メール件名(最大250文字) |
body | String | メール本文 |
sendEmailは引数が3つ・4つの2種類あります。
引数3つ:テキストメールを送る場合
sendEmail(recipient, subject, body)
上記のように引数が3つの場合は、テキストメールとして送信されます。
引数4つ:HTMLメールを送る場合
sendEmail(recipient, subject, body, options)
上記のようにすると、HTMLメールを送ることもできます。

(GmailApp.sendEmail(mailList[row-1][0], subject, body, {htmlBody: body}));

メールリストの取得部分について解説
今回のサンプルでは、メールアドレス欄にある宛先に対してforループを使って送信する処理を実装しています。

let mailList = listSheet.getRange(2, 6, listSheet.getLastRow()-1).getValues();
getRangeではセルの範囲を取得することができます。今回は6列目のメールアドレスを全て取得したいので、getRange(行, 列, 行数)を使用しています。
取得した値は二次元配列となっているので、forループで値を取り出すときにはmailList[row][0]となります。
(GmailApp.sendEmail(mailList[row][0], subject, body));
二次元配列は、配列の各要素が配列になっているもので、普通の配列が
['みかん', 100]
に対し、二次元配列は
[ ['みかん', 100], ['りんご', 150], ['バナナ', 120] ]
となります。
今回の例にあてはめると、
[[1行目のメールアドレス],[2行目のメールアドレス],・・・]
となるので、mailList[row][0] で取り出します。

トリガーの設定をしてメール送信を自動化する
左側メニューからトリガーを作成します。

「トリガーを追加」を押すと、以下のような選択モーダルが表示されます。

設定項目について以下に簡単にまとめます。
項目名 | 説明 |
---|---|
実行する関数を選択 | トリガーで実行される関数を選択します。 |
実行するデプロイを選択 | どのバージョンのデプロイで実行するかを選択します。 デフォルトは最新デプロイ(Head)になっています。 |
イベントのソースを選択 | 時間主導型 / カレンダー / スプレッドシート(連携時のみ)の3種類あります。 今回は指定した時間帯に送信するようにしたいので「時間主導型」を選択します。 |
時間ベースのトリガーのタイプを選択 | トリガーを発生する日時・間隔を設定します。 |
日時・間隔の設定 | 選択したトリガーのタイプによって設定内容が異なります。 |
エラー通知設定 | エラーを受け取る間隔を設定します。 エラーはスクリプトを作成したアカウントのGメールアドレスに送信されます。 |
まとめ
今回は、GASでGmailを送信する方法について紹介しました。
メール送信の自動化ができると業務効率化になりますし、クラウドソーシングで仕事を受注する際にも役に立ちそうです。今回の例では、件名や本文が固定でしたので、宛先の担当者の部署や名前をセットしてより実用的にできるよう、次回以降の記事にて紹介したいと思います。
▼ 関連:Power Automate DesktopでOutlookのメール送信を自動化する方法

コメント