誰がログ

歯切れが悪いのは仕様です。

ZapierでNotionのAPIを試してみた(Google Calendar, OmniFocusとの連携)

はじめに

NotionのAPIが一般ユーザーでも使えるようになりましたので少し試した内容を書いてみます。といっても独力であれこれできるような能力はありませんので,Zapierというサービスを使ってNotionとGoogle Calendar, OmniFocusを連携させてみます。

zapier.com

似たようなサービスではほかにautomate.ioが対応しているのですが,私は今のところあまり良い連携が作れていません。現状でZapierの方が対応サービス・ツールが多いのでいろいろ試しやすいということもあります。一方automate.ioの方はデフォルトで複数のサービス・ツールを組み合わせられるという特徴もあるので,こちらも続けて試してみます。ちなみにIFTTTはまだNotionに対応してないっぽいです。

あ,色々試すにあたって下記の情報をまとめてくれているページが参考になりました。ありがとうございます。

note.com

Notion自体の使用例とどっちを先に書くか迷ったんですが,まずはこちらから。似たような内容の記事がもういろいろ出ていそうではあります。この記事では詳しくは書きませんが,Notionを主に下記の用途に使っています。

  • 会議の記録
  • 研究イベント(学会/研究会など)の記録
  • 指導学生の情報の整理(私は博士,修士,学士で関わる組織が違うので把握がややこしい)
  • 担当授業の情報の整理
  • 日記(起きたことを簡単に記録するタイプ)

Zapierとの連携の手順

NotionとZapierの連携方法については上で紹介したAPIに関する情報のまとめの記事でも紹介されている下記のページが参考になりました。

zapier.com

automate.ioの方はNotionへの連携自体はシンプルで適当にやってできたのですがZapierはけっこう手順が違っていて無理でした。最初からちゃんとやり方を見た方が良かったです(自分を初心者と思っていない初心者あるある)。

私の方でやや要約した手順も下記に書いておきますが,上のページを見ながらやることをおすすめします。英語ですが画像を追っていくだけで大体できてしまうのではないでしょうか。

  1. アプリ版の「Setting & Members」から「Integrations」へ進み下の方にある「Develop your own integrations」をクリック
  2. ブラウザで「My integrations」が開くので「+New integration」ボタンをクリック
  3. integrationに適当な名前を付け(上のページの例では「Zapier bot」)下の方にある「Submit→」ボタンをクリック
  4. 作成したintegrationの情報を表示して「token」の文字列をコピー(これはアプリ版からでも可能)
  5. Zapierで要求されたところにコピーしたtokenの文字列をペーストして登録
  6. Notionで連携させたいページ/データベースを表示させ右上の方にある「Share」をクリック
  7. 「Add ...」とあるボックスをクリックすると詳しい入力画面が開いて「Select an integration」のところに作成したintegrationが表示されているので選択して「Invite」ボタンをクリック

個人的には6以降のデータベースに対して連携の手順を踏む必要もあるというところがポイントかと思います。これをやらないと5までの手順を終えてもZapierでNotionからの情報を使うことができないようです。ちなみにautomate.ioではぜんぶ一連の手順の中でまとめてやるので操作としてはシンプルに感じます。

なお,6, 7のShareの操作は適用させたページ/データベースに含まれるページ/データベースにも自動的に適用されますので,まとめてやりたい場合はできるだけ上位のページ/データベースを対象にして設定すると良いです。「Personal Wiki」みたいなまとめ用のページにほかのページ/データベースを入れる構造で作ってあると一発で全部設定できるので楽ですね。

使用例

会議と研究イベントの記録に下記の有料テンプレートを使っていて,この後紹介する2つの例はいずれもこのテンプレートを使う上で前からできないかなと考えていたことでした。これでいくつか手間が減らせて楽になりました。

store.biz-notion.northsand.co.jp

なお,Zapierの設定方法についてはほかに分かりやすいページがあると思いますのでここで詳しくは書きません。いろいろ検索してみてください。Zapier自体はたぶんまだ日本語化されていないと思いますが,かなり直感的にやってできてしまうと思います。

NotionからGoogle Calendarに予定を登録

Notionにもカレンダー表示があるのですが,スケジュール管理用にはやはりGoogle Calendarが便利で今のところ完全移行はちょっと無理そうですかね。いちおうNotionの方にGoogle Calendarを埋め込むことはできるのですが双方向型での編集はまだできなかったはず。

一方で会議や研究イベントの記録用のページに入力するpropertyは次のようになっていてカレンダーに登録したい情報とかなりかぶるので,両方ちゃんとやるとかなり二度手間感がありました(サンプルなので内容は適当です)。

会議ページのプロパティのサンプル画像
会議ページのproperty(サンプル)

