Google apps scriptを活用!スプレッドシートから日報を自動送信してみた!

こんにちは!

フリーランスプログラマーのあやえです♪

 

さて、今回は「Google Apps Scriptを使って日報を自動で送る」という、プログラマーっぽい日記を書きます!(笑)

 

 

Google Apps Scriptを活用して日報を楽に自動送信したい!

Google apps scriptを活用!スプレッドシートから日報を自動送信してみた!

 

最近iOS開発以外も勉強しようと思い、Google Apps Script を使って日報送信を自動化をやってみました☆

 

日報、みなさまは普段送っていますか?(^^)

 

日報って、だいたいのフォーマットや項目が決まっていて、毎日決まった時間に送りますよね。

しかし・・・同じ作業の繰り返しがとっても苦手な私・・・(笑)。

 

日報の目的は、日々の業務の振り返りとPDCAと記録と報告ですよね。

ということは、中身を考える工程に意味があります。

 

文章作成、メーラーを起動して、フォーマットをコピペして、宛先入れて、入力して、送信する・・・という作業は削ってもいいことではないか☆

 

と、理由を正当化し、作成したのがこちらです♪( ´▽`)

 

かなりシンプルですが、好きな時間に内容を書き換えておけば、設定したタイミングでメール送信してくれるので気に入っています♪

 

 

スプレッドシートを活用して、日報を自動送信する方法!

Google apps scriptを活用!スプレッドシートから日報を自動送信してみた!

 

1.Googleスプレッドシートを用意する

まず、Googleスプレッドシートで

  • 宛先リストシート
  • 本文作成シート

の2枚を作ります。

 

Google apps scriptを活用!スプレッドシートから日報を自動送信してみた!

 

「本文作成」シートの方には

  • 件名(A1のセル)
  • 本文(B行)

を記入します。

 

ここを毎日書き換えます。

 

 

「宛先リスト」シートの方には

  • 送信先のメールアドレス

を必要なだけ書いておきます。

 

こんな感じです♪

 

Google apps scriptを活用!スプレッドシートから日報を自動送信してみた!

 

 

2.スクリプトエディタを開いてプログラミングする

それでは、ここからプログラミングです♪

 

タブからツール>スクリプトエディタ」を開きます。

 

 

今回は「.gs」ファイル一つだけでシンプルにできました(^ ^)

「.gs」ファイルの名前はなんでもいいです♪

 

実際のコードはこちら♪

 

function createMail() {
 /* メール宛先を準備 */
 var mailTo = appendAllColumnContents(“メール宛先”,0,“,”);

 /* メール本文を準備 */
 // 件名(シートの00セルを参照)
 var contensSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“本文作成”);
 var values = contensSheet.getDataRange().getValues();
 var subject = values[0][0];
 
 // 本文(1列目を結合)
 var body = appendAllColumnContents(“本文作成”,1,“\n”);

 /* メールを送信 */
 sendMail(mailTo, subject, body);
}

// 要素の結合
function appendAllColumnContents(sheetName, columnNo, rangeMark) {
 // シートを取得
 var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
 // シート取得チェック
 if (sheet == null)
 {
   Logger.log(sheet + “を取得できませんでした。”);
   return;
 }
 
 // シートのデータを取得
 var lastRowCount = sheet.getLastRow();
 var values = sheet.getDataRange().getValues();
 
 // 文字列を作成
 var string = “”;
 for (var i = 0; i < lastRowCount; i++)
 {
   // 区切り文字を追加
   string += (string == “”) ? “” : rangeMark;
   
   // セルの内容を追加
   if (values[i][columnNo] != “”) {
     string += values[i][columnNo];
   } else {
     string += “\n”
   }
 }
 
 return string;
}

// メールを送る
function sendMail(mailto, subject, body) {
 GmailApp.sendEmail(
   mailto,
   subject,
   body,
   {   // 送信者として表示される情報
     from: my.email@mail.com,
     name: “MyName”
   }
 ); // メール送信
}

 

関数は

  • createMail()
  • appendAllColumnContents(sheetName, columnNo, rangeMark)
  • sendMail(mailto, subject, body)

の3つを実装しました。

 

 

3.送信テストをする

 

実装が完了したら、大事なのはテストです!!

 

私自身、テストが得意じゃないのですが・・・。

実際にプログラマーとして働くなら、テストがちゃんとできることは本当に大事!!

 

特に今回は人にメールを送るシステムですから、変なものが送信されては、他の人に迷惑がかかってしまいます。

 

今回のコードはcreateMailを呼び出すと、メールを作成して、送信まで自動でしてくれるようにしています♪

※ただ・・・ちょっと関数のネーミングセンスは微妙です(^^;)

 

本来なら、

  • sendDiaryMail()→これを実行すれば日報を送ってくれる
  • appendAllColumnContents(sheetName, columnNo, rangeMark)→行の要素をひとまとめにして繋げる
  • send(mailto, subject, body)→送信機能のみ

みたいに変えたいところです。

 

今回はちゃんと動くこと優先で作ってしまいましたが・・・

ソースコードを見た人が、すぐに何の関数なのか、理解できる事が大事!

 

ぜひ、みなさんはわかりやすい名前で作ってください♪

 

テスト方法は簡単で、「実行」タブから、実行したい関数を選ぶだけ♪

今回は「createMail」ですね。

 

Google apps scriptを活用!スプレッドシートから日報を自動送信してみた!

 

「メール宛先」シートのA行に、自分のアドレスを入れて実行します♪

ちゃんとメールが届けば成功です!!

 

 

4.トリガーを設定する

Google apps scriptを活用!スプレッドシートから日報を自動送信してみた!

 

最後に、このソースコードを定期的に呼び出すようにセットします。

 

表示と実行の下あたりにある、吹き出しと時計がセットになったようなアイコンをクリックすると「トリガー」が設定できます。

 

 

トリガー設定画面が開いたら「トリガー追加」を選んで、

 

Google apps scriptを活用!スプレッドシートから日報を自動送信してみた!

 

好きな時間帯や周期を選んでセットするだけ♪

 

 

これで完了〜♪( ´▽`)

 

今回は日報なので、毎日、指定の時刻に実行されるようにしたかったので、「時間主導型」で時刻を設定しました♪

 

週報なら毎週でいいですね。

 

あとは、毎日「本文作成」のシートを書き換えるのを忘れないでくださいね!!(笑)

自動送信をセットしているので、忘れると全く同じ内容が送信されることになります!

 

くれぐれもご注意を!!

 

 

Google Apps Scriptを活用してスプレッドシートで日報を作ってみた感想☆

 

初めてGoogle Apps Scriptを活用してスプレッドシートを作ってみたけど、結構わかりやすいな〜と思いました☆

 

「こうやってスプレッドシートの値を取ってくるのか!」

「こうやって文字列を作るのか!」

「こうやってGメールと連携するのか!」

 

など、パーツパーツでできることがわかってきました。

これからのスプレッドシートの使い方が広がりそうです(≧∀≦)

 

では、今回はこのへんで☆