Google Apps Script(GAS)をメールに活用する方法|画像付きで手順を解説

Google Apps Script(GAS)を使えば、メールを効率的に運用できます。
例えば、複数の宛先にメールを送ることも、決まった時間にメールを配信することも可能です。
「メールの運用に追われていて、改善を図りたい」という方には、解決策のひとつになりえます。
今回は、GASを使ったメールの運用について、初歩的な実例を解説します。
Google Apps Script(GAS)でメールの運用を効率化できる
GAS(Google Apps Script)とは、Googleが開発、提供しているプログラミング言語です。また、サーバーサイドスクリプト(WEB上で動くスクリプト)の環境とも言われています。
JavaScriptという言語を元に作られていて、C言語やGo言語などと比較しても学習は容易です。Excelでマクロ言語として使われるVBAという言語のGoogle版になります。
GASはGmailだけではなく、Googleが提供するGoogleドライブやGoogleスプレッドシート、Googleドキュメントなどのツール全般で使用することが可能です。
GASを使うと業務で使うメールの運用だけでなく、他のツールと提携した使い方もできます。現場の生産性を向上したいと考えている方は、ぜひ導入をご検討ください。
なお、GASの基本的な使い方について解説してある記事もありますので、GASがはじめてという方はこちらを参考にしてみてください。

GASを使ってメールでできること
GASを使えばメール業務の効率化ができるようになります。
例えば、以下のような工数が多くなりそうな作業を自動化することが可能です。
- GASを使えば、取引先への定期的なメールを自動化できる
- PCを起動しなくても、決まった時間にメールを送ることができる
- メルマガのように、リストにある宛先へメールを一括送信することができる
- フォームが入力されたら、自動返信メールを送ることができる
今回は、業務で使うことを想定して、GASを使った4つのメール機能を実装しました。
GASでメールを送信する方法
GASでメールの一括送信をする方法
GASで決まった時刻にメールを配信する方法
GASを使って添付ファイルを送信する方法
GASでメールを送信する方法
参考資料:GoogleAppsScript ガイド / GoogleAppsScript GmailApp
1.Googleのスプレッドシートを新規作成
- ツールを選択
- スクリプトエディタを選択

コードが打てるようになりました。

2.名前の変更
- 文字部分をクリックし「メールテスト」に名前を変更
- ファイル名を「mail.gs」に変更
⇒ 丸が3つのボタンをクリックすると名前が変更できます。 - 関数名を「sendMail]に変更

3.コードを入力
必要に応じて赤文字部分を変更してください。

function sendMail() {
const recipient = '●●●●●@xxxx.xxx'; //送信先のメールアドレス
const subject = '【テスト】メール送信テスト'; //件名
const recipientCompany = '株式会社ABC'; //送信先の会社名
const recipientName = '鈴木一郎'; //送信先の担当者名
const body = `${recipientCompany}\n${recipientName}様\n`
+ '\n**テストメールです**\n'; //本文
const options = { name: '株式会社ASTINA メール担当' }; //送信者の名前
GmailApp.sendEmail(recipient, subject, body, options);
}
GmailApp.sendEmail( ) の( )の中に入る部分を説明します。
recipient | 送信先のアドレス、または受信者のアドレス※テストで送る場合は自分のメールアドレスを入力してください。 |
subject | 件名(最大250文字) |
body | メールの本文 |
options | 様々なパラメータを指定するJavaScriptオブジェクト |
\n(半角) | 改行のこと |
+ | 文字列を結合させるために使う |
例:文字列の結合
'今日は'+'天気がいい' ⇒ 今日は天気がいい
optionsには以下のプロパティを入れることができます。
attachments | メールで送信するファイルの配列 |
cc | ccに含めるメールアドレス |
bcc | bccに含めるメールアドレス |
replyTo | 受信者の返信先となるメールアドレス |
noReply | 返信不可とするかどうかを決める。bool値を指定すること送信元のアドレスを「noreply@xxxx.xxx」とすることで、返信ができないようにする※このオプションはGoogleWorkspaceアカウントでのみ使用 |
name | 送信者の名前 |
bool値=項目の値を真(True)か偽(False)でとる値のこと
数学の真偽の問題に似ています。下記のように覚えると理解しやすいです。
⇒ True = Yes / False = No
例:返信不可の場合
const options = {noReply: true};
今回のように、名前以外にも複数のオプションを使用したい場合は、カンマ忘れに注意してください。
const options = {
cc:'abc@xxxx.xxx',
bcc:'def@xxx.xx',
name:'鈴木一郎',
noReply: true,
};
4.スクリプトを実行
実行を押したあと、権限を要求されることがあります。
問題がなければ続行を押して先に進めてください。

