以前このブログの記事[TaskChute]仕事とプライベートの二丁拳銃で「(転記の詳細をそのうち記事にしたいと思っています)」と書きました。今回はその転記の詳細の記事です。
前半後半に分け、前半でTogglからのCSVのエクスポート、秀丸とExcelのマクロを使った整形の手順を、後半でTaskChuteに転記する具体的な手順を書きます。
転記のポイントを整理しておくと、
- TogglのプロジェクトとTaskChuteのProject、TogglのクライアントとTaskChuteのModeをそれぞれ合わせておく
- 文字コードの変換が必要
- コピペしやすいように列を並び替える
TogglからのCSVのエクスポート、秀丸とExcelのマクロを使った整形
TogglのCSVエクスポート
ホーム画面から、「レポート」→「Detailed report(詳細レポート)」→「エクスポート」→「CSV」と進むとCSVがダウンロードできます。
私の環境では、なぜか日本語だったり英語だったり、画面によってちぐはぐです。
ここでダウンロードしたCSVはエンコードが変なので、Excelでそのまま開くと文字化けしています。
次のステップでShift-JISに変更します。
エンコードの変更、保存
[マクロ]自動記録マクロ使っっていますか?で紹介したように、秀丸のマクロの自動記録機能を使って作ったマクロをベースに、少し手を加えて使っています。
- エンコードをShift-JISに変更
- クライアント名の置換
- 上書き保存
冒頭の表示の更新抑止は、後から編集で追記した処理だったと記憶しています。無くても動作すると思います。
クライアント名の置換は、よく使うクライアント名がTogglで上の方に来るように、並び替え用の数字を頭に付加しているのを、ここで削除している処理です。
4つだけなので、正規表現とか考えずに個別に置換してしまっています。
クライアント名とTaskChuteのModeが一致している方は不要な処理です。
// 表示の更新抑止 disabledraw; // エンコードをShiftJISに変更 setcompatiblemode 15; setencode 0xc1, 1; // togglクライアント名の置換.MAC setcompatiblemode 0x0F; begingroupundo; replaceallfast "1-3・浪費・穀潰し" , "3・浪費・穀潰し" , nohilight; if( ! result ) beep; endgroupundo 1; begingroupundo; replaceallfast "2-1・消費・憂い" , "1・消費・憂い" , nohilight; if( ! result ) beep; endgroupundo 1; begingroupundo; replaceallfast "3-2・投資・備え" , "2・投資・備え" , nohilight; if( ! result ) beep; endgroupundo 1; begingroupundo; replaceallfast "4-4・空費・憂さ晴らし" , "4・空費・憂さ晴らし" , nohilight; if( ! result ) beep; endgroupundo 1; saveexit;
秀丸でCSVを開いて上記のマクロを実行すれば、上記の処理が自動でなされますが、ドラッグアンドドロップで処理したいので、「エンコードをShiftJISに変更、上書.bat」というバッチファイルを作って、CSVをその上にドラッグアンドドロップすると処理が実行されるようにしています。
REM -----秀丸で開き、エンコードをShiftJISに変更、上書.MACを実行するバッチファイル----- "C:\Program Files\Hidemaru\Hidemaru.exe" /xエンコードをShiftJISに変更、上書.MAC %1 %2 %3 %4 %5 %6 %7 %8 %9 REM -----------------ここまで-----------------
webで調べながら見よう見まねで作ったbatファイルなので、パラメータとかコピペしてきたままで、おかしいんじゃないかな、と思いつつ使っています。
ちなみに秀丸のbatファイルを作るのに参考にしたサイトはこちら 秀丸エディタQ&A集(第7版) 第IV部~テキスト編集を極める!! 起動オプションを使ってみよう
Excelで列の並び替え
上書き保存後のCSVはExcelで開けるので、今度はExcelで開きます。
下記のマクロ(私はPERSONAL.xlsに保存しています)を実行すると、CSVを整形処理した成果物がExcel形式で保存されます。
主な処理は、列の移動と列の削除、行の並び替えです。
最後にデスクトップに保存しているので、そのユーザ名部分だけは直すなり、他のフォルダを指定するなりしないと動かないと思います。
Sub togglCSVedit() ‘ ‘ togglCSVedit Macro ‘ マクロ記録日 : 2012/7/15 ユーザー名 : neunzehn ‘ ‘ Columns(“A:M”).Select Columns(“A:M”).EntireColumn.AutoFit Columns(“E:E”).Select Selection.Delete Shift:=xlToLeft Columns(“D:D”).Select Selection.Cut Columns(“C:C”).Select Selection.Insert Shift:=xlToRight ActiveWindow.SmallScroll ToRight:=2 Columns(“J:K”).Select Selection.Cut Columns(“I:I”).Select Selection.Insert Shift:=xlToRight Columns(“H:J”).Select Selection.Cut Columns(“F:F”).Select Selection.Insert Shift:=xlToRight Columns(“J:J”).Select Selection.Cut ActiveWindow.SmallScroll ToRight:=-1 Columns(“C:C”).Select Selection.Insert Shift:=xlToRight ActiveWindow.SmallScroll ToRight:=-1 Range(“A1”).Select Range(Selection, Selection.End(xlDown)).Select Range(Selection, Selection.End(xlToRight)).Select Selection.Sort Key1:=Range(“C2”), Order1:=xlAscending, Key2:=Range(“G2”) _ , Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _ False, Orientation:=xlTopToBottom, SortMethod:=xlPinYin ‘ XLSで保存 Macro ‘ マクロ記録日 : 2012/7/25 ユーザー名 : neunzehn ‘ ‘ ChDir “C:\Users\(ユーザ名)\Desktop” ActiveWorkbook.SaveAs FileFormat:= _ xlNormal, Password:=””, WriteResPassword:=””, ReadOnlyRecommended:=False _ , CreateBackup:=False End Sub
今後の改善案
自分が普段使っているツールをベースに、エンコードや文字列の置換なら秀丸でしょ、列の並び替えならExcelでしょ、という最初に思い付いたツールでの処理を自動化しただけのマクロなので、2つのツールを渡り歩く方法になっています。
秀丸のマクロの最後でExcelを開く、または文字コードの変換から文字列の置換まで含めて全てExcel内で処理する、という方法を取れれば、途中の手作業が少し減りますね。
どちらも調査しながら試行錯誤しないと私にはできないことなので、そのうち取り組めたら良いです。
TaskChuteへの転記
行の追加
TaskChuteを開き、まず昨日一日分のタスクが入るだけの行を用意します。
私は下記のはまさんの記事の「複数の新規タスクを高速で追加する。(例えば4つを2秒で)」を使っています。
http://hama73.com/archives/69
データの値貼り付け×2回
前半の作業で整形済みのTogglのログから、転記したい記録の「Project」「Mode」「作業内容」の3列を選択してコピー、TaskChuteに値貼り付けします。
値貼り付けにしないと罫線の点線が消えたりしますが、気にならない場合はそのまま貼り付けてもかまわないかもしれません。
次にTogglのログに戻り、「開始」「終了」時刻を同様に値貼り付けします。
日付関係の処理
私は睡眠時間もTogglに記録しているのですが、TaskChuteでは日をまたぐタスクはうまく扱えないので、「就寝」の行を削除します。実績がマイナスになっているので、それをキーに探すと見つけやすいです。
(追記)マロ。さんからこんなアドバイスをもらいました。
@neunz19 就寝のタスクですが折角だから消さずに終了時刻に24:00を足した数字にすると良いかも。5:00に起きたのなら、29:00とする感じです
— マロ。さん (@maro_draft) 11月 6, 2012
私はTogglではなくTaskChuteをマスターデータにしているので、睡眠時間も記録として残せたら確かに嬉しいんですよね。
今後は削除せずに+24時間の運用をする予定です。古いデータも遡って入れ直そうかな。
次に、私は朝に転記をしているのですが、今朝起きてからTaskChuteを開くまでの間にしたこともTogglのログからTaskChute入ってきています。
そのタスクとそれに連なるブランクタスクの日付を今日の日付に変更します。
私は変更したいタスクの「月日」列を複数選択にしてCtrl+;、Ctrl+Enterで一括変更することが多いです。
変更したいタスクを複数選択してTaskChuteの「日付変更」ショートカットで変更しても同じ事ができると思います。
再計算させる
次に、「終了」時刻の列で「F2,Enter,Enter,Enter」を各行につき連打します。
それぞれ、こういう意味の処理です。
- F2:セルを編集状態にする
- Enter:入力の確定
- Enter:コメントのスキップ
- Enter:下の行へ移動
この処理で実績が再計算され、行の高さが変わったり、セクションが適切に変換されたりします。
並び替え
ここで並び替えをします。正しい色が付き、今朝のタスクがあるべき場所に収まります。
ちなみに、「日付変更」の前に並び替えをやってしまうと昨日のタスクに今朝のタスクが混じってしまって大変なことになるので、それだけは注意が必要です。
昨日の振り返りをして、コメントがあれば追加
昨日のタスクがきれいに整ったところで、昨日の一日を振り返ります。
ルーチンの中で普段と異なることをしただとか、子供の様子だとか、残しておきたいことをコメントに残したりします。
コメント