というわけで,Notionに会議や研究イベントの記録の準備としてページを追加したらその情報を元にGoogle Calendarに予定が登録される連携(Zap)を作ります。Zapierが提案してくれるNotionの活用例で「Generate detailed events in Google Calendar from new Notion database items」というのが出てくるのでそれをそのまま使います。

Notionで紐付けたいデータベースを選択するとかGoogleカレンダーのアカウントやカレンダーを選択する辺りは説明不要だと思いますので,どういう情報を対応させているかということを簡単にリストしておきます(Google Calendar側の設定)。

  1. Summary:これがカレンダーに登録される予定のタイトルになるので分かりやすいやつを選びます。私の場合は会議やイベントの名称(上記スクショでは名前が分かりにくいのですが一番上に大きく出ている「タイトル」というproperty)
  2. Location:場所の情報。私は「Zoom」みたいな場所のタイプと「○○会議室」みたいな細かい場所の情報2つをpropertyとして登録しているので,その2つとも登録します(複数登録できます)。
  3. Start/End Date & Time:カレンダーへの登録ではこれが一番重要な情報でしょうか。Dateタイプのproperty(私の上の例では「日付」となっているもの)からはちゃんと「Start」と「End」別々の情報が利用できるようになっているのでそれぞれ対応するように設定します。テスト用のデータに情報があれば迷うことはない…はず。
  4. ほかにも,たとえばZoomのmeeting urlや関連urlの情報をメモに入れるようにすると便利かもしれません。

ほかにもいろいろ設定できる項目がありますし,利用するNotionの情報を選択するだけでなく任意のテキストを追加したりもできますので人や用途に合わせていろいろ使い道がありそうです。

逆(Google Calendar → Notion)もできます。ただ私の使い方だとNotionに登録する会議やイベントは必ずGoogle Calendarでも見たい(くらい重要)なのに対して,Google Calendarの方で仕事用のカレンダーに登録する予定は必ずしもすべて記録を取りたいものばかりではない(5分で終わるサインだけのアポとかも含まれる)ので,この形の非対称性がちょうど良いです。

NotionからOmniFocusにタスクを登録

上で紹介した会議録テンプレートではタスクのデータベースに直接タスクを登録するセクションが設けてあります(スクショだと最下部,こちらもサンプルなので内容は適当です)。

会議録から登録できるタスクのサンプル画像
会議録から登録できるタスク(サンプル)

私の仕事/生活ではNotionにタスク管理を一元化するのはまだ厳しいので,このタスクのデータベースに入力した内容をOmniFocusに自動登録する連携を作ります。OmniFocusのようなさまざまなサービス・ツールに対応しているのはZapierのすごいところですね。

ただ,せっかくNotionの方でいろいろ使えるpropertyがあってもOmniFocusにあまり細かい情報を登録できないようなんですよ。なので下記のような対応にしました。あ,選択肢がほとんどないので迷わないと思いますがNotionの方のTriggerは「New Database Item」に,OmniFocusの方のActionは「Create Task」にします。

  1. Title:タスクの名称。OmniFocusの方の設定で締切が自動的に設定できないので,Notionの方の「タスク名」と「期限」の情報を両方こちらに入れます(必要があればOmniFocusの方で期限等を設定する)。
  2. Note:「メモ」の情報が入るようにする。

試しにOmniFocusじゃなくてTodoistで似たようなことやってみたら期限(Due Date)などほかにいろいろな項目が設定できそうでした。そういう場合は「期限」の情報をNotionから流せば良いですね。OmniFocusも対応しないかな…

結果

両方とも紹介したやり方でそれぞれGoogle Calendar, OmniFocusへの自動登録ができました。

けっこう感心したのは(仕組みを知っている人には当たり前なのかもしれませんが)Notionの方のpropertyはtextだけでなく,selectやmulti-selectのやつもちゃんとその内容が登録されるんですよ。たとえば,会議の会場でselect情報の「Zoom」がGoogle Calendarの場所に「Zoom」と登録されます。

雑感

ここで紹介している例だと予定を予定として,タスクをタスクとして登録しなおしているだけなので何が嬉しいのか微妙に見えますね。元々のNotionの方の使用例抜きなのでしかたないところですが,あくまで参考ということで。

Twitterでもちょっとツイートしたのですが,Notionの方で個々の情報を「予定」とか「タスク」のように分類しているわけではなくて,すべてデータベースの項目として扱ってそこにさまざまなpropertyを付けられるって構成になっているので,連携先のサービス・ツールが対応してさえいればNotionの方の豊富な情報を参照できていろいろ柔軟な使い方ができそうだなと感じました。上記例もまだまだ試行錯誤の段階ですので今後もいろいろ試してみます。

追記(2021/05/16)

なんか設定しなくてもうまくいってるような気もしたのですが,日付や時間に関する情報を使う場合は特にZapierの方でタイムゾーンの設定はしておいた方が良いかと思います。