😸

NotionとKindleの連携する

2022/01/19に公開
1

はじめに

Kindle本のまとめをNotionへ集約していくことを考えていました。とはいえ、毎回Notionで本のリンクや画像を定義するのは非常に面倒です。本記事では、NotionとKindleを連携する方法をまとめています。

今回の記事では、完全な自動化を行う方法については書きません。本の一覧CSVを出力する方法について記述しています。

KindleをCSVにする方法。

https://gist.github.com/aprilbrown/55a21a1de99faa431b16de72994e0695
からFockして一部改善したコードが下記になります。


// 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

aGlnYWtpbg==aGlnYWtpbg==

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

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)