npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@hankei6km/gas-notion2content

v0.1.0

Published

Notion のデータベースを変換しダウンロードする GAS ライブラリー

Downloads

2

Readme

gas-notion2content

Notion のデータベースを変換しダウンロードする GAS ライブラリー。

実際の処理は hankei6km/notion2content を利用しています。

Setup

Apps Script

ライブラリーは App Script で利用できる状態になっています。 Apps Script のコードエディターで以下の手順を実行するとプロジェクトへ追加できます。

  1. コードエディターのファイル名一覧が表示される部分の「ライブラリ +」をクリック
  2. 「スクリプト ID」フィールドに 1CVcNWUK2y0EqVpABMf_7KIb8MXv8ArTSwaa-9NnSYFdo1kKzw1i0rLv3 を入力し検索をクリック
  3. バージョンを選択(通常は最新版)
  4. 「ID」を Notion2content 等へ変更
  5. 「追加」をクリック

上記以外にも Release ページから gas-notion2content.zip をダウンロードし、/dist ディレクトリーをプロジェクトへコピーできます。

Notion

Notion 外部からデータベースを参照するためのインテグレーション(API KEY)が必要です。以下を参考に作成してください。機能(権限)は最小で「コンテンツを読み取る」が必要です。

以下を参考に、参照(ダウンロード)予定のデータベースをインテグレーションと共有してください。

Usage

Basic

Notion データベースのページを変換するサンプルです。

async function MyFunc() {
  const props = PropertiesService.getScriptProperties()
  const apiKey = props.getProperty('NOTION2CONTENT_API_KEY')
  const database_id = props.getProperty('NOTION2CONTENT_DATABASE_ID')

  const i = Notion2content.toContent(
    { auth: apiKey },
    {
      target: ['props', 'content'],
      query: {
        database_id: database_id
      },
      toItemsOpts: {},
      toHastOpts: {}
    }
  )

  for await (const c of i) {
    console.log(JSON.stringify(c, null, 2))
  }
}

yield:

  • id: Notion のページのブロックを指す id がセットされます
  • props: Notion のプロパティの値が格納されます
  • content: Notion のブロックが hast として格納されます
{
  "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "props": {
    "ステータス": "Not started",
    "text": "test1",
    // snip...
  },
  "content": {
    "type": "root",
    "children": [
      {
        "type": "element",
        "tagName": "p",
        "properties": {},
        "children": [
          {
            "type": "text",
            "value": "本文的なものを追加。"
          }
        ]
      },
      // snip...
    ]
  }
}

Format

propscontent を変換する簡易的な関数を使えます。

  • toFrontmatterString - props を Frontmatter へ変換
  • toHtmlString - content を HTML へ変換
  • toMarkdownString - content を Markdown へ変換
async function run() {
  for await (const c of i) {
    console.log(await Notion2content.toMarkdownString.(c, { sanitizeSchema: true }))
  }
}
await run()

yield: (以下のサンプルはエディターのフォーマッタで整形されています)

## サンプルのページ

- リスト1
- リスト2
- リスト3

| 商品コード | 商品名 |
| ---------- | ------ |
| 201        | りんご |
| 203        | みかん |
| 304        | 食パン |

また、NPM パッケージを利用できる状況であれば、hast 用のユーティリティ などでも整形できます。

TypeScript

TypeScript(clasp) でコードを記述している場合は、以下の方法で型定義を設定できます。

型定義パッケージをインストールします。

$ npm install --save-dev  @hankei6km/gas-notion2content

tsconfig.json に定義を追加します。

{
  "compilerOptions": {
    "target": "ES2019",
    "module": "ES2020",
    "lib": ["ESNext"],
    "types": ["@types/google-apps-script", "@hankei6km/gas-notion2content"]
  }
}

License

MIT License

Copyright (c) 2024 hankei6km