ProgramからScrapboxを編集する
Scrapboxの哲学上、できるだけ人の手を介してテキスト編集が行われるように作られている
そのため、ページのテキストを自由に編集するAPIは提供されていない
cf. /forum-jp/APIでページを作成・更新したい
とはいえ、いろんな裏技を組み合わせれば、ProgramからScrapboxを編集することもできなくはない
現状、方法は2つある
web scrapingを使う
seleniumやpuppeteerをserverか何かで動かして、Scrapboxを表示することなくテキスト編集する方法
詳しくは/scrapbox-drinkup/puppeteerでscrapboxを自動化してイテレーション資料を宣言的に完成させる 2(2019/9/5)#5d70fad8e22e91000004dec9に書いてある
かなり処理が重かった覚えがある。あまりおすすめはしないtakker.icon
UserScriptからキーボードとマウス操作を模倣する
一番おすすめ
できること
選択範囲を取得
popup menuを介さずに取得できる
コードブロック中など、任意の選択範囲を取得したいときに使える
/takker/scrapbox-selection-2
document.getElementById('text-input').valueで取得できる
選択範囲の位置を取得したいときは/takker/scrapbox-selection-3を使う必要がある
選択範囲の生成
/takker/scrapbox-keyboard-emulation-2
Shift+矢印キーをscriptから実行するだけ
カーソルを任意の場所に置く
/takker/scrapbox-line-clicker
テキストの書き換え
/takker/scrapbox-insert-text
独自の入力補完システムを作るときに便利
Android端末でも使える
Page Menuのクリック
Element.click()を実行するだけ
/takker/UserScriptからPageMenuを操作する
clip board操作
Firefoxは書き込みのみ可能
解説はそのうち書きますtakker.icon
一時的に自分のコードへのリンクを書いておきます
利点
UserScriptだけで完結する
(基本的に)どの端末でも使用できる
限界
機能を作るのがとても難しい
座標計算や当たり判定など
Scrapboxの挙動を徹底的に調査しないと作れない
この辺を知らなくても使えるようなhelper libraryを作成中ですtakker.icon