![見出し画像](https://assets.st-note.com/production/uploads/images/71505732/rectangle_large_type_2_d3966948d00b1302a33315d87d4f19d8.png?width=1200)
【小規模事業者向け】自作マーケティングオートメーションででっかい成果を生み出す! 〜2.実装編〜
こんにちは、よさそう®です。
前回のMAに関する説明に引き続き、今回は具体的な実装の仕方についてお話します。
メール送信リストをGoogle SpreadSheetで作る
まずはGoogle Spread Sheetでメール送信対象者のリストを作ります。ゼロからシートを作るのもいいですし、Google Formsでメール送信対象者を集めてもいいですね。
メールアドレスやお名前が含まれた送信者リストのイメージはこちらです。
![](https://assets.st-note.com/img/1644031459757-KNtinyijlF.png?width=1200)
Google Apps Scriptでメールを送る
Google Apps ScriptはGoogle Apps Scriptのメニューから、拡張機能>Apps Scriptとたどると起動します。
![](https://assets.st-note.com/img/1644031492527-nFE7G6gJB4.png?width=1200)
プログラムで実現したいことは「メール送信リストの対象者にメールを送る」です。
そのために、対象となるスプレッドシートを読み込んで、リストに載っている人全員にメールを送る、というプログラムを書いていきます。
さきほどのスプレッドシートを例として、メール送るサンプルプログラムはこちらです。
function myFunction() {
// メール本文 //
const mailTitle = 'ここにメールのタイトルを書く';
const mailBody = 'ここにメール本文を書く';
const mailFooter = 'ここにメールのフッターを書く';
/*** 変数宣言 ***/
var targetName = null; // 名前
var targetMailAddress = null; // メールアドレス
var rowIdx = 0; // スプレッドシート走査用行インデックス
const mainBook = SpreadsheetApp.openById('ここにSpreadSheetのIDを書く');
const mainSheet = mainBook.getSheetByName(ここにシート名を書く);
const values = mainSheet.getDataRange().getValues(); // シートの内容を全部持ってくる
// シートの内容について、1行ずつ処理を繰り返す
for (rowIdx = 1 ; rowIdx < values.length ; rowIdx ++){
// 送信対象者の情報を取得する。
targetMailAddress = String(values[rowIdx]['メールアドレス列の列番号-1を書く']);
targetName = String(values[rowIdx]['名前列の列番号-1を書く']);
// 送信者のお名前でヘッダーを作る。
var mailHeader = targetName + ' 様<br><br>';
var mailHtmlBody = mailHeader + mailBody + mailFooter;
var mailArgs = {
htmlBody: mailHtmlBody
};
GmailApp.sendEmail(targetMailAddress, mailTitle, mailHtmlBody, mailArgs);
// 大量送信によるアカウント異常と誤解されないように1通送るたびに1秒待つ。
Utilities.sleep(1000);
}
}
プログラムの解説や注意事項
実行は6分間まで
Google Apps Scriptは実行は最長で6分間までとなっています。
6分間を超えると途中で終了します。Excel VBAとかですと実行時間の制限はないので、この点が違うところですね。
なので、プログラムを組むときには6分間を超えないように処理を分割したり、6分間を超えないように処理時間が短くなる工夫が必要です。
列と行の番号の考え方
処理時間を短くする工夫の一つとして、プログラムの最初でシート全体の値を取得しています。
一方で、この方法で取得した値を見に行くときには、シート上で見えている行や列の番号からマイナス1した場所で考える必要があります。
プログラミングに慣れていない方には「???」だと思います。
先ほどのリストの例ですと、1行目はプログラム内では0行目、お名前の列は1列目にあるのですが、プログラム内では0列目となります。
大量のメールを送る場合、1回送信したら1秒おやすみ。
私の失敗談になるのですが、6分間の制約があるので、ひたすら連続して大量のメールを送ったことがあります。そうしたら、途中でエラーが発生して送れなくなりました。
どうやら短時間で大量にメールを一気に送信する行為がよくないようでした。
ということで、プログラムのなかで、
Utilities.sleep(1000);
と書いて、”1通送ったら1秒おやすみ”という仕組みを入れています。
ということで、今回はGoogle Apps Scriptでメールを送る仕組みの実装の仕方について説明しました。
次回からは今回のプログラムを土台として、応用編に入ってまいります。
最後までお読みいただきありがとうございました。
よろしければ、いいねやフォローをいただけますと励みになります。
この記事が気に入ったらサポートをしてみませんか?