メールが届きました。

GASで決まった時刻にメールを配信する方法
毎朝行われる当番制の朝礼、曜日が決まっているゴミ出しなど、サイクルが決まっている業務は多いと思います。
イベントの前日にメールが自動で送信できたら良い、と感じたことはありませんか。
GASでは指定したサイクルでメールを配信する方法があります。
1.トリガーの追加
- 左側のタブの トリガーをクリック
- トリガーを追加


2.各項目を設定
- 実行する関数を選択「sendMail」
- 実行するデプロイを選択
⇒実行させたい版を選択する項目です。
開発完了したプログラムに版番号を付けて、指定の版番号を実行するための機能です。
特に問題なければデフォルトの「Head」で進めてください。 - イベントのソースを選択
⇒どのようなイベントでプログラムを発火させたいかを設定します。
決まった時間にイベントを行いたいので、「時間主導型」を選択。 - 時間ベースのトリガーのタイプを選択
すぐに結果を確認したいので最小単位の「分ベース」を選択。 - 時間の間隔を選択
これもすぐに確認したいので最小単位の「1分おき」を選択。 - エラー通知設定
⇒エラーが出た場合の通知するタイミングを設定します。
「今すぐ通知を受け取る」を設定。
+ で通知のタイミングを増やすこともできます。

以上を設定したら保存します。
3.スクリプトを実行
1分おきにメールが来ることがわかりました。

設定を削除したい場合は、トリガーの黒丸3つ部分をクリックし削除します。

一定のサイクルを指定して送りたい場合は、赤枠の部分を調整することで、より細かな日時の設定をすることができます。

GASを使って添付ファイルを送信する方法
参考資料:GoogleAppsScript ファイル / GoogleAppsScript ドライブ / GoogleAppsScript GmailApp
広告を使ったイベントの宣伝や、会議で使うプレゼン資料、毎月ある請求書の送付など、
資料をメールに添付し送付したい場合も、GASを使って業務の効率化を図ることができます。
今回はPDF資料の添付を想定して、説明していきます。
1.資料を添付するためのコードを追加
先程作成したコードに赤枠のコードを追加します。

function sendMail() {
const recipient = '●●●●●@xxxx.xxx'; //送信先のメールアドレス
const subject = '【テスト】メール送信テスト'; //件名
const recipientCompany = '株式会社ABC'; //送信先の会社名
const recipientName = '鈴木一郎'; //送信先の担当者名
const body = `${recipientCompany}\n${recipientName}様\n`
+ '\n**テストメールです**\n'; //本文
const attachfile = DriveApp.getFileById('▲▲▲▲▲').getBlob(); //ファイルのID
const options = { name: '株式会社ASTINA メール担当', attachments: attachfile };
//名前、ファイルの添付あり
GmailApp.sendEmail(recipient, subject, body, options);
}
2.テストに使うファイルを準備
送りたいファイルをドライブ内にドラッグアンドドロップをすると、自動でアップロードできます。

3.ファイルのIDを取得
赤枠部分をクリックすると、リンクを選択することができます。
資料の赤字部分がファイルのIDとなります。


赤字部分をコピーします。
4.ファイルのIDを入力
赤枠のエリアにファイルIDのコードを入力します。
※各ファイルによってIDは異なります。

function sendMail() {
const recipient = '●●●●●@xxxx.xxx'; //送信先のメールアドレス
const subject = '【テスト】メール送信テスト'; //件名
const recipientCompany = '株式会社ABC'; //送信先の会社名
const recipientName = '鈴木一郎'; //送信先の担当者名
const body = `${recipientCompany}\n${recipientName}様\n`
+ '\n**テストメールです**\n'; //本文
const attachfile = DriveApp.getFileById('ファイルID').getBlob(); //ファイルのID
const options = { name: '株式会社ASTINA メール担当', attachments: attachfile };
//名前、ファイルの添付あり
GmailApp.sendEmail(recipient, subject, body, options);
}
5.スクリプトを実行
スクリプトを実行すると、権限を要求されることがありますが、問題がなければそのまま続行を押してください。
添付ファイルがついたメールが届きました。

