ls -al

仮想通貨やプログラミングに関する事などをつらつらと書き綴ります

GASで日報作成を支援するbotを作る

日報を書くことはとても大切です。しかし同時にそれはとても面倒なことでもあります。継続しなければいけないけれども面倒なタスク。そんなものはテクノロジーの力を借りて効率化しちゃいましょう!ということで、GASを使って日報作成を支援してくれるbotを作りました。


ソースコード

tokenなどの変数は各々で取得したものを入力してください。ライブラリとしてこちらを使用しています。識別名をGasSpreadsheetsDBManagerと設定してください


概要

このbotはTodoist、Slack、Spreadsheetと連携して動作します。月~金曜日の21:30に、Todoistの特定のプロジェクトからタスクを取得し、完了したタスクは「Done!」の表示、完了していないタスクは「undone…」の表示をして、更に全体の何%のタスクが達成できたかを総評として計算し、Slackの自分のDMに投稿します。それと同時にSpreadsheetにタスクの達成可否と総評を記録します。これによって、以下の目標を達成できます。

  • 毎日の課題達成可否の部分を書く必要がなくなる

    • Todoistと連携し、その部分を勝手に書いてくれます。日報の手を止めて目標を振り返り、出来たかどうか考える必要はありません
  • 振り返りを容易に

    • 目標達成の可否は自動的にSpreadsheetに記入されます。これは日報だけでなく、週報、月報を書くときにも役に立ちます
  • 日報作成を促す

    • slackで送信することで、通知が飛び、日報の作成が促されます
    • GoogleDocsに記入することも考えましたが、このように通知によって促すということが出来ないのでSlackにしました

ちなみに、筆者がTodoistの無料アカウントである関係で、このソースコードは有料会員限定の機能(filterなど)を一切使用していません。誰でも使うことが出来ます。

これを使用することで、日報を書く際の目標を入力し、達成できたか振り返り…といった本質ではない部分を省き、達成度合いを確認し、その理由を考え、明日に活かすという本質の部分に力を注ぐことが出来ます!


詳細

このプログラムを実際に使用する際には以下の変数を設定を行う必要があります。

  • token

    • Todoistのアクセストークンです。設定→連携機能から確認してください
  • nextactionProjectId

    • NextAction(次の課題)が設定されたProjectのIDです。TodoistのAPIを叩いて取得してください
  • url

    • 目標達成の可否を記録するSpreadsheetのURLです
  • sheet_name

    • 目標達成の可否を記録するSpreadsheetのシートの名前です
    • sheetは以下のような構造にする必要があります。
A B C
1 id datetime 総評
  • slackWebhockEndpoint
    • slackのincoming webhockのendpointです。通知が飛び、他人から見られないので、自分宛てのDMに設定することをオススメします。

さらにTodoistで設定しているタスクは以下の条件を満たさなければなりません

  • タスクが繰り返し実行される設定となっていること
    • 「毎日」「平日」…と言った感じで繰り返し実行されるスケジュールにしなければなりません
    • これは目標は同じものを継続して設定し、習慣化するためにあるもの、という考えのもとです
      • 以上から、繰り返し実行されることが前提となるプログラムとなっています。

また、このbotは土日を休日と定めているため、その曜日には動作しません。


まとめ

いかがでしたでしょうか?ぶっちゃけこの記事はGASを使ってこんな事ができるよ!そのためにはこんなコードを書くとできるよ!程度のことを語りたいがために書いてる部分があり、実際にこのbotを利用したい!というニーズはあまり考えていない部分があります。反響があれば、コードを改良し、広く使える形にしていけたらなと思います。今のところは個人で利用する限りではこれで満足しているため、無ければやりませんが。

この記事を読んでGASって便利だなーと思った方、是非GASしましょう!

参考

Qiita - GAS から Slack に投稿するシンプルなコード(incoming webhooks)

Qiita - Google Apps Scriptの日毎のトリガーで時間をもっと細かく設定する