Dropbox の紙ドキュメントからデータをインポートし、JSON データ構造に変換する Node モジュール。
create app
Dropbox API
選択しましたFull Dropbox
選択しましたNews Mixer
document id
を取得するたとえば、Dropbox Paper の URL が次のような場合
https://paper.dropbox.com/doc/Main-Title-vJdrjMJAHdgfHz0rl83Z
次に、最後の-
の後の最後の文字列要素 (左から右に読みます) がドキュメント ID になります。
この架空の例では、 vJdrjMJAHdgfHz0rl83Z
になります。
DROPBOX_ACCESS_TOKEN
を.env
に追加しますこのプロジェクトは、dotenv を使用して資格情報と環境変数を処理します。
フォルダー リポジトリのルートに.env
ファイルを作成します。これは、認証情報の漏洩を避けるために、 .gitignore
によって github リポジトリから除外されます。
以下は、いくつかの架空の資格情報を含む.env
ファイルの形式の例です。
# Dropbox credentials
DROPBOX_ACCESS_TOKEN=vJdrjMJAHdgfHz0rl83ZvJdrjMJAHdgfHz0rl83Z
DROPBOX_DOC_ID=vJdrjMJAHdgfHz0rl83Z
このリポジトリのクローンを作成する
git clone [email protected]:bbc/dropbox-paper-to-json.git
CD でフォルダーに入れる
cd dropbox-paper-to-json
npm install
npm start
これにより、 data.json
ファイルがプロジェクトのルートに保存されます。
npmインストール
npm install dropbox-paper-to-json@git+ssh://[email protected]/bbc/dropbox-paper-to-json.git#master -save
コードベースに追加する
//if using dotenv for environment variable credentials for dropbox paper
require ( 'dotenv' ) . config ( ) ;
// optional if you want to write the resulting json
const fs = require ( 'fs' ) ;
// require module
const dbpMdToJson = require ( 'dropbox-paper-to-json' ) ;
dbpMdToJson ( {
accessToken : process . env . DROPBOX_ACCESS_TOKEN ,
dbp_doc_id : process . env . DROPBOX_DOC_ID ,
// default for nested === true
nested : true
} ) . then ( ( data ) => {
console . log ( `done Dropbox Paper to JSON conversion` ) ;
// optional: now do something with the data
fs . writeFileSync ( './data.json' , JSON . stringify ( data , null , 2 ) ) ;
} ) ;
システムアーキテクチャの高レベルの概要
このモジュールはdpb-download-md
ノード モジュールを使用して、Dropbox Paper ID とアクセス トークンを指定して Dropbox Paper をマークダウンとして取得します。
公式 SDK には、Dropbox の紙ドキュメントのコンテンツにアクセスする簡単な方法がないようでした。
サブモジュールmd-to-json/linear.js
マークダウン ファイルの内容を文字列として受け取り、それをマークダウン要素を表すオブジェクトの配列に変換します。
これはネストのないフラットなデータ構造であるため、リニアと呼ばれることもあります。
[
{
"text" : " Chapter 1 " ,
"type" : " h1 "
},
{
"text" : " Text " ,
"type" : " h2 "
},
{
"text" : " vitae elementum velit urna id mi. Sed sodales arcu mi, eu condimentum tellus ornare non. Aliquam non mauris purus. Cras a dignissim tellus. Cras pharetra, felis et convallis tristique, sapien augue interdum ipsum, aliquet rhoncus enim diam vitae eros. Cras ullamcorper, lectus id commodo volutpat, odio urna venenatis tellus, vitae vehicula sapien velit eu purus. Pellentesque a feugiat ex. Proin volutpat congue libero vitae malesuada. " ,
"type" : " p "
},
{
"text" : " Video " ,
"type" : " h2 "
},
...
]
ユースケースによっては、h1 タグから次の h1 テイクまでの間のすべての要素を、そのタグの兄弟/子/要素としてネストすることが適切な場合があります。
たとえば、h1 タグには h2、p タグ、リンクなどを含めることができます。
同様に、h2 タグには、次の h2 タグまたは h1 タグまでの他のすべての要素を含めることができます。
注意:マークダウンの Dropbox Paper フレーバーは、 H1
タグとH2
タグのみを適切に表現するため、このユースケースでは 2 レベルでのみネストを停止しました。ただし、ユースケースがあれば、さらにネストすることができます。
これはmd-to-json/index.js
で行われます。
{
"title" : " TEST CMS " ,
"elements" : [
{
"text" : " Chapter 1 " ,
"type" : " h1 " ,
"elements" : [
{
"text" : " some text element between h1 and h2 tags " ,
"type" : " p "
},
{
"text" : " text " ,
"type" : " h2 " ,
"elements" : [
{
"text" : " vitae elementum velit urna id mi. Sed sodales arcu mi, eu condimentum tell. " ,
"type" : " p "
}
]
},
...
}
完全な例については、 md-to-json/examples/example_output.json
参照してください。
開発環境の実行方法
コーディングスタイル規約 ref オプション、例: どのリンターを使用するか
リンティング、github プリプッシュ フック - オプション
.eslintrc.json
を参照ビルドの実行方法
な?
テストの実施方法
テストにjest
使用してテストを実行するための最小限のテスト カバレッジ:
npm test
コード/アプリをテスト/ステージング/運用環境にデプロイする方法
NA、それはノードモジュールです。
残念ながら、Dropbox Paper にはマークダウンという独自の欠陥があります。最も関連性があり、注目に値する違いは次のとおりです。
heading 1
要素は両方とも has h1
/ #
とマークされています。Heading 3
、 h3
/ ###
ではなく太字**
で表されます。Dropbox フレーバー マークダウン ファイルの例としてmd-to-json/examples/test.md
参照してください。
H3
タグ。ドロップボックス ペーパーのマークダウンでは太字で表現されるため**
h3
からh6
を解析します。画像のマークダウン github フレーバー タグ (例: ![alt text](link url)
を解析します。これらは独自の行に表示されます。
リンクのマークダウン github フレーバー タグの解析 (例: [text](link url)
これらは通常、段落の一部として表示されますが、独自の行や見出しの一部として表示されることもあります。