CUEBiC TEC BLOG

キュービックTECチームの技術ネタを投稿しております。

Docbaseの資料をNotionに移行しました

WPやったり、溢れたタスク拾ったりとメディア系何でも屋になりかけてるmikihoです。

今回はそんなタスクの中で、想定以上に苦労したDocbaseからNotionへの資料移行について話していこうと思います。

そう、弊社も昨年からNotionを本格的に導入を始めたのですよ。
そのため、我らがTECという部署のみが使用していたDocbaseも移行しなければ…となり整理がてら色々試してみた。
試してみた、が…落とし穴が多い…!
そんな哀れなほどに落とし穴にハマった自分のために記事を書きました

第1の落とし穴

まず引っかかったのがテストのために一度エクスポートするまでの道のり…
そもそもDocbaseで、データをエクスポートできるのは「オーナー」権限のみ! 結構移行について触れている記事があるのに、そもそもその権限に触れてるところがほぼなくて、とりあえず管理者権限をもらって設定開いても「ないじゃんエクスポートのメニュー!!!」ってなりました
オーナー権限は1アカウントにしか付与できないので、改めて権限を変更してもらってようやくエクスポートに漕ぎ着けるという…

気を取り直して、エクスポートについて。
Docbaseのエクスポートは下記二つの形式で行えます。

  • マークダウン形式
  • Json形式

Notionが対応しているエクスポート形式は上記2つの中だとマークダウン形式のみなので、とりあえずマークダウン形式でエクスポートしてみました。
とはいえ、Json形式も一応エクスポートしてみようと思ってました。

なぜなら、画像の移行は無理無理とされているらしいので、どうにかデータをいい感じにいじったりできないかなー…って思ってたので、まぁ一応お試しで形式だけでもみておこうと思ったのですよ。

第2の落とし穴

エクスポート自体はスムーズにできました。
ボタンを押すと、ダウンロードできるようになったらメールがオーナーに飛びます。
メールから、「ファイル」「画像」「マークダウン」の三種類のリンクがそれぞれあるのでそこからデータをエクスポートできる形式。
ファイルの分割法には色々思うところがあったが飲み込んだ。
問題は、管理画面側に戻って、んじゃJson形式でもダウンロードしてみようと思った時です。

えぇ、Docbaseはとても親切にメールで送付した内容と同じようにエクスポートメニューのページにしっかりとダウンロードできるようにリンクを表示してくれました。
ただし、有効期限中はそれ以外のエクスポートができませんがねぇ!

ダウンロード期限は24時間。
一回やったら次の日まで違う形式でのエクスポートはできません。
軽い気持ちで、テストだから〜とやったら見事に穴に落ちました。
エクスポートする間だけ、と期間限定でとりあえずオーナー権限をもらってたので、仕方なく期間延長を管理者に申請する羽目になりました。
※結果として、すでに解約前提だったため移行作業中はとりあえずもうオーナー権限持っててもいいよってことになって楽になりました。やったね。

第3の落とし穴

色々と思うところはあったものの、とりあえず落としてきたファイル群を確認。
Zipでダウンロードしてきたファイルのお名前は数字でした。

はい、画像だろうが、ファイルだろうがマークダウンだろうが、全て数字でした。
うっかり適当にポチったので、どれがどれだ…?となりました。
気を取り直して、とりあえずマークダウン形式の記事本文データらしきフォルダを開くと、こちらも見事な[数字(おそらく記事ID).md]の形式。
中を見たところ、本文内の一行目=記事タイトル という形だったようです。

試しにひとつNotionにインポートしてみたが、当然のようにタイトルはファイル名になります。
つまり、このままとりあえずエクスポートしたデータをNotionに突っ込むことはできない…!

結局シェルスクリプトで対応を行いました。
一行目をとってきて、ファイル名に変換するというスクリプトを公開されている方がいたので、ありがたくそちらを使わせていただきました。

実際のコードはこんな感じ。

 #!/bin/bash
for file in *.md; do
firstline=$(cat "$file" | head -1 | sed -e 's/\//-/g')
 [ -n "$firstline" ] && [ ! -e "${firstline}.md" ] &&
mv "$file" "${firstline}.md"
done

参考

qiita.com

幸い、お試しでやった記事は表示崩れもなく綺麗にインポートできたので、タイトルと画像の件以外は一旦心配しなくて良さそうでした。

第4の落とし穴

いや、これはもう目に見えてた話なんですが。
そもそもDocbaseのNotion移行の最難関は画像。
どうにか紐づけられないか、いやでもNotoinの仕様的に難しいのでは…?と思い色々模索しましたが、そもそもエクスポートの形式を見て諦めました。

先に少し触れた通り画像ファイルは「画像」というフォルダに収められてエクスポートできましたが、実は画像以外のpdfなどは「ファイル」という謎のフォルダーに分割されていたのです。
ついでに言うと、謎になぜかフォルダ化されている。
(上に多分名前がおかしくなってしまった)やつとか、記事データに比べて画像・それ以外のファイル系のエクスポートは安定していないようです。(弊社の問題の可能性はあるが、サンプルが多いわけではないのでほんとに謎)
そもそもそんな状況では、画像は下手に手を出さないほうがいいだろう、と言う結論に達して画像に関しては諦めて手動での修正としました。
あえてそこに工数かけてどうにかしようとするよりは、先にサクッと移行させてしまったほうが解約期日を考えなくて良さそうだったので…

第5の落とし穴

これは実は移行が完了してから気づきました。
はい、Docbaseのエクスポート機能は、本当に「全て」をエクスポートしてきます。

つまり、アーカイブに突っ込んだものも含まれてたんです…!

やけに多くないか…?と思いつつ移行をゴリっと終わらせた結果、「なんか変だ」とお声をいただき本腰を入れて調査した結果、エクスポートではアーカイブされたものもエクスポートしてくれるというバックアップとしては大変優秀な機能であることが証明されました。
まぁ、完全に契約解除前に、アーカイブしたものも含めたバックアップができたと考えれば悪いことではありません。
ありませんが、移行とは…?と遠い目をする羽目になりました。

移行の感想

というわけで、丁寧に5つほどあった落とし穴に進むごとに落ちてました。
今回は工数とか優先順位を考えて、バッサリ画像あたりは捨てたからできた移行ですね…
私にはあの文字化けが挟まれる上に謎に一部フォルダ化している画像群をNotionにいい感じに移行する手段は思いつかなかったのです…

結局とりあえずは移行できたが、という状態でした今回は。
それでよかったのか、と言われたら正直微妙なところだったなと思います。
幸い、全社的に使っていたツールではなかったためにそこまで膨大な資料数じゃなかったこと、身内だからこそ「ごめん画像だけは無理だったので、Notion移行後それぞれでやってほしい…!」とお願いしやすかったことですね。

エクスポートできるからそのままインポートすればいーじゃーんと軽い気持ちでやるもんじゃありませんでした。
皆さんも移行には気をつけましょう…

そして最後に…今までありがとうDocbaseさん、大変お世話になりました!

お知らせ!!

キュービックでは、一緒に働いてくれる仲間を募集しています。興味がある方はカジュアル面談Webエンジニアから応募をお願いします。ご応募お待ちしております。 herp.careers

また、エンジニアチームが運営しているYoutubeチャンネル【TEC TV】があるので、こちらでどんな人が働いているかを見ることができます!

www.youtube.com