小技チョコレート

ちょっとした小技を紹介するだけのブログです。

Dynalistに日付や任意のテキストを定期的に記入する方法

Dynalistに、日付や任意のテキストを、定期的かつ自動で書き込む方法を紹介します。


〈目次〉


機能

Dynalistの特定の位置に、日付や任意のテキストを、定期的かつ自動で記入します。
記入される日付はJuly 01, 2020 at 12:00AMというスタイルです。
記入される内容は「日付のみ」や「任意のテキストのみ」も可能です。

記入を実行するタイミングは、下記の5種類の中から選べます。
「時刻」は必ず15分単位で指定しなければなりません(x時00分 or 15分 or 30分 or 45分という指定のしかた)。

  1. 毎日の特定の時刻(例:毎日8時30分)
  2. 毎時の特定の時刻(例:毎時00分)
  3. 毎週の特定の曜日の、特定の時刻(例:毎週月曜日の13時00分とか、毎週月曜から金曜の18時30分など)
  4. 毎月の特定の日の、特定の時刻(例:毎月10日の9時45分)
  5. 毎年の特定の日の、特定の時刻(例:毎年3月1日の15時00分)

1回の記入内容が、Dynalistにおける1行(=1項目)として書き込まれます。途中での改行はできません。
Markdownが使用できます。
Dynalistにおける書き込み位置は、「特定の項目(行)の直下の階層」という形で任意に決めることができます。DynalistのInboxに書き込むこともできます。
また、その書き込み位置(階層)において「先頭」に記入するか「末尾」に記入するかを選択できます。

サンプル

実際にDynalistに書き込まれた状態のサンプルです。
2通りのスタイルを試したものです。

f:id:ichbin:20200703090138p:plain

1行目は、日付のみを記入したものです。
2行目は、日付の左右にハイフン------を加えて、区切り線のような外観を作ったものです。

必要なもの

  • IFTTTのアカウント(無料)

下準備

IFTTTのアカウント作成

IFTTTのアカウントを持っていない場合は、アカウントを作ります。
https://ifttt.com/ にアクセスし、右上のSign upをクリックしてアカウントを作ります。

f:id:ichbin:20200611133001p:plain

この部分の詳しい説明は割愛します。

タイムゾーンの指定

地球上のどの地域の標準時を適用するかを指定します。

IFTTTにログインしたうえで、ブラウザで https://ifttt.com/settings を開き、ページの中ほどにあるTime Zoneの選択欄で、タイムゾーンを指定します。

f:id:ichbin:20200701093054p:plain

日本の標準時を使う場合は(+09:00) Tokyo(+09:00) Osaka(+09:00) Sapporoを選択します(3つのどれを選んでも同じだと思います)。

選択したら、画面の下のほうにあるUpdateのボタンを押します。*1

DynalistのSecret tokenをコピー

Dynalistにログインしたうえで、Developer - Dynalistをウェブブラウザで開き、“Your API secret token is: ”の下に表示されている長い文字列をコピーします(下記の画像でボカしている部分です)。

f:id:ichbin:20190804143052p:plain

この文字列を「シークレットトーク」としてメモしておきます。のちの工程で使います。
この文字列を、他人が読める状態にしないようご注意ください。

設定内容の作成

これ以降の工程は、Dynalistにおける書き込み位置を「DynalistのInbox」にする場合と、「Inboxではない特定の位置」にする場合とで、やるべきことが異なります。

書き込み位置をInboxにする場合は、「こちら」の節の内容を実行します。
書き込み位置を「Inboxではない特定の位置」にする場合は、「こちら」の節の内容を実行します。

書き込み位置をInboxにする場合

DynalistにおいてInboxの位置をまだ指定していない場合は、こちらの要領で指定します。

リクエストボディの作成

のちの工程でIFTTTに入力するために必要な文字列(JSON形式)をここで作成します。

テキストエディタに下記の文字列をペーストします。

{"token": "YOUR_SECRET_TOKEN", "index": -1, "content": "YOUR_CONTENT"}

Secret tokenの記入
この文字列のYOUR_SECRET_TOKENの部分を、上述の「シークレットトークン」(Dynalistのページからコピーした長い文字列)で置き換えます。

