はじめに
Googleスプレッドシートでのメール送信はとても簡単です。
GmailApp.sendEmail( 宛先メールアドレス, 題名, 本文, オプション )
この関数に必要な引数の値を代入して実行すればOKです。
サンプルコード
今回は、本文以外を1つの関数にまとめて、呼び出して使うようにしてみました。
function MyMailTest(){
let str = "これは、メールのテストです。\r\n このメールを受け取ったら成功です。\r\n 以上 ";
sendMyGmail(str);
}
function sendMyGmail(body){
const recipient = '[宛先メールアドレス]';
const subject ='[題名]';
const options = {name: 'Userより'}; //差出人
GmailApp.sendEmail(recipient,subject,body,options)
}
実行方法
Apps Script では、実行する関数を指定して「実行」を押す必要があります。
今回は、MyMailTest を選択して「実行」を押します。

最初は自分のメールアドレスを指定して送ってテストしましょう。
実行して、メールが届けば成功です。
スクレイピングした内容をメール送信
前回の「スプレッドシートでスクレイピング」のコードと合わせてみます。
ソースコード
function getMySite() {
// サイトURL
const url = "https://********サイトURL**********";
let html = UrlFetchApp.fetch(url).getContentText('UTF-8');
//文章の抜き出し
const str = '</header>'; //抜き出し開始文字列
let s1 = html.indexOf(str);
html = html.substring(s1 + str.length);
let s2 = html.indexOf('</div>'); //抜き出し終端文字列
//HTML記号を削除
let content = html.substring(0,s2).replace(/<("[^"]*"|'[^']*'|[^'">])*>/g,'');
//日付を取得
let myDate = new Date();
myDate = Utilities.formatDate(myDate,'Asia/Tokyo','yyy/MM/dds HH:mm_ss');
//最終行の取得
let ssh = SpreadsheetApp.getActiveSpreadsheet();
let sht = ssh.getSheetByName('HTML');
let myRow = sht.getDataRange().getLastRow() + 1;
//日付と文章をセルに入力
sht.getRange(myRow,1).setValue(myDate);
sht.getRange(myRow,2).setValue(content);
sht.getRange(myRow,2).trimWhitespace();
//メールで送信
let myStr = sht.getRange(myRow,1).getValue();
myStr = myStr + '\r\n' + sht.getRange(myRow,2).getValue();
sendMyGmail(myStr);
}
function sendMyGmail(body){
const recipient = '***送信先メールアドレス***';
const subject ='テストメール';
const options = {name: 'Userより'};
GmailApp.sendEmail(recipient,subject,body,options)
}
上記のプログラムに、スクレイピングしたいサイトURL、サイトHTMLソースの切り出し文字列を指定します。(こちらはご自身の環境でテストしてください。)
さらに、スプレッドシートには ‘HTML’ という名前のシートが必要です。
メール送信部分は、メールアドレス、題名、送信者名(オプション)を設定してください。
プログラムの解説
getMySite関数の最後にメール送信のコードがあります。
セルのA列とB列を結合してメール文として渡しています。
文字列の結合は + でつなぎます。 ‘\r\n’ は改行です。

図のようにgetMySiteを選択して「実行」を押すとスクレイピングした内容がメールで送信されます。無事メールが送信されれば成功です。
まとめ
今回は、Googleスプレッドシートでのメール送信を解説しました。とても簡単にできるのがわかったと思います。
これに加えて前回の「スプレッドシートでスクレイピング」のコードと合わせる事で、スクレイピングの内容をメールで送る事もできます。
更にApps Script では、ある決まった時間にメール送信する事も出来ます。
ある決まった時間、または定期的に関数を実行する仕組みを「トリガー」と言います。
トリガーを使えば、ある決まった時間にスクレイピングし、その内容をメールで送信するという一連の流れを自動で行えるようになります。
トリガーはPCがオフになっていても稼働できるので、スマホでメールを受け取る事も可能です。
このような仕組を実現できるのがGoogleスプレッドシートの最大の強みと言えるでしょう。
コメント