GASでメールの一括送信をする方法
参考資料:GoogleAppsScript ドキュメント / GoogleAppsScript スプレッドシート
宛先が複数ある場合、メールを送るのに毎回アドレスを入力するのはとても面倒です。
このような時間がかかる作業も、GASを使うと入力から送信までの作業を一括で行うことができます。
今回はGoogleスプレッドシートとGoogleドキュメントを使って、メールを一括送信します。
※Googleの無料版は、1日に100通までの送信制限がかかっていますのでご注意ください。
⇒詳しくはこちら
事前準備
Googleのスプレッドシートとドキュメントを準備します。
・スプレッドシート

名前を「メールテスト」で保存
1列目:会社名 / 2列目:姓 / 3列目:名 / 4列目:アドレス
・ドキュメント

送りたいメールの書式を準備し、スプレッドシートに記入した項目名を記入します。
赤枠の内容をそれぞれ { } 波カッコで書いてください。
この欄にスプレッドシートの各項目が入ります。
1.新しくスクリプトを作成
※事前に準備したスプレッドシートからスクリプトを作成してください。
別のファイルで作成した場合エラーが出ます。
- ファイル名を「mailmaga.gs」に変更
⇒ 丸が3つのボタンをクリックすると名前を変更できます。 - 関数名を「mailMaga]に変更

2.コードを入力
エディタに下記のコードを貼り付けてください。

function mailMaga() {
const sheet = SpreadsheetApp.getActiveSheet();
const lastRow = sheet.getLastRow();
const doc = DocumentApp.openById('★★★★★'); //ドキュメントファイルのID
const docText = doc.getBody().getText();
const subject = '【テスト】メール送信テスト'; //件名
const attachfile = DriveApp.getFileById('ファイルID').getBlob(); //ファイルのID
const options = {name: '株式会社ASTINA メール担当', attachments: attachfile};
//名前、ファイルの添付あり
for (let i = 2; i <= lastRow; i++) { //i=2は行の数字を表す
const company = sheet.getRange(i, 1).getValue(); //送信先の会社名
const lastName = sheet.getRange(i, 2).getValue(); //姓
const firstName = sheet.getRange(i, 3).getValue(); //名
const recipient = sheet.getRange(i, 4).getValue(); //送信先のメールアドレス
const body = docText
.replace('{会社名}',company)
.replace('{姓}',lastName)
.replace('{名}',firstName);
GmailApp.sendEmail(recipient, subject, body, options);
}
}
3.ドキュメントのIDを取得
2.で準備したドキュメントのIDを★★★★★に入力します。
- ドライブ内で準備したドキュメントを右クリック
- リンクを取得

赤枠部分をクリックすると、リンクを選択することができます。
赤文字がドキュメントのIDとなります。
4.ドキュメントのIDを入力
ドキュメントのIDを★★★★★に入力してください。

function mailMaga() {
const sheet = SpreadsheetApp.getActiveSheet();
const lastRow = sheet.getLastRow();
const doc = DocumentApp.openById('ドキュメントファイルID'); //ドキュメントファイルのID
const docText = doc.getBody().getText();
const subject = '【テスト】メール送信テスト'; //件名
const attachfile = DriveApp.getFileById('ファイルID').getBlob(); //ファイルのID
const options = { name: '株式会社ASTINA メール担当', attachments: attachfile };
//自分の名前、ファイル添付あり
for (let i = 2; i <= lastRow; i++) { //i=2は行の数字を表す
const company = sheet.getRange(i, 1).getValue(); //送信先の会社名
const lastName = sheet.getRange(i, 2).getValue(); //姓
const firstName = sheet.getRange(i, 3).getValue(); //名
const recipient = sheet.getRange(i, 4).getValue(); //送信先アドレス
const body = docText
.replace('{会社名}', company)
.replace('{姓}', lastName)
.replace('{名}', firstName);
GmailApp.sendEmail(recipient, subject, body, options);
}
}
5.スクリプトを実行
実行すると権限を要求されることがありますが、問題がなければそのまま続行を押してください。
一括で送信することができました。

まとめ
今回は「Google Apps Scriptをメールの運用に導入する方法」について解説しました。
- GASでメールを送信する方法
- GASでメールの一括送信をする方法
- GASで決まった時刻にメールを配信する方法
- GASを使って添付ファイルを送信する方法
このように、繰り返し行なう処理や量が多い処理を効率化できます。また、メール以外にもさまざまなツールと連携することが可能であるため、会社の業務全般に活かすことができるでしょう。