Inbox内での書き込み位置(先頭または末尾)の選択
例えば、Dynalistの階層構造が下記のようになっていて、AがInboxである場合には、その下位(B, C, Dが属する階層)に書き込まれるわけですが、この階層の先頭(Bの位置)に書き込むか、それとも末尾(Dの位置)に書き込むか、を決めます。

f:id:ichbin:20200703090213p:plain

上述の文字列の最後の方に"index": -1,という箇所があります。ここの数字はデフォルトでは-1となっています。

デフォルトのままにしておくと、末尾(この例ではDの位置)に書き込まれます。

それとは逆に、先頭(この例ではBの位置)に記入したい場合は、"index": -1,"index": 0,に書き換えます。

書き込む内容の指定
Dynalistに書き込む内容(コンテンツ)を指定します。

書き込むことができるのは下記の2つです。

  • 書き込みを実行した日時:{{CheckTime}}
  • 任意のテキスト

{{CheckTime}}や任意のテキストを、上述の文字列の末尾のほうにあるYOUR_CONTENTのところに記入します。

記入する順番や個数は自由ですので、必要なものだけを任意の順番で並べてかまいません。

例えば、「書き込みを実行した日時」と「#定時」という任意のテキストを記入すれば、このようになります。

(例)"content": "{{CheckTime}} #定時"}

ここではMarkdownも使えるので、例えばこのような修飾も可能です。*2

  • 日時を太字で強調:**{{CheckTime}}**
  • 日時と任意のURLをMarkdown形式で記入:[{{CheckTime}}](https://www.yahoo.co.jp/)

半角のクォーテーションそのもの("')をDynalistに記入したい場合は、その箇所を<<<>>>で囲まなければなりません(エスケープ)。*3

(例)日時を"で囲みたい場合:"content": "<<<"{{CheckTime}}">>> #定時"}
Dynalistでの表示例:"July 01, 2020 at 12:00AM" #定時

「任意のテキスト」に半角クォーテーションが含まれる場合は、その半角クォーテーションを必ず<<<>>>で囲んでおきます。

すべて記入し終えたら、このような文字列になります(例)。

{"token": "(シークレットトークンを書く)", "index": -1, "content": "{{CheckTime}}"}

この出来あがった文字列を「リクエストボディ」としてメモしておきます。

次に、「IFTTTの設定の手順」の節へ進みます。

書き込み位置を「Inboxではない特定の位置」にする場合

Dynalistの「ドキュメントのid」と「親ノードのid」を取得

書き込みたい位置を、Dynalistにおいて決めて、「その位置の1階層上位」に相当する行に"Zoom in"(虫眼鏡アイコンをクリックするか、もしくはショートカットキー:Ctrl + ]またはCmd + ])します。

たとえば、下記のCの位置に書き込みたい場合は、「その位置の1階層上位」はBですから、Bの行に"Zoom in"します。

f:id:ichbin:20200611094833p:plain

この例でBに"Zoom in"するとこのようになります。

f:id:ichbin:20200611095137p:plain

このときのURLをコピーします。

f:id:ichbin:20200611095712p:plain

コピーしたURLは、このような形になっているはずです(/d/以降の文字列は、アカウントや位置に応じて異なります)。

https://dynalist.io/d/KWJ-NGiPfpbDyjX4fPiJxYK9#z=UB0ufX752rHot23sU-4-uGIP

このURLから、文字列を2個切り出します(下記の赤線部分と青線部分)。

f:id:ichbin:20200611100505p:plain

