Hatena::ブログ(Diary)

mamiya_ryuの日記

2012-01-03

Google Docsを使った、時間管理方法

自己管理と記録はすごく相性がいい!
新しく始めた時間記録について、まとめました。

  1. 記録ってすごい?
  2. 時間を分ける
  3. 記録する
  4. 管理する
  5. まとめ

記録ってすごい?

摂取カロリーの記録をしています。その日に食べたものが何カロリーだったかおおざっぱに記録しています。
このおかげで、体重を維持できてる気がしないでもないです。
カロリーを記録することで、自然と増える食事量に注意がいくようになったからだと考えています。

そこで、時間も記録すれば無駄な日々を過ごさなくなるのでは、と思いました。

時間をわける

まず、時間を4つに分けました。

  • やりたい
  • やらなきゃ
  • 固定
  • 浪費

”やりたい”は自分のやりたいことです。ブログを書く、読書、テニス、将棋、お絵かき、筋トレ、勉強、プログラミングなど。
”やらなきゃ”はその他です。バイト、授業、期限があることだったり。他に該当しないものです。
”固定”は移動時間や食事、睡眠、入浴など。
”浪費”はネット、漫画をよんだり、携帯をいじっている時間です。

時間記録の目的は、”やりたい”時間の割合を増やすことです。また、”浪費”時間を減らすことでもあります。
時間を管理することで、無駄な時間を減らし、自分にとって有意義な時間を増やしていきたいです。

記録する

Google Docsスプレッドシートを利用します。
以下を参考にフォームを作成します。

111129時間記録


行動前にフォームでやることを送信する。
終わったらつぎにやることをまた送信・・・という流れです。
僕は携帯電話を使って記録しています。
すると、以下のように記録がたまっていきます。

111129時間記録2

経過時間は以下の式を用いてます。

=IF(ISERROR(HOUR(A2-A1)*60+MINUTE(A2-A1)),0,HOUR(A2-A1)*60+MINUTE(A2-A1))

Google Apps Scriptで、フォームの情報が更新されるたびに以下の処理を実行しています。
これで、経過時間を勝手に計算してくれます。

function myFunction() {
var sh = SpreadsheetApp.getActiveSpreadsheet();
var gshn = sh.getSheetByName("シート1");
gshn.activate().getRange(1,4).copyTo(gshn.getRange("D:D"));
}


記録を始めたことで、時間管理のコツをなんとなくつかめてきました。
それはやる前の宣言です。
だらだらする!と宣言してだらだらするひとは中々いないんじゃないかと思います。
だから、やる前の宣言によって自分の行動を律することができるんじゃないかと思い始めています。

時間を管理する

ただ情報をためるだけでなく、総計・月計・週計とそれぞれグラフ化しました。
また、グラフは定期的にEVERNOTEに保存しています。

それぞれの値を集計します。
111129時間記録5


Google Apps Scriptで、週に1回グラフを作成してGmailからEVERNOTEに送信しています。
スクリプトは最下部です。
参考サイト

EVERNOTEに保存されていきます。
Evernote Web


グラフは以下の通り。
Evernote Web2Evernote Web3Evernote Web4

グラフ作成スクリプト

function makechart(){
var sheet = SpreadsheetApp.openById("IDを入力").getSheetByName("シート3");

var data2 = Charts.newDataTable()
.addColumn(Charts.ColumnType.STRING, "Category")
.addColumn(Charts.ColumnType.NUMBER, "Value")
.addRow([sheet.getRange(2,1).getValue(), sheet.getRange(2,4).getValue()])
.addRow([sheet.getRange(3,1).getValue(), sheet.getRange(3,4).getValue()])
.addRow([sheet.getRange(4,1).getValue(), sheet.getRange(4,4).getValue()])
.addRow([sheet.getRange(5,1).getValue(), sheet.getRange(5,4).getValue()])
.build();

var data = Charts.newDataTable()
.addColumn(Charts.ColumnType.STRING, "Category")
.addColumn(Charts.ColumnType.NUMBER, "Value")
.addRow([sheet.getRange(2,1).getValue(), sheet.getRange(7,3).getValue()])
.addRow([sheet.getRange(3,1).getValue(), sheet.getRange(8,3).getValue()])
.addRow([sheet.getRange(4,1).getValue(), sheet.getRange(9,3).getValue()])
.addRow([sheet.getRange(5,1).getValue(), sheet.getRange(10,3).getValue()])
.build();

var data3 = Charts.newDataTable()
.addColumn(Charts.ColumnType.STRING, "Category")
.addColumn(Charts.ColumnType.NUMBER, "Value")
.addRow([sheet.getRange(2,1).getValue(), sheet.getRange(2,2).getValue()])
.addRow([sheet.getRange(3,1).getValue(), sheet.getRange(3,2).getValue()])
.addRow([sheet.getRange(4,1).getValue(), sheet.getRange(4,2).getValue()])
.addRow([sheet.getRange(5,1).getValue(), sheet.getRange(5,2).getValue()])
.build();

var chart2 = Charts.newPieChart()
.setDataTable(data2)
.setTitle(sheet.getRange(6,4).getValue()+"日〜"+sheet.getRange(7,4).getValue()+"日")
.setDimensions(500,450)
.build();

var chart = Charts.newPieChart()
.setDataTable(data)
.setTitle(sheet.getRange(6,3).getValue()+"月")
.setDimensions(500,450)
.build();

var chart3 = Charts.newPieChart()
.setDataTable(data3)
.setTitle("総計")
.setDimensions(500,450)
.build();

var blob2 = chart2.getBlob();
var blob = chart.getBlob();
var blob3 = chart3.getBlob();

var file2 = {
fileName: "chart",
mimeType: blob2.getContentType(),
content: blob2.getBytes()
};
var file = {
fileName: "chart2",
mimeType: blob.getContentType(),
content: blob.getBytes()
};
var file3 = {
fileName: "chart3",
mimeType: blob3.getContentType(),
content: blob3.getBytes()
};

var address = "アドレスを入力";

var result = GmailApp.sendEmail(address, "件名を入力", "", {attachments: [file2,file,file3]});
}


まとめ

まだまだ遊んでばかりですが、まずは習慣化を目標にしていきます。入力を忘れることが結構あるので。
次第に”浪費”時間を減らして、”やりたい”時間を増やせるようにしたいです。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/mamiya_ryu/20120103/1325556812