小技チョコレート

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

Dynalistからプレーンテキスト形式でエクスポートした内容をScrapbox記法に置換するUserScript

Dynalistからプレーンテキスト形式でエクスポートした内容をScrapbox記法に置換するUserScript(dy2sc.js)を作ったので、コードと使い方を書いておきます。

コードは更新されることがあります(更新履歴)。


〈目次〉


機能

概要

Dynalistの内容をプレーンテキスト形式でエクスポートし、それをScrapboxにペーストしてからマウスでドラッグし、ボタンを1回クリックすると、そこに含まれているMarkdownや、Dynalistの独自記法をScrapbox記法に置換します。Dynalistにおける階層も再現されます。


(Dynalistのコンテンツ)


(DynalistのコンテンツをScrapboxにペーストし、範囲選択して“Dynalist"ボタンを押す)


Scrapbox記法に置換された状態)

置換できるもの/できないもののリスト

全てのMarkdownやDynalistの独自記法を完全にScrapbox記法へ置換できるわけではなく、置換できないものも存在します。置換できるもの/できないものの詳しいリストは下記のとおりです。

置換できるもの
  • リンク
    • [リンクテキスト](URL)[リンクテキスト URL]
    • [](URL)[URL]
  • 画像
    • ![リンクテキスト](画像のURL)[リンクテキスト 画像のURL]*1
    • ![](画像のURL)[画像のURL]
  • 強調を太字へ置換(**hoge**[* hoge]
  • イタリック(__hoge__[/ hoge]
  • 取り消し線(~~hoge~~[- hoge]
  • ハイライトを太字へ置換(==hoge==[* hoge]
  • 日時記法
    • !(2019-09-08)2019-09-08
    • !(2019-09-08 10:00)2019-09-08 10:00
    • !(2020-03-02 - 2020-03-10)2020-03-02 - 2020-03-10
    • !(2020-03-03 01:00 - 2020-03-06 01:00)2020-03-03 01:00 - 2020-03-06 01:00
  • ハッシュタグ用の@#へ置換(@hoge#hoge
  • 数式をTexへ置換($$E=mc^2$$[$ E=mc^2]
  • コードブロック記法をScrapboxコード記法へ置換(```hoge```→`hoge`)
  • 余分なインデントを除去(Dynalistでは階層が1段下がるごとにインデントが4個ずつ付くので、これをインデント1個ずつに置換)*2

なお、Dynalistのコード記法(`hoge`)および、#を用いたハッシュタグ#hoge)は、Scrapboxでもそれらと同一の書き方をしますので、元通りに再現されます。

置換できないもの
  • Scrapboxのページタイトルに含まれているMarkdownや、同じくページタイトルに含まれているDynalistの独自記法(ただし、ちょっとした工夫を加えれば解決します)。
    • Dynalistからエクスポートしたテキストの1行目がこれに相当します。
  • Dynalistにおいて見出し(H1, H2, H3)の状態にある項目(Ctrl+Shift+Hを押した行)は、Dynalistではフォントサイズが大きくなっていますが、そのサイズ変更は再現されません。
  • カラーラベル(Dynalistで特定の行にのみ使用している背景色)は再現されません。
  • Dynalistでチェック(Check off)した項目(hogeのように表示されているもの=Ctrl+Enterを押した行)そのものは消さずに引き継ぐことができますが、この項目のフォントカラーの変更(色が薄くなっていること)と、同項目に付けられている取り消し線は再現されません。
    • Dynalistのcheckbox(行頭に付けることができるチェック機能)にチェックを入れた項目も、これに該当します。
    • それらの取り消し線をScrapboxで再現するには別の方法を利用して下さい。
  • Dynalistのcheckbox(行頭に付けることができるチェック機能)は再現されません。
  • Dynalistの1項目(1行)の内部で改行してある場合(Ctrl+Shift+Enterを押してある場合)は、その項目における改行以降の部分には、階層の深さが引き継がれません。他の項目の階層は正しく再現されます。
  • Dynalistのnoteに記入したものは、Dynalistにおけるスタイル(小さいフォントで各項目の下側に付いている状態)がScrapboxに引き継がれず、独立の1項目(1行)に置き換えられます。

その他の、仕様上どうしても実現できないことなどを「既知の問題点」の節にまとめています。細かいことなので、詳しく知りたい場合はお読み下さい。

他のツールとの機能比較も参考にしてください。

導入のしかた

こちらのヘルプに書かれている手順で、ScrapboxのUserScriptをEnableにします。

次に、Scrapboxの「自分のページ」を開き、code:script.jsと記入します。その下の行にdy2sc.jsのコードをペーストします。全体で約40行あります。


dy2sc.jsのコード

そしてブラウザをリロードし、Scrapboxの上部に表示される“Load new UserScript”をクリックします。

ペーストした部分はこのようになっているはずです(行頭のインデントの数は、この画像のとおりでなくても構いません)。


dy2sc.jsをUserScriptとして導入した状態のサンプル

これで完了です。

使い方

Dynalistにこのような内容があるとき、これをScrapbox記法に置換する、という例を示します。


(この例では1行の中にMarkdownやDynalistの独自記法が1つずつあるだけですが、複数個ある場合も正しく置換できます。)

Dynalistからエクスポートしたい内容の、最上位の行の行頭にマウスポインタを合わせると、「≡」の形のアイコンが表示されるので、それをクリック。

すると、メニューが開くので、その中の“Export...”をクリック。

このような画面が開きます。

中央上部の“Plain text”をマウスで選択し、下の方にある“Indentation style”のところで“Spaces”を選択しておきます(通常は何もしなくても“Spaces”が選択されていると思います)。

そして“Copy to clipboard”のボタンを押すか、もしくは、中央の入力欄の内容を選択した状態でCtrl + Cなどと操作して、この入力欄の内容をクリップボードにコピーします。

それをScrapboxの新規ページや既存のページに貼り付けます。


(エクスポートしたテキストをそのまま貼り付けた状態)

エクスポートしたテキストのうち、ページタイトルを除いた部分をマウスで選択します。
すると、“Dynalist”という名前のボタンが表示されます。


(ページタイトルより下側をマウスで選択した状態)

“Dynalist"のボタンを押すと、このように置換されます。


Texのところで行頭のマーカー(・)が見えなくなっているのはScrapboxの仕様です)

置換を元に戻す方法

置換後にCtrl + Zのショートカットキーを押せば、置換前の状態に戻ります。

ただし、そのページを閉じた後や、別のページに移動した後では、そのショートカットキーを押しても元に戻せません。

ページタイトルを置換対象に含める方法

上掲のとおり、Scrapboxのページタイトル部分は、このUserScriptでの置換対象に含めることができません。


(ページタイトルまで選択範囲に含めると、置換操作のための“Dynalist”ボタンが出ない)

この問題は、次のような小さな工夫で解決します。

DynalistからエクスポートしたテキストをScrapboxに貼り付ける際に、Scrapboxページの1行目(すなわちページタイトルの位置)に貼り付けるのではなく、2行目以降の位置に貼り付けます。そうすれば、全体をUserScriptの置換対象に含めることができます。置換が終わった後で、本来ページタイトルになるべきだった行を、ページタイトルの位置まで上げてやれば完了です。


(ページタイトルよりも下の行に貼り付ければ、全体が置換対象に入る)

〈Dynalistに存在しているが画面上で見えていないもの〉をエクスポート対象から除外する方法

Dynalistにおいて「存在はしているけれども画面上で見えていないもの」を、エクスポート対象に含めないようにすることができます。詳細は別の記事をご覧ください。

カスタマイズ

「画像へのリンク」にはリンクテキストを付けないように変更する

置換元(Dynalist)においては、![リンクテキスト](画像のURL)という書き方をすれば、その位置に画像が表示されます。
それを本記事のUserScriptでScrapbox記法に置換すると、[リンクテキスト 画像のURL]というScrapbox記法になります。そのままだと、Scrapboxページ上では、その「リンクテキスト」すなわち文字のほうだけが画面上に表示され、画像は画面上に現れません。

例えば、Dynalistに![logo](https://scrapbox.io/assets/img/logo.png)という箇所がある場合には、次のようになります。

![logo](https://scrapbox.io/assets/img/logo.png)がUserScriptで置換されて、
[logo https://scrapbox.io/assets/img/logo.png]という「画像へのリンク」となります。


Scrapboxにて[ ]内にリンクテキスト(Logo)と画像URLがある「画像へのリンク」)


(そのままではLogoというリンクテキストだけが表示され、画像は見えない)

Scrapboxにて[ ]内からリンクテキストを取り除いて、画像URLのみにすれば、画像が見えるようになります。


[ ]内を画像URLのみにした例)


(画像が見える)

このような![リンクテキスト](画像のURL)という箇所がDynalistに存在しているとき、その「リンクテキスト」の除去を手作業でするのではなく、UserScriptで一律に取り除くようにすることができます。
すなわち、全ての![リンクテキスト](画像のURL)[画像のURL]へと置換することができるように、UserScriptをカスタマイズできます。その方法は下記のとおりです。

dy2sc.jsのコードの8-10行目付近に、このような行があります。

////Image with alt text
//e.g. ![Google logo](https://www.google.com/google.png)
text=text.split(/\n/).map(line => line.replace(/!\[([^\]]+)\]\((https?:\/\/[\w/:%#\$&\?\(\)~\.=\+\-]+)\)/g,'[$1 $2]')).join('\n')

この末尾の方の[$1 $2][$2]に書き換えます。

書き換えたら必ずブラウザをリロードし、Scrapboxのページ上部に現れる"Load new UserScript"をクリックしておきます。

ボタンの名前を変える

置換対象の範囲をマウスで選択したときに表示されるボタンの名前は、デフォルトでは“Dynalist"ですが、この名前は変更できます。

変更するには、dy2sc.jsのコードの2行目のtitle: 'Dynalist',のところを書き換えます。

書き終えたら必ずブラウザをリロードし、Scrapboxのページ上部に現れる"Load new UserScript"をクリックしておきます。

置換対象を増やす

デフォルトで置換できるもののほかに、置換対象を加えたい場合は、dy2sc.jsのコードの末尾のほうにあるreturn text;よりも上の行に、コードを書き加えます。

コードの基本的な形は

text=text.split(/\n/).map(line => line.replace(/置換前/g,'置換後')).join('\n')

です。「置換前」の部分はJavaScriptでの正規表現の書き方に従って書きます。「置換後」の部分の書き方はdy2sc.jsのコードを参考にしてください。

書き終えたら必ずブラウザをリロードし、Scrapboxのページ上部に現れる"Load new UserScript"をクリックしておきます。

Dynalistで作った内部リンクに付随する余分な"()"を取り除く

Dynalistの内容をScrapboxに移そうとするとき、Scrapbox用の内部リンク(例えば[hoge])をDynalistで作っておくこともできます。その操作をするには、DynalistにおけるCtrl + KまたはCmd + Kのショートカットキーを使うのが便利です。このショートカットキーを押すと、その位置に[]()というMarkdownが記入されます。また、例えばhogeなどの文字を選択したうえでそのショートカットキーを押すと、[hoge]()というようにMarkdownが記入されます。
この[]で囲まれた部分は、Scrapboxにおいては内部リンクになりますから、このショートカットキーを「Scrapbox用の内部リンクをDynalistで作る用途」で使うことができます。
その際、()の部分はScrapboxにおいては不要です。Dynalistの内容をScrapboxに移したあとで、不要な()をUserScriptで一括して取り除くことができます。
そのためのコードは下記です。「置換対象を増やす」の節に書いてある手順でUserScriptに適用して下さい。

text=text.split(/\n/).map(line => line.replace(/\]\(\)/g,']')).join('\n')

ちなみに、UserScriptで()の除去のみをしたい場合(他のものを置換する必要が全くない場合)は、UserScriptのコードは下記のようになります。

code:script.js
 scrapbox.PopupMenu.addButton({
    title: '()消去',  //"()消去"はポップアップするボタンの名前。変更可能。
    onClick: text =>{
        text=text.split(/\n/).map(line => line.replace(/\]\(\)/g,']')).join('\n')
        return text;
    }
 })

なお、()Dynalistの置換機能で取り除くこともできます。

置換対象を減らす

デフォルトで置換できるもののなかに、置換したくないものがある場合は、dy2sc.jsのコードの中でそれに対応している行の行頭に//と書き加えます。

書き終えたら必ずブラウザをリロードし、Scrapboxのページ上部に現れる"Load new UserScript"をクリックしておきます。

既知の問題点

  • 次のような場合は、その箇所では正しい置換結果になりません。

    • Markdown入れ子になっている場合(**__hoge__**~~**hoge **~~など)
    • Dynalistの数式記法($$〜$$)で式に]を含む場合(例:$$[a + b]$$*3
    • Dynalistの数式記法($$〜$$)で半角の$が3個以上連続している場合
      • 数式の左端や右端に$がある場合($aとかa+$のような数式)がこれに該当します。
      • 1行の中で数式記法が連続しているだけの場合は、問題ありません。
        • $$a+b$$$$x-y$$[$ a+b][$ x-y]と正しく置換される。
  • Dynalistで行頭に半角スペースがあると、Scrapboxにおいて階層が正しく再現されません。行頭の半角スペースがインデントとして解釈されてしまうためです。


(行頭に半角スペースがある例(一行目))

おわりに

不具合のご報告やご要望、改良のアイデアなどがありましたら、本記事のコメント欄か筆者のTwitterメールGithubなどへお知らせ下さい。

免責事項

本記事で紹介したUserScriptの使用やその不具合等により生じたいかなる損害に関しましても、筆者は一切の責任を負いません。予めご了承ください。

関連記事

本記事で紹介したUserScriptと同様に、MarkdoownとDynalistの独自記法をScrapboxに置換するPythonスクリプトがあります。ただし、置換機能は本記事のUserScriptのほうが充実しています。

Markdownのみを置換対象として、Scrapbox記法に置換するUserScriptがあります。

iOS / Androidバイスにおける手法

iOS / Androidバイスにおいて、Dynalistの内容をScrapboxにコピーするには、Workextendというアプリを利用した方法が使えるようです。


*1:ただし、[リンクテキスト 画像のURL]という形のままだと、Scrapboxの仕様上、「リンクテキスト」のみがページに表示され、画像はリンク先で開くスタイルになります。この場合にScrapboxページ上に画像を表示させるには、「リンクテキスト」の部分を手動で消していくか、もしくはそれを一律に消すよう後述のカスタマイズを施す必要があります。

*2:インデントを4個のままにすると、Scrapboxにおいては箇条書きの階層が深くなりすぎます。

*3:これはScrapboxの仕様によるものです。

Dynalistからプレーンテキスト形式でエクスポートした内容をScrapbox記法に置換するPythonスクリプト

Dynalistからプレーンテキスト形式でエクスポートした内容を、Scrapbox記法に置換するPythonスクリプトを作ったので、コードと使い方を書いておきます。

スクリプトのコードは更新されることがあります(更新履歴)。
この記事は長くて細かいので、大要を知りたい場合は機能の節のみお読み下さい。

Python不要でブラウザのみで動作するUserScript版もあります。UserScript版のほうが、置換機能が充実しています。

続きを読む

記事にするほどでもない小技集(10)


〈目次〉


Googleフォトの画像をDynalistに貼り付ける方法

Googleフォトの画像をブラウザで開き、画像の上で右クリックして「画像のURLをコピー」(Firefox)/「画像アドレスをコピー」(Chrome)を選択。コピーしたそのURLをDynalistに貼り付けて、それを![](#.jpg)で囲む。

f:id:ichbin:20200107190913p:plain

カーソルをその行の外に移すと、画像が表示される。

f:id:ichbin:20200107190940p:plain

なお、JPEG以外の画像ファイルを貼り付ける場合であっても、上掲の#.jpg)の部分の拡張子は.jpgのままでよいようです。

Spotify Connectで接続したいデバイスと接続できないときのチェックポイント

Spotify Connectで接続したいデバイスの双方が、あらかじめBluetoothで接続されている場合には、Spotify Connectでその双方を繋ごうとすると繋げない、という場合があるようです。

GoogleドライブとGoogleドキュメントを使って無料でOCRをする方法

文字が写っている画像をGoogleドライブにアップロードし、Googleドライブ上でそのファイルを右クリックして「アプリで開く」→「Googleドキュメント」を選択すると、その画像がOCRされたテキストがGoogleドキュメント上に表示されます。

FirefoxGoogle Play Music / YouTube Musicをショートカットキーで操作するためのアドオン

このアドオンを使うと、〈再生/一時停止/次の曲へ/前の曲へ〉という4つの操作をショートカットキーで出来るようになります。ショートカットキーは、Firefoxがアクティブである時のみ使えます。

アドオンの設定画面から、ショートカットキーの組み合わせを指定できます。

f:id:ichbin:20191217085434p:plain

使えるキーはこちらに"3. key (mandatory)"として挙げられているもののみだと思われます。

Vivaldiツールバーに表示されている拡張機能のアイコンを並べ替える方法

Shiftキーを押しながら、アイコンをマウスでドラッグすると、アイコンを移動できます。

Googleカレンダーと連携できるLinux用カレンダーアプリケーション

はてなブログでリスト内の余分な余白を取り除くためのCSS

はてなブログでリスト(箇条書き)を使用したときに、項目の下側に大きな余白が出来る場合があります。これをCSSで取り除くことができます。

f:id:ichbin:20190911063304p:plain

下記のCSSを、はてなブログの管理画面の「デザイン設定」の中の「デザインCSS」の欄に入力して「変更を保存する」ボタンを押せば完了です。

ul li p{margin-bottom:0 !important}  /* 余白を0にする場合 */

適用後
f:id:ichbin:20190911063522p:plain

Scrapboxのポップアップメニューの中で不要なものを非表示にするUserCSS

Scrapboxでテキストを選択した際にポップアップするメニューのうち、デフォルトで表示される6つのそれぞれを非表示にすることができます。

ScrapboxUserCSSとして下記のCSSの各行を適用すれば、各々のボタンが非表示になります。

div.link-button{display:none !important}  /* Link */
div.strong-button{display:none !important}  /* Strong */
div.italic-button{display:none !important}  /* Italic */
div.strike-button{display:none !important}  /* Strike */
div.copy-plain-button{display:none !important}  /* Copy plain */
div.new-page-button{display:none !important}  /* New page */

適用前
f:id:ichbin:20190913164342p:plain
(LInk〜Copy plainまでの5個はデフォルトで表示されるもの。New pageは複数行を選択したときに表示される)

適用後
f:id:ichbin:20190913164333p:plain
(Italicとstrikeを非表示にした例)

Kindle Unlimited対象の本だけを検索する方法

このURLの[キーワード]の部分を、探したいキーワードに置き換えてアクセスすると、Amazonのサイトでそのキーワードを含むKindle Unlimited対象の作品が検索される。

https://www.amazon.co.jp/s?k=[キーワード]&rh=n%3A2250738051%2Cp_n_feature_nineteen_browse-bin%3A3169286051&ref=sr_nr_p_n_feature_nineteen_0

例えば、「夏目漱石」の検索結果はこちら

PCのログイン画面でCaps Lockキーが押されていてかつキーボードが使えないときにパスワードを正しく入力する方法

スクリーンキーボードを使い、ローマ字の大文字と小文字を逆にして入力する。例えば、正しいパスワードがAbcならば、スクリーンキーボードでaBCと入力する。

コマンドプロンプトから、Dynalistの特定の項目の下位に記入するPythonスクリプト

コマンドプロンプトに入力したテキストをDynalistの特定の項目(行)の下位へ記入するPythonスクリプトを作ったので、コードと使い方を書いておきます。*1

別記事にGUIバージョンもあります。


〈目次〉


機能

  • Terminal(端末)に入力したテキストが、Dynalistの特定の項目(行)の下の階層に記入されます。
  • 一度に記入できるのは1行のみで、改行はできません。
  • Markdownを記入できます。
  • ハッシュタグを記入できます。

実行例

実行するとこのような状態になります。

f:id:ichbin:20190901183734p:plain

hoge」と書いてある行の下の階層に記入するよう設定した例です。「ふがふが」が記入内容です。

必要なもの

Pythonスクリプトを実行できる必要があります。

設定の手順

テキストエディタで、新しいファイルに下記のコードを記入します。

import json
import requests
import webbrowser

#ドキュメントのid=書き込む対象のドキュメントのid
file_id='YOUR_FILE_ID'

#親ノードのid=書き込みたい内容の1階層上位に相当する項目(行)のid
parent_node_id='YOUR_PARENT_NODE_ID'

#Secret token
token='YOUR_SECRET_TOKEN'

content=input('>>')

dict = {
    'token'  :  token,
    'file_id' : file_id,
    'changes' : [
        {
              "action": "insert",
              "parent_id": parent_node_id,
              "index": 0,
              "content": content
        }
    ]
}

response = requests.post('https://dynalist.io/api/v1/doc/edit', json.dumps(dict), headers={'Content-Type': 'application/json'})

print (response.text)

#親ノードにズームした状態でDynalistを開く
#webbrowser.open('https://dynalist.io/d/' + file_id +'#z=' + parent_node_id)

#ドキュメントを開く
#webbrowser.open('https://dynalist.io/d/' + file_id)

ドキュメントのidの記入

Dynalistにログインしたうえで、書き込みたい対象のドキュメントを開き、そのドキュメントのidをコピーします。
すなわち、そのドキュメントを開いている状態のURL(例:https://dynalist.io/d/KWJ-NGiPrpbDyjX4fPiJ3YK9)のうちの/d/よりも後ろの部分をコピーします(この例ではKWJ-NGiPrpbDyjX4fPiJ3YK9がドキュメントのidです)。
なお、このときのURLに#が含まれている場合は、#以降はドキュメントのidに含みません。

コピーした文字列を、上掲のコードのYOUR_FILE_IDのところに記入(上書き)します。

親ノードのidの記入

このスクリプトを使って書き込みたい内容の上位(1階層上位)に相当する項目(行)のことを親ノードといいます。
すなわち、下記の例ではBやCの親ノードがAであり、Dの親ノードはCとなります。

  • A
    • B
    • C
      • D
  • E

このスクリプトを使って書き込みたい内容の親ノードに相当する行(親ノードにしたい行)の行頭にマウスカーソルを置いて、“Zoom in”のアイコン(虫眼鏡アイコン)を押すか、もしくはその行でCtrl+]のショートカットキーを叩くと、その行に“Zoom in”した状態になります。

f:id:ichbin:20190901183606p:plain

f:id:ichbin:20190901183618p:plain
(“Zoom in”した状態)

その状態でのURLは末尾が#z=E2YF50ihKrH8Oi8oSa3HvPxjのようになっています。そこから#z=を取り除いた文字列(この例ではE2YF50ihKrH8Oi8oSa3HvPxj)が、親ノードのidです。これをコピーします。

コピーした文字列を、上掲のコードのYOUR_PARENT_NODE_IDのところに記入(上書き)します。

Secret tokenの取得と記入

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

f:id:ichbin:20190804143052p:plain

コピーした文字列を、上掲のコードのYOUR_SECRET_TOKENのところに記入(上書き)します。

記入位置の選択(先頭 or 末尾)

このスクリプトを使って書き込みたい内容を、親ノードの下位のうちの先頭に記入するか、それとも末尾に記入するかを選択できます。
下記の例ではBが「先頭」にあたり、Dが「末尾」にあたります。

  • A(親ノード)
    • B
    • C
    • D

上掲のコードでは、先頭に記入するように指定してあります。
末尾に記入するよう変更したい場合は、上掲のコードの後半にある"index": 0,のところを"index": -1,に書き換えます。

ブラウザの挙動を設定する

このスクリプトを使ってDynalistに書き込みを行った時に、それと同時にブラウザでDynalistを開くかどうかを設定できます。
デフォルトでは、ブラウザでDynalistを開かないようにしてあります。
書き込んだ内容の親ノードにズームした状態でDynalistを自動で開きたい場合は、上掲のコードの#webbrowser.open('https://dynalist.io/d/' + file_id +'#z=' + parent_node_id)の行頭の#を取り除きます。
書き込んだ内容を含んでいるドキュメントを開きたい場合は、上掲のコードの#webbrowser.open('https://dynalist.io/d/' + file_id)の行頭の#を取り除きます。*3

記入し終えたら、上掲のコードを保存します。ファイル名はdynalist.pyのように拡張子を.pyとします。

使い方

コマンドプロンプトpython dynalist.pyと実行。

f:id:ichbin:20190804143320p:plain

下の行に>>という記号が表示されるので、そこに続けて、Dynalistに記入したい内容を入力し、Enterキーを押します。

f:id:ichbin:20190901183700p:plain

Dynalistへの記入が正しく行われれば、{"_code":"Ok","new_node_ids : ["**********"] }というメッセージが表示されます。これで完了です。

f:id:ichbin:20190901183715p:plain

Dynalistを開くと、このように記入されています。

f:id:ichbin:20190901183734p:plain
(「hoge」の行が親ノードのとき、その下の階層に記入される)

資料

上掲のスクリプトは、こちらに示されている仕様に従って作りました。

関連記事

DynalistのInboxにコマンドプロンプトから記入するスクリプトもあります。

*1:DynalistのInboxとして指定してある位置へコマンドプロンプトから記入したい場合は、別のスクリプトがあります。

*2:この文字列を、他人が読める状態にしてはいけません。

*3:ただし、ドキュメント全体が開かれるのではなく、〈そのドキュメント内で一番最近にズームした行〉にズームした状態で開かれる場合があります。Dynalistの仕様だと思います。