はらへり日記

腹に弾丸

テンプレートから新しいScrapboxページを作るためのブックマークレット書いた

動機

  • 今、ほぼすべての自分の情報をScrapboxに集約してる
    • 約1400ページくらいある
  • その中でフォーマットが決まってるものがいくつかある
    • 日記、CFP下書き、スライド下書き等々
  • そういう場合、テンプレートページを作って毎回そこからコピペしてた
  • が、めんどくさすぎなので簡略化したかった
  • Hakone.swift #2で作った

やったこと

  • ブックマークレット作った
  • #テンプレート[テンプレート]って文字があるページで実行すると新しいページが作れる

https://gyazo.com/01969ebaf58a1192f4de7e596b0e6457

実装

実装とそのままブックマークとして登録すれば動くものをGistにアップロードしています。

gist.github.com

以下ハマりどころ

  • 公式APIドキュメントが間違ってる?
    • 本文を取るAPI/textつけると書いてあるが401が返る
    • https://scrapbox.io/api/pages/${projectName}/${pageTitle}で取れた
  • \nencodeURIComponentしてからwindow.openしないとおかしくなる
  • 何回も実行すると変数の二重定義で動かなくなるので全ての処理を即時関数で括った
  • fetch APIはオプションでcredentials: 'same-origin'と明示的に宣言しないとCookieを送信せずエラーになる XMLHttpRequestは明示的に宣言する必要なし -res.json()ぐう便利
  • consoleでprompt()実行すると上手く動かないから毎回ブックマークレット更新してデバッグしなきゃいけなくて面倒くさい

その他

気が向いたら拡張機能にして対象ページの右上にはこのテンプレートで新しいページ作るボタン表示させたりしたい

追記

shokaiさんから既にその機能あるよと指摘もらいました。

f:id:sota1235:20180319152908p:plain

右側のボタンから行けた…

f:id:sota1235:20180319152935p:plain

テンプレートがあったら1クリックで行けるようにする、ぐらいしないとあまり作る意味がないことになってしまいました。残念