Googleスプレッドシートでメール送信

Googleスプレッドシート

はじめに

 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スプレッドシートの最大の強みと言えるでしょう。

コメント

タイトルとURLをコピーしました