Add copy action to Alfred Dropbox Paper Workflow

先週 Dropbox Paper のドキュメントを一覧し開く Alfred ワークフローを作成しました。

これで直ぐにドキュメントにアクセスできるようになって便利になったのですが、一方課題も…。

課題

Dropbox Paper は主にブログの下書き用に使っているのですが、Dropbox Paper のドキュメントをコピーして Ghost のエディターに貼り付けると表示が崩れるというかなり致命的な問題がありました。これでは不便すぎる…。

Dropbox Paper はマークダウンで書けますが、どうやらコピーされたテキストはマークダウン形式にならないみたいです。そりゃそうか。

解決方法

Dropbox API ではマークダウン形式でドキュメントの内容を取得可能な API が用意されているので、これを使ってワークフローでリストされたドキュメントを選択するとその内容をマークダウン形式でクリップボードに保存する機能を追加しました。

といっても curl コマンドの実行で簡単に済ませられました。ドキュメントのタイトルと URL を出力するスクリプトはドキュメントの編集ページを開く機能のものと同じものを使えばいいので、あとはこれの出力結果を少し加工して curl コマンドに渡し docs/downloard API を叩くだけです。

export DROPBOX_ACCESS_TOKEN=$(security find-generic-password -a $USER -s dropbox-access-token -w)

query="{query}"
doc_id=$(echo $query | cut -d'/' -f5)

curl -s -X GET https://api.dropboxapi.com/2/paper/docs/download \
  --header "Authorization: Bearer $DROPBOX_ACCESS_TOKEN" \
  --header "Dropbox-API-Arg: {\"doc_id\":\"$doc_id\", \"export_format\": \"markdown\"}" \
  | pbcopy

{query} の部分にスクリプトで生成されたドキュメントの URL が入るので、URL に含まれるドキュメントの ID を cut コマンドで抽出し API リクエストに渡しています。

あとはコピーされたというフィードバックが欲しいので、Post Notification アクションで通知を出しています。

これでまた少し便利になりました!!

感想

Dropbox Paper で書いた内容をそのままコピーして Ghost エディターに貼り付けたら崩れてしまったときは絶望しましたが、これでなんとか Dropbox Paper で下書き → Ghost で書き上げて公開 の運用を続けられそう。 😊

あと欲しい機能は

  • ドキュメントの検索機能
  • 削除、アーカイブしたドキュメントは一覧しない
  • ドキュメントの作成機能 (タイトルを入れるとそのタイトルで新規作成されるようにしたい)

と幾つかあるので引き続きいじっていこう。 💪