赤線部分(/d/以降から#z=以前までの部分)は、この例ではKWJ-NGiPfpbDyjX4fPiJxYK9です。この文字列を「ドキュメントのid」としてメモしておきます。

青線部分(#z=よりも後ろの部分)は、この例ではUB0ufX752rHot23sU-4-uGIPです。この文字列を「親ノードのid」としてメモしておきます。

この2個の文字列は、後の工程で使います。

リクエストボディの作成

のちの工程でIFTTTに入力するために必要な文字列(JSON形式)をここで作成しておきます。

テキストエディタに下記の文字列をペーストします。

{"token": "YOUR_SECRET_TOKEN", "file_id": "YOUR_DOCUMENT_ID", "changes": [{"action": "insert", "parent_id": "YOUR_PARENT_NODE_ID", "index": -1, "content": "YOUR_CONTENT"}]}

Secret tokenなどの記入
この文字列のYOUR_SECRET_TOKENの部分を、上述の「シークレットトークン」(Dynalistのページからコピーした長い文字列)で置き換えます。

同様に、YOUR_DOCUMENT_IDは上述の「ドキュメントのid」で置き換えます。

YOUR_PARENT_NODE_IDは上述の「親ノードのid」で置き換えます。

指定した階層内での書き込み位置(先頭または末尾)の選択
例えば、Dynalistの階層構造が下記のようになっており、Bの下位(C, C2, C3の階層)に書き込みたい場合、この階層の先頭(Cの位置)に書き込むか、それとも末尾(C3の位置)に書き込むか、を決めます。

f:id:ichbin:20200703100949p:plain

上述の文字列の最後の方に"index": -1,という箇所があります。ここの数字はデフォルトでは-1となっています。

デフォルトのままにしておくと、末尾(この例ではC3の位置)に書き込まれます。

それとは逆に、先頭(この例ではCの位置)に記入したい場合は、"index": -1,"index": 0,に書き換えます。

書き込む内容の指定
Dynalistに書き込む内容(コンテンツ)を指定します。

書き込むことができるのは下記の2つです。

  • 書き込みを実行した日時:{{CheckTime}}
  • 任意のテキスト

{{CheckTime}}や任意のテキストを、上述の文字列の末尾のほうにあるYOUR_CONTENTのところに記入します。

記入する順番や個数は自由ですので、必要なものだけを任意の順番で並べてかまいません。

例えば、「書き込みを実行した日時」と「#定時」という任意のテキストを記入すれば、このようになります。

(例)"content": "{{CheckTime}} #定時"}]}

ここではMarkdownも使えるので、例えばこのような修飾も可能です。*4

  • 日時を太字で強調:**{{CheckTime}}**
  • 日時と任意のURLをMarkdown形式で記入:[{{CheckTime}}](https://www.yahoo.co.jp/)

半角のクォーテーションそのもの("')をDynalistに記入したい場合は、その箇所を<<<>>>で囲まなければなりません(エスケープ)。*5

(例)日時を"で囲みたい場合:"content": "<<<"{{CheckTime}}">>> #定時"}]}
Dynalistでの表示例:"July 01, 2020 at 12:00AM" #定時

「任意のテキスト」に半角クォーテーションが含まれる場合は、その半角クォーテーションを必ず<<<>>>で囲んでおきます。

すべて記入し終えたら、このような文字列になります(例)。

{"token": "(シークレットトークンを書く)", "file_id": "(ドキュメントのidを書く)", "changes": [{"action": "insert", "parent_id": "(親ノードのidを書く)", "index": -1, "content": "{{CheckTime}}"}]}

この出来あがった文字列を「リクエストボディ」としてメモしておきます。

IFTTTの設定の手順

ブラウザでIFTTTにログインしたうえで https://ifttt.com/create をブラウザで開き、画面中央の“This”をクリック。

f:id:ichbin:20200611101749p:plain

次の画面で、上部の検索フォームにdateと入力。
すると、Date & Timeという黒いアイコンが表示されるので、それをクリック。

f:id:ichbin:20200703090134p:plain

このような画面になります。黒い四角形が5つあります。

f:id:ichbin:20200703090148p:plain

この5つの四角形のそれぞれは、下記の5種類の「Dynalistへの記入のタイミング」に対応しています。
この5つのうちから、自分の記入させたいタイミングに該当するものを、この画面において選択(クリック)します。

  1. 毎日の特定の時刻:Every day at
  2. 毎時の特定の時刻:Every hour at
  3. 毎週の特定の曜日の、特定の時刻:Every day of the week at
  4. 毎月の特定の日の、特定の時刻:Every month on the
  5. 毎年の特定の日の、特定の時刻:Every year on

次の画面で、タイミングを具体的に指定します。

曜日/日/月の指定の仕方については、詳しい説明は割愛します(選択欄で1つずつ選ぶだけです)。

時刻(x時y分)の指定の仕方は、次のとおりです。

選択欄がこのように2つあります。上側のものが「x時」を指定する欄であり、下側のものが「y分」を指定する欄です。この2つを組み合わせて、「x時y分」という形で時刻を指定します。

f:id:ichbin:20200703090121p:plain

なお、12 AM12am)というのは真夜中の0時(日付が変わる時刻)を意味しています。
また、12 PM12pm)は正午の0時を意味しています。
※「12 AM」と「12 PM」の表す意味が、日常の感覚とは逆であることにご注意ください。「12 AM=午前12時=正午」と見なすのは誤りです。12 PMの場合も同様です。

