株式会社まめぞうデザイン

タナカアキノリ

タナカアキノリ

忘れん坊でも安心!
GoogleAppsScript
で通知メールを送ろう!

2017.05.30

Google Apps Script / メール通知 / 当番表

最近、初老を実感しています。。。

物事を忘れやすいお年頃になってまいりましたー!

社内の話なんですけど、お掃除当番、ブログ当番っていうのがあるんです。

こういう当番制のものは小さいころから忘れるタイプではなかったんですけど、

最近はもうサッパリです!笑

こういうのって一人がやらなくなると、みんなやらなくなっていくんですよねー。。。

だから、忘れないような仕組みをGoogle Apps Scriptで簡単につくっちゃいましょー!

Google Apps Scriptとは

Google Apps Script(通称GAS)は、Googleが提供するサービスをクラウド上でスクリプトを実行することで操作できるサービスです。
スクリプトの言語は、JavaSriptがベースなのでWeb系の人なら抵抗なく実装できるのが手軽に実装できるのがメリットかと思います。

どんなことができるの?

  • カレンダーに登録している今日の予定をメールに送信
  • フォームに回答した人にお礼メールを自動返信
  • スプレッドシートの入力内容を翻訳する
  • スプレッドシートで管理している予定を一気にカレンダーに登録する
  • アナリティクスから取得したデータを特定のメール宛に送信
  • スプレッドシートの内容をcsv形式で添付してメール送信
  • スプレッドシートに入力してある住所一覧をマップにプロット

などなど、Googleサービスと連携して様々なプログラミングができます。
業務の効率化がヤバイっすね!

ブログ当番メール通知機能を作ろう!

今回はスプレッドシートを利用して「ブログ当番メール通知機能」を作っていきます!

1.スプレットシートに情報を入力

スプレットシートに「名前」「メールアドレス」「ブログ当番の順番」の情報を入力します。

別シートにメールの送信内容を入力します。{NAME1}の部分はプログラム側でブログ当番と人の名前に置き換えます。

2.Google Apps Scriptの実装

スクリプトを書いていきます!

ザックリした流れは、、、、、

1.宛先シートから送信先、ブログの当番を抜出す
2.送信内容にブログ当番の名前を挿入して、送信メールの内容を作成
3.ブログ当番の順番を更新
4.メールを送信する

って感じでっす!この流れをスクリプトで書くと下の感じになりました!

これを書いた後はトリガーの時間設定すれば通知メールが送信されちゃいまーす!
※スクリプトの記載場所は「ツール」→「スクリプトエディタ」

function sendMail() {
 // 宛先のシート情報を取得
 var mySheet=SpreadsheetApp.openById("1234567890abcdef"); 

 // シートの開始行番号、開始列番号を取得
 var startRow = 2;
 var startCol = 1;

 // シートの最終行番号、最終列番号を取得
 var endRow = mySheet.getLastRow() - 1; // 最初の行は不要なためマイナス1とする
 var endCol = mySheet.getLastColumn();

 // シートの範囲を指定して情報を取得
 var sheetdata = mySheet.getSheetValues(startRow, startCol, endRow, endCol); 
 var dataCount = sheetdata.length;

 // 送信内容のシート情報を取得
 var subSheet = mySheet.getSheetByName("送信内容");
 var submitContent = subSheet.getRange(2, 1).getValue();

 // ブログ担当者を抜出し
 var strName = '';
 for(var i = 0; i < dataCount; i++){
  if(sheetdata[i][2] == 1.0){
   strName = '"'+ sheetdata[i][0] + '"';
  }
 }

 // ブログ当番の名前を置換して挿入
 var strBody=submitContent.replace(/{NAME1}/,strName); 
 //From
 var strFrom="tanaka.akinori@mamezoudesign.com"; 
 //差出人
 var strSender="ブログ当番管理人"; 
 // タイトル
 var strSubject="【ブログ更新】";
 var strCc = '';
 for(var i = 0; i < dataCount; i++){
  //To
  if(sheetdata[i][2] == 1.0){
   var strTo=sheetdata[i][1]; 
  }else{
   strCc += sheetdata[i][1] + ',';
  }

  // ブログ当番の順番を更新する
  var y = i + 2;
  if(sheetdata[i][2] == 1.0){
   mySheet.getRange("C"+ y).setValue(dataCount);
  } else {
   var setNumber = sheetdata[i][2] - 1.0;
   mySheet.getRange("C"+ y).setValue(setNumber);
  } 
 }

 // メールの送信
 GmailApp.sendEmail(
  strTo,
  strSubject,
  strBody,
  {
   from: strFrom,
   name: strSender,
   cc: strCc
  }
 );
}

まとめ

Google Apps Script…クソ便利ですね!

以上!!

RELATED