😸

NotionとKindleの連携を考える。

2022/01/19に公開約2,200字1件のコメント

はじめに

Kindle本のまとめをNotionで行いたい。
Synced blockが導入されBlock単位の引用がやりやすくなり、本のまとめページと課題のページをうまく連携できるようになりました。なのでKindle本まとめをNotionへ集約していきたい思いがありました。ただ、毎回Notionで本のリンクや画像を定義するのが大変です。
この記事では、NotionにKindle本を連携する手法についてまとめます。

今回の記事では完全自動でやる方法については書きません。完全自動化できたときにはこの記事をアップデートしていきたいと思います。今回はCSVを返した連携をしていきます。

KindleをCSVにする方法。

https://gist.github.com/aprilbrown/55a21a1de99faa431b16de72994e0695
からForkし画像URL取得とAmazonリンクを追加した下記のコードに追加しました。

// init
let xhr = new XMLHttpRequest()
let domain = 'https://read.amazon.co.jp/'
let items = []
let csvData = ""

// function
function getItemsList(paginationToken = null) {
  let url = domain + 'kindle-library/search?query=&libraryType=BOOKS' + ( paginationToken ? '&paginationToken=' + paginationToken : '' ) + '&sortType=recency&querySize=50'
  xhr.open('GET', url, false)
  xhr.send()  
}

// request result
xhr.onreadystatechange = function() {
  switch ( xhr.readyState ) {
    case 0:
      console.log('uninitialized')
      break
    case 1:
      console.log('loading...')
      break
    case 4:
      if(xhr.status == 200) {
        let data = xhr.responseText
        data = JSON.parse(data)
        if(data.itemsList) {
          items.push(...data.itemsList)
        }
        if(data.paginationToken) {
          getItemsList(data.paginationToken)
        }
      } else {
        console.log('Failed')
      }
      break
  }
}

// action
getItemsList()

// to csv
csvData += "title,asin,link,image\n"
items.forEach(item => {
    console.log(item)
  csvData += '"' + item.title + '","' + item.asin + '","https://www.amazon.co.jp/dp/'+ item.asin +'","' +item.productUrl+'"\n'
})
window.location = 'data:text/csv;charset=utf8,' + encodeURIComponent(csvData)

https://read.amazon.co.jp/
にてデベロッパーツールのコンソールにコピー・ペーストしてください。

CSVをインポートする方法。

Notionの左下の「Import」または「インポート」を選択。

CSVを選択してインポート。

ギャラリーを表紙にする方法。

ImageカラムをURLから「Files & media」をに変更

Viewをギャラリーに変更。
Propertiesから「Card Preview」をimageに変更。
Fitimageにすると、最初の画像のような見た目になります。

Discussion

参考にさせていただいています。
記載いただいているスクリプトが動いてなさそうでした、修正箇所を記載させていただきます。
お手すきで修正いただけると幸いです。

javascript
- window.location = 'data:text/csv;charset=utf8,' + encodeURIComponent(csvData)ation = 'data:text/csv;charset=utf8,' + encodeURIComponent(csvData)
+ window.location = 'data:text/csv;charset=utf8,' + encodeURIComponent(csvData)
ログインするとコメントできます