例えば、0時00分(真夜中の0時)を指定したい場合は、12 AM00 Minutesを選択します。
正午ちょうどを指定したい場合は、12 PM00 Minutesを選択します。 午後9時30分なら09 PM30 Minutesとなります。

選択し終えたら、Create triggerをクリック。

次の画面に変わります。
“That”をクリック。

f:id:ichbin:20200703090126p:plain

次の画面で、上部の検索フォームにwebhooksと入力し、その下に表示された青いアイコンをクリックします。

f:id:ichbin:20200603133153p:plain

Make a web requestというタイトルの青い四角をクリック。

f:id:ichbin:20200603133118p:plain

この画面に変わります。

f:id:ichbin:20200617155435p:plain

冒頭のところに、URLというタイトルの入力欄があります。

Dynalistでの書き込み位置をInboxにする場合は、この欄には

https://dynalist.io/api/v1/inbox/add

と入力します。

書き込み位置を「Inboxではない特定の位置」にする場合は、

https://dynalist.io/api/v1/doc/edit

と入力します。

Methodの選択欄ではPOSTを選択します。

f:id:ichbin:20200617162055p:plain

Content Typeの選択欄ではapplication/jsonを選択します。

f:id:ichbin:20200603133251p:plain

Bodyの入力欄には、上述の工程で作成しておいた「リクエストボディ」、すなわち、

  • 書き込み位置がInboxの場合
    {"token": "(シークレットトークンを書く)", "index": -1, "content": "(書き込みたいコンテンツを書く)"}
  • 書き込み位置がInboxではない場合
    {"token": "(シークレットトークンを書く)", "file_id": "(ドキュメントのidを書く)", "changes": [{"action": "insert", "parent_id": "(親ノードのidを書く)", "index": -1, "content": "(書き込みたいコンテンツを書く)"}]}

の中身を適宜書き換えてできた文字列を入力します。

入力するとこのようになります。

f:id:ichbin:20200703090209p:plain
(書き込み位置がInboxでないの場合の一例)

ここまでできたら、一番下にあるCreate actionをクリック。

f:id:ichbin:20200617155918p:plain

入力内容に問題がなければ、このような画面になります。*6

f:id:ichbin:20200703090130p:plain

中央の入力欄には、機能の概要が書かれています。この文章は自分用の説明文ですので、もし書き換えたければ自由に編集できます。

その下にあるReceive notifications when this Applet runsのスイッチをオンにしておくと、Dynalistへの記入が行われるたびに、IFTTTのiOSアプリやAndroidアプリをインストールしてある端末(スマートフォン等)に通知が来ます。

最後に、Finishのボタンをクリックします。

すると、この画面になります。

f:id:ichbin:20200703090143p:plain

ここまで済めば、ブラウザは閉じてもかまいません。

以降は、上述の工程で指定しておいた時刻になるたびに、その日付・時刻や任意のテキストが自動でDynalistに記入されていきます。

Dynalistへの記入を停止 / 再開する方法

ブラウザでIFTTTにログインしたうえで https://ifttt.com/my_applets をブラウザで開くと、上述の工程で作った設定が、青い四角形で表示されているので、これをクリック。

f:id:ichbin:20200703090156p:plain

次の画面で、下の方にあるConnectedという文字をクリックすると、Disconnecting→Connectという表示に変わります。
この部分がConnectになっている間は、Dynalistへの記入が停まっています。

