gcalcliを使う
私はカレンダー、スケジュール管理として公私共にGoogleカレンダーを使用している。そういう人は多いのではないだろうか。実際にとてもよくできている。仕事関連のタスクはGithub Issue、Confluence、Asanaなど、それぞれのプロジェクトが指定するもの使用しており、個人のタスク管理にはOrg-modeを使用している。それぞれのサービスやツールそれ自体はとてもよくできているが、それぞれの足並みが揃わないのは常々気になっていた。各種サービスやツールが同じような機能を提供し、独自のインターフェースを持っている。私はEmacsを常々使用しているから、独自のインターフェースを強制されると、悲しい気持ちになる。触れるのは私なのに、それを私以外の誰かが強制し、しかもそれが「僕が考えた最強のUI」になっているため、私の求める操作感には全く合わないのだ。それぞれのサービスのUIデザイナーやフロントエンドエンジニアは頑張っているだろうが、どこまで行ってもそれは「僕が考えた最強のUI」であって、それぞれの人に配慮したものにはならない。もし本当に使いやすいUIを目指すなら極端なカスタマイズ性が必要であって、そのデフォルト値としての仮のUIを提供することになる。人が求める操作性というのは、人によって大きく異なるからだ。だが残念ながら、そういった考えで実装されているプロダクトというのは少ない。私はEmacsを起点にして作業を進めたいため、EmacsからGoogleカレンダーに対し、ある程度の操作ができるように、整備を進めていくことにした。
インストール
Google Calendarのコマンドラインインターフェースとして実装されたgcalcliをmacOS上にインストールして使うことにした。
brew install gcalcli
認証
Google認証に必要な以下の値を事前にWebコンソールから準備しておく。
- GOOGLE_OAUTH2_CLIENT_ID
- GOOGLE_OAUTH2_CLIENT_SECRET
認証が済んでいない場合、以下のコマンドを実行するとWebブラウザを開き、Google認証のページにアクセスする。そのページからGoogle認証の手続を進める。
gcalcli --noauth_local_webserver --client-id=GOOGLE_OAUTH2_CLIENT_ID --client-secret=GOOGLE_OAUTH2_CLIENT_SECRET
コンソール上ではコードの入力待ちの状態となる。認証を進めるとコードが発行される。そのコードをコピーし、コンソールに入力することで認証が完了する。
サブコマンド
サブコマンド | 用途 |
---|---|
list | 利用可能なカレンダーを一覧表示する |
search | |
edit | カレンダーの予定を編集する |
delete | |
agenda | 一定期間の議題を取得する |
updates | 特定の期間の日時以降の更新を取得する |
conflicts | |
calw | カレンダー形式で週ベースの議題を取得する |
calm | カレンダー形式で月の議題を取得する |
quick | イベントをカレンダーにすばやく追加する |
add | 詳細なイベントをカレンダーに追加する |
import | ics/vcal ファイルをカレンダーにインポートする |
remind | イベントが <mins> 時間以内に発生した場合にコマンドを実行する |
利用可能なカレンダーの一覧
gcalcli list
今日の予定
gcalcli agenda $(date +'%Y-%m-%dT00:00:00') $(date +'%Y-%m-%dT23:59:59')
Emacs Lisp
;;; calendar-google.el --- Google Calendar for Emacs. -*- lexical-binding: t -*-
;; Copyright (C) 2022 TakesxiSximada
;; Author: TakesxiSximada <[email protected]>
;; Maintainer: TakesxiSximada <[email protected]>
;; Version: 1
;; Package-Version: 20221216.0000
;; Package-Requires: ((emacs "30"))
;; Date: 2022-12-16
;; This file is part of aws cli.el.
;; calendar-google.el is free software: you can redistribute it and/or
;; modify it under the terms of the GNU Affero General Public License as
;; published by the Free Software Foundation, either version 3 of the
;; License, or (at your option) any later version.
;; calendar-google.el is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
;; Affero General Public License for more details.
;; You should have received a copy of the GNU Affero General Public
;; License along with this program. If not, see
;; <https://www.gnu.org/licenses/>.
;;; Code:
;;; Customization
(defun calendar-google ()
(interactive)
(async-shell-command "gcalcli agenda $(date +'%Y-%m-%dT00:00:00') $(date +'%Y-%m-%dT23:59:59') --tsv"))
(provide 'calendar-google)
;;; calendar-google.el ends here