Bagaimana saya bisa mengekspor semua halaman OneNote ke file penurunan harga individual?

14

Saya pindah ke Linux dan rintangan terakhir adalah keluar dari OneNote. Saya ingin mengekspor semua buku catatan saya sehingga setiap halaman masuk ke file penurunan harga individu.

Saya sudah mencoba banyak hal — utas ini memiliki beberapa saran, tetapi semuanya sudah usang.

Jika saya bisa meminta OneNote untuk mengekspor semua halaman sebagai file .docx individual, akan lebih mudah menggunakan pandoc untuk mengonversinya menjadi file penurunan harga individual. Tapi, OneNote hanya akan mengekspor beberapa halaman sebagai satu file. Jadi, satu rute adalah menemukan cara untuk mengotomatiskan ekspor setiap halaman secara individual.

Pilihan lain adalah mengekspor seluruh buku catatan sekaligus sebagai file .docx, mengonversinya menjadi markdown dengan pandoc, dan kemudian membagi file-nya — tetapi, saya tidak cukup dengan wizard regex untuk mendapatkan csplit untuk memotong file dengan benar hanya dengan dasarnya. ekspresi reguler, dan wizard awk tidak cukup untuk menghasilkan file dengan ekspresi reguler yang benar dan lengkap.

Adakah yang bisa membantu saya dengan ini?

Anders
sumber

Jawaban:

12

Saya akhirnya menemukan jalur pipa ekspor, tetapi itu menyebalkan. Ini catatan saya dari melakukan itu:

