GAS

【GAS】毎日の日報送信をGASとスプレッドシートで可能な限り簡略化する

今働いている現場では、仕事終わりに簡単な日報をメールで送らないといけないのですよ。

日報を送る時の作業工程をザックリ分解するとこんな感じ…

  1. メモ帳で管理している日報の雛形を開く
  2. 雛形の件名部分の日付を更新
  3. 雛形の本文の作業内容を更新
  4. メーラーを開く
  5. 件名をメーラーにコピペ
  6. 本文をメーラーにコピペ
  7. 宛先を入力
  8. 送信ボタンを押す

正直、そんなに時間がかかるものではないのですが、いちいちメーラーを立ち上げてコピペするのが面倒くさいです。

規則性がないのは作業内容の更新だけなので、それ以外はスクリプトで自動化することにしました

メールを送信する処理を作る

MailApp.sendEmail()を使用すれば簡単に実装できます

function sendMail(){
  var to      = '宛先のメールアドレス';
  var subject = '件名';
  var body    = '本文';
  MailApp.sendEmail(to, subject,body);
}

今日の日付を取得して件名に入れる

件名は更新する部分が日付だけなので、日付の部分を変数にしてスクリプトに埋め込みます。

var date   = new Date();
var today   = Utilities.formatDate( date, 'Asia/Tokyo', 'MM/dd');
var subject = '【プロジェクト名】'+today+'_氏名'

スプシに記述した雛形をGASで読み込む

Evernoteで管理していた雛形をスプシに移行して、本文の部分(セルのA1)をGASで読み込みます。

function getBody() {
  var sheet =SpreadsheetApp.getActiveSheet();
  var value = sheet.getRange('A1').getValue();   
  return value
}

本文の部分に取得したデータを入れます。

var body    = getBody();

スプレッドシートに独自メニューを追加する

スプレッドシートから直接スクリプトを実行したいので、メニューを追加します。

function onOpen() {
    var ss    = SpreadsheetApp.getActive();
    var items = [{name: '送信する', functionName: 'sendMail'}];
    ss.addMenu('日報', items);
}

完成

function onOpen() {
    var ss    = SpreadsheetApp.getActive();
    var items = [{name: '送信する', functionName: 'sendMail'}];
    ss.addMenu('日報', items);
}

function sendMail() {
    var date   = new Date();
    var today   = Utilities.formatDate( date, 'Asia/Tokyo', 'MM/dd');
    var to      = '宛先のメールアドレス,宛先のメールアドレス';
    var subject = '【プロジェクト名】'+today+'_氏名'
    var body    = getBody();
    MailApp.sendEmail(to, subject,body);
}

function getBody() {
    var sheet =SpreadsheetApp.getActiveSheet();
    var value = sheet.getRange('A1').getValue();   
    return value
}

メーラーを立ち上げてコピペする手間がなくなり、スプレッドシートだけで完結するので、だいぶ楽になりました。

これなら面倒くさがりの僕でも頑張れそうです。

ABOUT ME
ytakeuchi
都内在住のフロントエンドエンジニア。2016年からフリーランスとして活動中。座右の銘は「昨日よりも楽に」。好きな言葉は「効率化」。こんな性格なのでプライベートではGoogle Apps Scriptばかり触っています。