Google Spread Sheet でライフログをつける。

※12/22 09:00、スクリプトを改良し*1追記しました。

最近ちょっとエクセル的なものにハマっています。
帰宅してぽちぽち Google Apps Script かきました。

ついつい、仕事と関係ない勉強をしているので、
ちゃんと効果的に勉強できているかどうかを測るために
ライフログを作りました。

開始と終了だけ記録すれば、勝手に時刻を取得して、どれだけやったか計算してくれる。


電車の中でちょこちょこと勉強するときに、
Google Driveを開いて、開始!終了!と記録できれば楽しいかなぁと。

見た感じはこんな風になっています。

 f:id:haru_negami:20161222020003p:plain

 

 

  • 実行した日付
  • やったこと(カテゴリー)
  • 終了
  • メモ(実施内容詳細)
  • かかった時間
  • 開始時刻
  • 終了時刻
  • やることリスト
  • 累計時間

赤字が、書き込む内容。

一仕事終えたら、やったことリスト(ドロップダウンで入力)でやったことを選択し、
終わり、と記入する。
メモ欄に詳細を入力。

1日にどれくらい仕事してるか、振り返りたいと思います。
(社会人時代は、大体資料を作るときに時間を測って記録してましたな。。。そういえば。)

本当はグラフ化もしたかったのですが、
これくらいの量ならグラフ化しなくても判断はしやすいかなと。

 

スクリプトはこちらをベースにさせていただきました。
 

shinjirogoto.com


 

ほぼそのままです。。。

スクリプトは下記の通り。

function insertLastUpdated() {
  var sheet = SpreadsheetApp.getActiveSheet(); //現在触っているシートを取得
  var currentRow = sheet.getActiveCell().getRow(); //アクティブなセルの行番号を取得
  var currentColumn = sheet.getActiveCell().getColumn();
  var currentCell = sheet.getActiveCell().getValue(); //アクティブなセルの入力値を取得
  var updateRange = sheet.getRange(currentRow,6) //スタートの時刻を入力するセルを記入
  var updateDate = sheet.getRange(currentRow,1)//日付を記入するセルを取得
  var endDateRange = sheet.getRange(currentRow,7) //終了の時刻を入力するセルを記入
  //行動日時の記入
  if(currentRow>1){ //もし行番号が1より大きい場合(固定行を除くための処理)
    if(currentColumn == 3)//終了のセルにカーソルがある場合
      if(currentCell) { //もし終了記録のセルが空白でなかったら
      updateDate.setValue(new Date());
    }
  }
  //終了時刻の記入
  if(currentRow>1){ //もし行番号が1より大きい場合(固定行を除くための処理)
    if(currentColumn == 3)//終了のセルを記入する場合
      if(currentCell) { //もし終了記録のセルが空白でなかったら
      endDateRange.setValue(new Date());
    }
  }}

 
スクリプトの上の時計のアイコンをクリックして、
下図の通り値の更新時にスクリプトが実行されるようにしました。

f:id:haru_negami:20161222020700p:plain


お風呂とかはカテゴリーメンテナンスに入れております。

それでは!ブログ書くのに16分かかったらしい!ほお!

※追記。今日は帰り道に特異ホモロジーの計算をちょこちょこしました。iPad大活躍。

*1:開始時刻は前の作業の終了時刻としました。