f:id:ichbin:20200703090220p:plain
(記入が停止している状態)

Dynalistへの記入を再開したい場合は、それとは逆に、Connectのところをクリックします。
すると、Connecting Webhooks→Connectedという表示に変わります。
この部分がConnectedになれば、Dynalistへの記入が再開します。

f:id:ichbin:20200703090216p:plain
(記入が再開している状態)

カスタマイズ

Dynalistに書き込むタイミングを変更する方法

「機能」の節にも挙げてありますが、Dynalistへの記入のタイミングは下記の5種類があります。
ここでは他の「種類」に変更することはできません(2を3に変えるというような変更はできない)。
同一の「種類」において、曜日/日/月/時刻を変更できるだけです。

  1. 毎日の特定の時刻
  2. 毎時の特定の時刻
  3. 毎週の特定の曜日の、特定の時刻
  4. 毎月の特定の日の、特定の時刻
  5. 毎年の特定の日の、特定の時刻

ブラウザでIFTTTにログインしたうえで https://ifttt.com/my_applets をブラウザで開くと、上述の工程で作った設定が、青い四角形で表示されているので、これをクリック。

f:id:ichbin:20200703090156p:plain

次の画面で、右上のSettingsをクリック。

f:id:ichbin:20200703090201p:plain

次の画面を下の方にスクロールしていくと、曜日/日/月/時刻を選ぶ選択欄があります。

ここで新しいタイミングを選択して、画面の下の方にあるSaveのボタンを押すと、下記の画面に変わります。そのようになれば、変更が適用されています。*7

f:id:ichbin:20200703090143p:plain

Dynalistに書き込む内容を変更する方法

ブラウザでIFTTTにログインしたうえで https://ifttt.com/my_applets をブラウザで開くと、上述の工程で作った設定が、青い四角形で表示されているので、これをクリック。

f:id:ichbin:20200703090156p:plain

次の画面で、右上のSettingsをクリック。

f:id:ichbin:20200703090201p:plain

次の画面を下の方にスクロールしていくと、Body(optional)という入力欄があります。
ここには、上述の工程で入力した「リクエストボディ」が入力されています。

f:id:ichbin:20200703090116p:plain

この欄に入力されている文字列の末尾のところを書き換えます。
書き方は、上述の手順説明(書き込み位置がInboxである場合 / 書き込み位置がInboxでない場合)を参照して下さい。

そしてページの一番下にあるSaveのボタンを押すと、下記の画面に変わります。そのようになれば、変更が適用されています。*8

f:id:ichbin:20200703090143p:plain

Dynalistでの書き込み位置を変更する方法

DynalistのInboxに書き込むように変更する

ブラウザでIFTTTにログインしたうえで https://ifttt.com/my_applets をブラウザで開くと、上述の工程で作った設定が、青い四角形で表示されているので、これをクリック。

f:id:ichbin:20200703090156p:plain

次の画面で、右上のSettingsをクリック。

f:id:ichbin:20200703090201p:plain

次の画面で、書き込み位置を変更します。

f:id:ichbin:20200703090152p:plain

この画面の下の方にある、URLというタイトルの入力欄の内容を消し、こちらの文字列を入力します。

https://dynalist.io/api/v1/inbox/add

次に、Body(optional)というタイトルの入力欄に入力されている内容を消し、上述の手順に従って新たな「リクエストボディ」を作って、それをBody(optional)の欄に入力します。

なお、Dynalistのアカウントも変える場合は、「リクエストボディ」の中の「シークレットトークン」も、新しいものに書き換える必要があります。

  • "token": "hogehoge"

それらを書き換え、ページの一番下にあるSaveのボタンを押すと、下記の画面に変わります。そのようになれば、変更が適用されています。*9

f:id:ichbin:20200703090143p:plain

「Inboxではない別の位置」に書き込むように変更する

ブラウザでIFTTTにログインしたうえで https://ifttt.com/my_applets をブラウザで開くと、上述の工程で作った設定が、青い四角形で表示されているので、これをクリック。

f:id:ichbin:20200703090156p:plain