alur kerja:

  1. Matikan jaringan Anda untuk mencegah OneNote dari melakukan sinkronisasi OneDrive yang panjang setelah setiap ekspor.

  2. Di daftar Notes, perluas notebook untuk melihat semua tab.

  3. Klik kanan tab dan klik "Ekspor ...".

  4. Klik dropdown tipe file dan tekan Muntuk memilih .docxformat. Tekan Enteruntuk memilihnya.

  5. Tekan Enterlagi untuk menyimpan file yang diekspor.

  6. Ulangi langkah 2-5 untuk setiap tab di buku catatan.

  7. Atur pandoc dan buka jendela PowerShell atau cmd.

  8. cd ke direktori tempat .docxfile yang diekspor berada.

  9. Untuk setiap .docxfile yang diekspor , gunakan perintah pandoc berikut untuk mengonversinya menjadi penurunan harga (ganti journaldengan nama file Anda):

    pandoc --extract-media='' --wrap=preserve '.\journal.docx' -o journal.md
    

    Berikut ini penjelasan dari perintah: --extract-media=''memberi tahu pandoc untuk mengekstrak gambar dari .docxfile dan menempatkannya di subfolder default (dinamai 'media' secara default). --wrap=preservemengatakan pandoc tidak membungkus file output dengan linebreak (yang merupakan default). Bidang selanjutnya adalah nama file input, dan -osingkatan dari 'output', demikian journal.mdjuga nama file output.

    Jika Anda tidak ingin membagi file ini (misalnya, jika tab Anda hanya berisi satu halaman), lanjutkan ke langkah 15.

    (Ketika Anda melakukan banyak ini, Anda dapat menekan tombol (panah atas) untuk memanggil kembali perintah sebelumnya di shell, lalu edit nama file.)

  10. Buat folder baru untuk menyimpan halaman di tab. Untuk contoh ini, sekarang semua halaman dari tab Jurnal kami di OneNote dihaluskan bersama journal.md. Buat folder bernama journalyang akan menyimpan halaman-halaman akhir yang dipisahkan sebagai file individu .md.

  11. Jika ada gambar dalam .docxfile, ini akan diekspor ke folder baru bernama media. Seret folder media, jika ada, ke folder yang baru saja Anda buat sekarang. (Inilah sebabnya mengapa kita perlu melakukan setiap operasi pandoc secara terpisah, karena setiap ekspor akan membuat folder media yang terpisah, dan kami ingin menyimpannya secara terpisah sehingga tautan dalam file penurunan harga berfungsi dengan benar. Kita dapat menulis skrip cerdas untuk melakukan semua ini secara otomatis, tetapi akan memakan waktu lebih sedikit untuk melakukannya secara manual, kecuali jika Anda memiliki banyak buku catatan.) (Catatan: Anda dapat menyimpan langkah dengan meletakkan nama pengguna yang Anda inginkan dalam kutipan tunggal --extract-media=''argumen — untuk .docxfile dengan gambar, folder akan dibuat secara otomatis untuk Anda.)

  12. Buka terminal bash dan cd ke direktori yang berisi .mdfile. Folder yang Anda buat pada langkah 10 harus menjadi subfolder dari yang ini (kecuali jika Anda memperbaiki jalur dalam perintah berikut).

  13. Jika Anda belum melakukannya, klik ikon Windows Bash window, klik Properties, periksa QuickEdit Mode, lalu klik OK. Sekarang klik pada ikon Windows Bash window lagi, kali ini klik pada Defaults, periksa QuickEdit Mode, dan kemudian klik OK (jadi windows Bash baru yang Anda buat di masa depan akan mengingat pengaturan ini). Sekarang Anda dapat memilih teks di terminal dan tekan Ctrl+ Cuntuk menyalin, atau klik kanan jendela terminal untuk menempelkan teks ke clipboard. Sekarang kita dapat menyiapkan perintah di lokasi yang terpisah, dan dengan cepat menempel setiap versi ke Bash.

  14. Kustomisasi perintah berikut dan jalankan untuk setiap .mdfile yang ingin Anda bagi menjadi beberapa halaman:

    csplit ./journal.md --keep-files --prefix='journal/journalentry ' --suffix-format='%i.md' --elide-empty-files '/^\(Monday\|Tuesday\|Wednesday\|Thursday\|Friday\|Saturday\|Sunday\),/-2' '{*}'

    (Ketikkan sebagai satu baris.)

    Seperti yang Anda lihat, journal.mdadalah nama file penurunan harga kami (dalam direktori saat ini, dilambangkan dengan ./), kemunculan kedua journal(setelah --prefix=') adalah nama subfolder kami yang akan berisi file-file split, dan journalentrysetiap nama file akan diberi nama (diikuti oleh nomor indeks).

    Jika Anda ingin memahami perintah ini, inilah penjelasannya: --keep-filesmasih mencetak file ketika terjadi kesalahan atau akhir file, memastikan halaman terakhir akan ditampilkan dengan benar (karena tidak berakhir pada pola ekspresi reguler kami). --prefixmengatur skema penamaan file output. --suffix-formatmemungkinkan kita untuk mengatur ekstensi file kita ( .mddalam hal ini), tetapi kita harus memasukkan %ipernyataan sprintf yang menampilkan nomor indeks file tersebut.  --elide-empty-filesmelompati menghasilkan file kosong, yang tidak kami pedulikan. Akhirnya, ekspresi reguler, yang dimulai dengan '/dan diakhiri dengan/-2', menentukan kapan harus membagi file: ia mengatakan "Ketika Anda menemukan (/) di awal baris (^) berikut ini (() Senin atau (\ |) Selasa atau Rabu atau Rabu atau Kamis atau Jumat atau Sabtu atau Minggu () ) diikuti oleh koma, mundur dua baris (-2) "dan pisahkan file di sana, menghasilkan apa yang kita miliki sampai sekarang. Bit terakhir '{*}',, mengulangi perintah sebelumnya tanpa batas, hingga akhir file tercapai.

  15. Seret .docxdan .mdfile ke dalam folder, ucapkan folder yang Anda buat sekarang disebut intermediates. Atau Anda bisa menghapusnya. Sangat menyenangkan untuk menyimpannya sebentar, sampai Anda merasa nyaman dengan format file baru Anda, jika Anda ingin kembali dan merujuk sesuatu yang terjadi selama proses konversi. Memindahkan mereka ke folder perantara sekarang akan kasar kesempatan lupa di mana kita berada dan mengulangi langkah-langkah.

  16. Ulangi langkah 9-14 untuk setiap .docxfile yang diekspor dari OneNote.

  17. Sekarang Anda memiliki satu folder untuk setiap tab, dengan banyak .mdfile terpisah di dalamnya, satu untuk setiap halaman! Ditambah mediafolder di setiap subfolder yang memiliki gambar di tab OneNote.

  18. Saya sarankan mengekspor setiap buku catatan OneNote Anda sebagai .mhtfile (Halaman Web File Tunggal), atau, jika Anda mau, a .pdf. Dengan cara ini, jika ada pemformatan yang hilang atau informasi lain di beberapa file penurunan harga Anda, karena beberapa konversi, Anda selalu dapat kembali dan dengan mudah melihat bagaimana seharusnya terlihat dalam .mhtfile. Selain itu, saya akan merekomendasikan mengekspor masing-masing buku catatan OneNote Anda sebagai .onepkgfile (Paket OneNote), sehingga Anda memiliki salinan ekspor akhir yang bagus jika Anda ingin membuka kembali buku catatan di OneNote dalam format file asli / asli (ini mungkin berguna jika, misalnya, .mhtfile tersebut juga kehilangan beberapa format asli yang ingin Anda pulihkan).

  19. Saat Anda menyelesaikan setiap buku catatan, klik kanan buku catatan di OneNote dan klik "Tutup Buku Catatan ini" sehingga Anda tidak akan secara tidak sengaja mengedit buku catatan dan harus mengekspor kembali perubahan baru Anda. Untuk folder penurunan harga, saya juga membuat folder untuk setiap buku catatan, dan meletakkan semua folder tab di dalamnya.

  20. Ketika Anda selesai dengan seluruh proyek ekspor, Anda bisa pergi ke OneDrive Anda dan menghapus semua buku catatan OneNote asli Anda yang telah disinkronkan di sana (pastikan Anda membuat cadangan file Anda sendiri sekarang, tentu saja! Ada OneDrive untuk Linux, atau Anda dapat mencoba sesuatu seperti Syncthing).

  21. Akhirnya, kita bisa mengganti nama semua file .md menjadi judul halaman OneNote mereka, yang merupakan baris pertama di setiap file, dengan menggunakan dua skrip. Buat file-file berikut:

    File 1: ~/scripts/rename-files-to-first-line.sh

    for i in *md ; do mv -n "$i" "$(cat "$i"|head -n1|tr -d '\000-\037[]{}()/\?*')".md; done
    

    File 2: ~/scripts/recurse.sh

    CDIR=$(pwd)
    for i in $(ls -R | grep :); do
        DIR=${i%:}                    # Strip ':'
        cd $DIR
        $1                            # Your command
        cd $CDIR
    done
    

    Kemudian navigasikan ke folder catatan Anda dan jalankan recurse.shperintah menggunakan rename-files-to-first-line.shperintah sebagai argumen:

    $ ~/scripts/recurse.sh ~/scripts/rename-files-to-first-line.sh
    

    Anda akan melihat skrip melalui semua file Anda secara rekursif, melemparkan beberapa kesalahan pada file dengan baris pertama yang aneh (yang tidak akan dikonversi ke nama file) dan pada kasus tepi lainnya. Namun, mvperintah dalam rename-files-to-first-linedijalankan dengan argumen -n, yang akan mencegahnya menimpa file apa pun. Mungkin ada beberapa catatan yang tidak diganti namanya, karena baris pertama di dalamnya kosong atau sesuatu yang aneh, tetapi Anda bisa memperbaiki beberapa file secara manual.

  22. Berjemur di tempat bersih Anda dari OneNote.

Peringatan:

  • Ini tidak menangkap subhalaman — Anda harus membuat ulang subhalaman dengan subfolder, jika mau.

  • Saya tidak tahu sebaik apa tabelnya - penurunan harga agak sedikit tidak enak untuk tabel.

  • Mungkin ada jenis format lain, seperti font, yang hilang atau kacau dalam ekspor. Tetapi untuk teks dan gambar yang kaya, itu bekerja dengan cukup baik!

Anders
sumber
1
Tidak akan berfungsi jika Anda memiliki lampiran di OneNote
Nikhil
4
Wow, sangat berantakan. Saya seharusnya tidak pernah mulai membuat catatan dengan perangkat lunak ini. Terima kasih telah menulis semua ini! Perhatikan bahwa sampai hari ini, masih belum ada fitur ekspor untuk OneNote di bawah macOS.
slhck
Adakah yang mencoba mengimpor file MD yang dihasilkan dari ini ke Notion? apa itu bekerja?
JayPex
Juga ini tidak realistis jika Anda memiliki ratusan halaman di bagian buku catatan masing-masing dengan judul yang unik, hanya berfungsi jika Anda memiliki gaya penamaan khusus yang digunakan OP. Saya menghargai upaya ini.
JayPex
6

Jawaban lain tidak memotongnya untuk saya, karena catatan saya bukan entri jurnal, tetapi saya menemukan solusi menggunakan Microsoft's Graph API . Ini berarti Anda bahkan tidak harus menjalankan OneNote, itu hanya mengharuskan catatan Anda disinkronkan ke akun Microsoft Anda dan kemudian Anda bisa mendapatkan catatan Anda sebagai HTML yang diformat dengan sempurna (yang dapat Anda lihat di browser atau dikonversi ke format apa pun yang Anda inginkan. menggunakan Pandoc).

Keajaiban terjadi dalam skrip Python ini . Ini menjalankan server web lokal sederhana yang dapat Anda gunakan untuk masuk ke akun Microsoft Anda dan setelah Anda melakukannya ia mengunduh semua catatan Anda sebagai HTML, plus gambar dan lampiran dalam format aslinya, dan menyimpannya dalam hierarki file dengan mempertahankan struktur asli notebook Anda (termasuk urutan halaman dan subhalaman).

Sebelum Anda dapat menjalankan skrip, Anda harus mendaftarkan "aplikasi" di Microsoft Azure sehingga dapat mengakses Grafik API:

  1. Buka https://aad.portal.azure.com/ dan masuk dengan akun Microsoft Anda.
  2. Pilih "Azure Active Directory" dan kemudian "Pendaftaran aplikasi" di bawah "Kelola".
  3. Pilih "Registrasi baru". Pilih nama apa pun, setel "Jenis akun yang didukung" ke "Akun di direktori organisasi dan akun Microsoft pribadi apa pun" dan di bawah "Arahkan Ulang URI", pilih Web dan masukkan http://localhost:5000/getToken. Daftar.
  4. Salin "Aplikasi (klien) ID" dan tempel seperti client_iddi awal skrip Python.
  5. Pilih "Sertifikat & rahasia" di bawah "Kelola". Tekan "Rahasia klien baru", pilih nama dan konfirmasikan.
  6. Salin rahasia klien dan rekatkan seperti secretpada skrip Python.
  7. Pilih "Izin API" di bawah "Kelola". Tekan "Tambahkan izin", gulir ke bawah dan pilih OneNote, pilih "Izin yang didelegasikan" dan centang "Notes.Read" dan "Notes.Read.All". Tekan "Tambahkan izin".

Maka Anda perlu menginstal dependensi Python. Pastikan Anda menginstal Python 3.7 (atau lebih baru) dan menginstal dependensi menggunakan perintah pip install flask msal requests_oauthlib.

Sekarang Anda dapat menjalankan skrip. Di terminal, navigasikan ke direktori tempat skrip berada dan jalankan dengan menggunakan python onenote_export.py. Ini akan memulai server web lokal pada port 5000.

Di browser Anda navigasikan ke http: // localhost: 5000 dan masuk ke akun Microsoft Anda. Pertama kali Anda melakukannya, Anda juga harus menerima bahwa aplikasi dapat membaca catatan OneNote Anda. (Ini tidak memberikan pihak ketiga akses ke data Anda, selama Anda tidak membagikan id klien dan rahasia yang Anda buat di portal Azure). Setelah ini, kembali ke terminal untuk mengikuti kemajuan.

Catatan: Microsoft membatasi jumlah permintaan yang dapat Anda lakukan dalam periode waktu tertentu. Oleh karena itu, jika Anda memiliki banyak catatan, pada akhirnya Anda mungkin melihat pesan seperti ini di terminal: Too many requests, waiting 20s and trying again.Ini bukan masalah, tetapi itu berarti seluruh proses dapat memakan waktu cukup lama. Sesi login juga dapat berakhir setelah beberapa saat, yang menghasilkan a TokenExpiredError. Jika ini terjadi, cukup muat ulang http: // localhost: 5000 dan skrip akan berlanjut (melewatkan file yang sudah diunduh).

danmou
sumber
Solusi simpel yang bagus, Tapi ini mendapatkan file dalam HTML, bukan MD
JayPex
1
Seperti yang saya sebutkan secara singkat dalam jawaban, Anda dapat menggunakan pandoc untuk mengkonversi HTML ke penurunan harga (misalnya pandoc --from html --to markdown -o output.md input.html). Namun, harus dicatat bahwa tidak semua halaman OneNote dapat direpresentasikan dengan sempurna dalam penurunan harga sehingga Anda mungkin kehilangan beberapa detail pemformatan. Juga, pandoc mendukung beberapa rasa penurunan harga sehingga Anda mungkin ingin membaca dokumentasi untuk menemukan yang sesuai dengan penggunaan Anda.
danmou
Ok tentu patut dicoba sebelum menempuh rute panjang pada jawaban pertama. Terima kasih!
JayPex
4

Untuk mengekspor halaman OneNote Anda ke penurunan harga individu ( .md) Anda harus menginstal Joplin dan Evernote .

Seperti yang disarankan dalam tautan ini , pertama-tama Anda mengimpor catatan ke Evernote. Kemudian ekspor semua catatan ke .enexfile dari Evernote dan impor ke Joplin.

Joplin memiliki opsi untuk mengekspor catatan sebagai .mdfile.

Catatan: Saya sarankan menggunakan bendera di Evernote sebelumnya jika Anda ingin mengelompokkan catatan Anda, karena cara Evernote untuk menjaga hierarki antara catatan berbeda dari OneNote.

bruno
sumber
1
Kamu Menakjubkan! Jawaban Anda mengilhami saya untuk mengimpor bagian buku catatan ke Evernote, lalu mengimpornya dari Evernote ke Notion! Terima kasih
JayPex
0

Saya telah menemukan pekerjaan yang tidak terprogram untuk ini.

TLDR;

Ekspor catatan dari OneNote ke Evernote lalu ke Notion (Opsional) lalu ekspor sebagai file individual dengan format pilihan Anda.


Saya telah benar-benar berjuang untuk mengekspor catatan saya dari Notion, sebuah tampilan online akan mengembalikan beberapa cara yang benar-benar kotor untuk mengekspor & membagi halaman OneNote dan mengubahnya menjadi file md atau html. Berantakan sekali!

Pada dasarnya Anda dapat dengan mudah mengimpor bagian OneNote Anda ke Evernote, setelah mengunduh Evernote untuk desktop, cukup mudah untuk melakukannya, lalu dari sana, sama mudahnya untuk mengimpornya ke Notion.

Perlu diketahui, Anda mungkin ingin mengimpor masing-masing bagian jika Anda ingin mempertahankan organisasi yang sama, jika tidak, Anda bisa mengimpor sebagian besar bagian, halaman akan ditandai dengan nama bagian dan itu semua jalan ke Notion juga.

Harap perhatikan bahwa Anda harus menyinkronkan buku catatan OneNote Anda dengan masuk ke akun Microsoft / Outlook Anda dan memverifikasi bahwa buku-buku tersebut disinkronkan menggunakan OneNote 2016.

Semoga ini membantu.

JayPex
sumber