Google Apps Script でメール送信を行う方法。超具体解説
GASでメールを送信したい。
送る人それぞれで、内容を変えたものを送りたい。
今回は、このようなGASでメールを送信したい人に向けて記事を書いていきます。
プラスアルファとして、ただメールを送るだけでなく、送る人それぞれに送るメールの内容を変えたいという人にも見本となるコードを解説していきます。
実際に使えるコードを使って解説していきます。
この記事で、少しでもGASについて理解して、メール送信ができるようになって欲しいと思います!!
目次(クリックで読みたい部分にジャンプできます)
今回の実装内容
今回の実装の内容は以下2点をポイントとして解説していきます。
- メール送信を実装するコードとその内容解説
- 送信者、送信内容をメールごとに変えたい場合のコード例
今回の実装では、まずメール送信を実装するコードについて解説していきます。
ここで、解説するコードが一番基本的なメール送信ができるコードになります。
メール送信のみを行いたい場合は、1つ目の解説のまでで問題ないでしょう。
その後に、よくあるケースを想定してのコード例を解説していきます。
文面が同じものを送信することは、普通のメールでも各アドレスを頑張って手入力すればできるかと思います。
ただ、メールアドレスに対して、送信する内容も一部変えたい場合などが往々にしてあります。
例えば、各アカウント情報の周知などです。
各アカウントは個人ごとに内容が違いますよね。
そのため、それぞれにアカウント情報をメールで送付する場合、文面をそれぞれで作らないといけないので、結構大変です。
このような場合を想定して、文面も各メールごとに変えれるようなコード例を解説していこうと思います。
実際に現場で直で使えるようなコードを解説していきます。
ぜひ、参考にしてみてください。
メール送信するコード
まず、メール送信するコードです。
function sendEmail(){
const email = "example@example.co.jp"//メールアドレス
const title = "テストタイトル"
const strBody = "テストメール本文"
const bccmail = email;//bccのメールアドレス
const ccmail = email;//ccのメールアドレス
var recipient="example@example.co.jp"; //送信先
//var report = DriveApp.getFileById("0B8JD3DtPwZbvQkVOQlR6anVKeUk"); //file単体になっている点に注意
/* メールを送信 */
let response = MailApp.sendEmail(
recipient, //送信先
title, //メールタイトル
strBody,//本文
{
name: "私からのメールだ",//表示する名前
//bcc: bccmail
//cc: ccmail,
//attachments: [report] //添付をファイル
}
);
}
実際に送ると以下のようになります。
差出人のメールアドレスは、あなたがGASで作成しているアカウントになります。
メールアドレスの部分は、exampleで存在しないものになっているので、実際に送信したい正しいアドレスに変更してくださいね!
GASには、MailApp の他に、GmailAppが存在します。
そちらでもメールは送れるはずなのですが、私のアカウントではなぜかGmailにのみメールが送信できませんでした。
なので、今回は、私と同じような方もいるかもしれないので、MailAppにて紹介しています。
送る人それぞれでメールの内容を変える方法
では、ここまで、メールの自動送信の方法を解説していきました。
ここからは、各送信先によってメールの内容を変えるコード例を紹介していきます。
手順として、今回は次の順番で行います。
実装手順
①スプレッドシートに送信先情報と本文内容を書く
②スプシから情報を拾えるようコードを整理
①スプレッドシートに送信先情報と本文内容を書く
今回は、このようなスプシを用意しました。
アカウントを発行したので、それを書くメールアドレスに通知するということを想定しています。
データがこのように羅列している場合に使うことができます。
②スプシから情報を拾えるようコードを整理
スプシの情報を処理できるようにコードを編集していきます。
var data_sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("メール内容");
function mailing() {
for (let row = 2; row <= data_sheet.getRange(1, 1).getNextDataCell(SpreadsheetApp.Direction.DOWN).getRow(); row++) {
let email = data_sheet.getRange(row, 1).getValue();
let userid = data_sheet.getRange(row,2).getValue();
let pw = data_sheet.getRange(row,3).getValue();
let title = "アカウントを発行しました"
let strBody = "あなたのアカウントを発行致しました。"+"\n\n"+"ユーザー名\n"+userid+"\n\nパスワード\n"+pw+"\n\n"
console.log(email)
console.log(title)
console.log(strBody)
sendEmail(email,title,strBody);
}
}
function sendEmail(email,title,strBody){
const bccmail = email;//bccのメールアドレス
const ccmail = email;//ccのメールアドレス
var recipient=email; //送信先
/* メールを送信 */
let response = MailApp.sendEmail(
recipient, //Toアドレス
title, //メールタイトル
strBody,//本文
{
name: "私からのメールだ",//差出人
//bcc: bccmail
//cc: ccmail,
//attachments: [report] //添付をファイル
}
);
}
二つの関数で実行するようにしています。
mailing 関数
スプシの行全体を取得しています。for文で、取得したものを繰り返すようにしています。
let email = data_sheet.getRange(row, 1).getValue();
let userid = data_sheet.getRange(row,2).getValue();
let pw = data_sheet.getRange(row,3).getValue();
この部分で、特定の列の送信先メールアドレス、アカウント名、パスワードを取得しています。
その後、sendEmail関数に情報を渡しているのです。
sendEmail関数
sendEmail関数は先ほど解説した内容と同じです。
以下3つの変数は、mailing関数から渡される情報なので、引数として設定しています。
- title
- strBody
これで、コード例の解説は終了です。
実際に私はこのコードを業務内で活用しています。
皆さんも使い道を見つけて使ってみてください!
まとめ
今回は、GASでメール送信を自動化する方法を解説していきました。
実際に活用してみて初めて意味があるものです。ぜひ業務の中で活かしてみてください!