次の画面で、右上のSettingsをクリック。

f:id:ichbin:20200703090201p:plain

次の画面を下にスクロールしていくと、Body(optional)というタイトルの入力欄があります。

f:id:ichbin:20200703090116p:plain

この入力欄の内容における、

  • 「ドキュメントのid」:"file_id": "hogehoge"
  • 「親ノードのid」:"parent_id": "fugafuga"

の2箇所を、上述の要領に従って、新しい「ドキュメントのid」と「親ノードのid」に書き換えます。

なお、Dynalistのアカウントも変える場合は、「シークレットトークン」も、新しいものに書き換える必要があります。

  • "token": "hogehoge"

それらを書き換え、ページの一番下にあるSaveのボタンを押すと、下記の画面に変わります。そのようになれば、変更が適用されています。*10

f:id:ichbin:20200703090143p:plain

タイムゾーンを変更する方法

上述の選択欄で新しいタイムゾーンを選択し、画面の下の方にあるUpdateのボタンを押します。*11

Dynalistへの書き込みが正しく行われないときのチェックポイント

「リクエストボディ」を正しく作成できているか見直す

書き込み位置がInboxである場合 / 書き込み位置がInboxでない場合のそれぞれに応じて、リクエストボディが正しく作成できているか見直し、訂正する必要があれば、新しいリクエストボディを下記の手順で設定画面から入力し直します。

設定画面への入力内容を見直す

上述の手順説明のとおりに入力されているかを確認します。

設定画面の開き方は下記のとおりです。

ブラウザでIFTTTにログインしたうえで https://ifttt.com/my_applets をブラウザで開くと、上述の工程で作った設定が、青い四角形で表示されているので、これをクリック。

f:id:ichbin:20200703090156p:plain

次の画面で、右上のSettingsをクリック。

f:id:ichbin:20200703090201p:plain

その次の画面が設定画面です。

エスケープしてみる

上述の手順で設定画面を開くと、Body(optional)という入力欄の末尾のほうに、「任意のテキスト」が入力されている場合があると思いますが、それを半角の<<<>>>で囲んでいないと、Dynalistへの書き込みが正しく行われない場合があるようです。
おそらく、「任意のテキスト」に半角のクォーテーション("')が含まれているときは、それに該当しています(他の文字が原因の場合もあるかもしれません)。

それらの文字を<<<>>>で囲む(エスケープする)ことで、Dynalistへの記入が正しくおこなわれるようになる可能性があります。

エスケープに関する上述の手順説明(書き込み位置がInboxの場合 / 書き込み位置がInboxでない場合)も参考にしてください。

参考資料

IFTTTの設定画面への入力内容を作るうえで、Dynalistのこちらの資料が参考になります。

*1:IFTTTのスマートフォン用アプリを使ってこの画面を開いている場合は、ボタンの名前は「Save」かもしれません。

*2:HTMLタグは、ここに記入すると正しく動作しないようです。

*3:IFTTTのサイト上では、エスケープさせたい箇所を「不等号2個ずつ」で囲めという指示がありますが、3個ずつで囲むのが正しいようです。

*4:HTMLタグは、ここに記入すると正しく動作しないようです。

*5:IFTTTのサイト上では、エスケープさせたい箇所を「不等号2個ずつ」で囲めという指示がありますが、3個ずつで囲むのが正しいようです。

*6:入力内容に問題がある場合は、画面が切り替わらず、「問題のある箇所」に赤字でエラーメッセージが出ます。

*7:Saveのボタンを押しても画面が切り替わらない場合は、入力内容に問題があり、エラーが赤字でページ内に表示されます。

*8:Saveのボタンを押しても画面が切り替わらない場合は、入力内容に問題があり、エラーが赤字でページ内に表示されます。

*9:Saveのボタンを押しても画面が切り替わらない場合は、入力内容に問題があり、エラーが赤字でページ内に表示されます。

*10:Saveのボタンを押しても画面が切り替わらない場合は、入力内容に問題があり、エラーが赤字でページ内に表示されます。

*11:IFTTTのスマートフォン用アプリでこの画面を開いている場合は、ボタンの名前は「Save」かもしれません。