無料ツール配布や勉強会の新着情報をLINEでお知らせします

Notion APIとGASでNotionとGoogleスプレッドシートと同期する方法

ふきげん猫ちび

Notion APIを使ってみたい。
GoogleスプレッドシートとNotionを同期したい。

ふきげん猫ちび

ふきげん猫ちび

Google Apps Script(GAS)の使い方は知っている。

このような方々のために、本日はNotion APIとGoogle App Script(GAS)を使用してGoogleスプレッドシートのデータをNotionに出力する方法を解説します。

大まかに以下の流れになります。

  1. NotionのIntegrationを作成し、トーケンを作る
  2. Notionでテーブルを作成し、アクセスを許可する
  3. GoogleスプレッドシートでGASを実行する

ヘイショー

それでは行ってみましょう!

Step 1. Notionの「My integrations」ページに移動

参考 My integrations | Notion Developers

こちらのリンクからNotionのMy integrationsページに移動し、「Create new integration」をクリック。

Step 2. Integrationに必要な情報を入力

適当な名前を付けます。画像は無しでもOK。

Step 3. Internal Integration Tokenをコピー

Internal Integration Tokenをコピーしてメモしておきます。

Step 4. Notionのテーブルを作成する

Notionのワークスペースに移動し、テーブルを作成します。

Step 5. NotionテーブルにIntegrationを招待しておく

テーブル側でIntegrationへのアクセスを許可するために、Share→Inviteから先ほど作成したIntegrationを選択してクリックします。

Step 6. NotionテーブルのデータベースIDを確認

GASを実行する時にNotion側のテーブルIDが必要になるので、確認していきます。

テーブルタイトルの右にある点3つのアイコン→「View database」をクリックして、テーブルのデータベースページへ移動します。

最後の /(スラッシュ)からURLの「?v=〇〇」までの32文字の文字列がテーブルIDです。

後で使用するのでコピーしてメモしておきます。

Step 7. Googleスプレッドシートへ

次にGoogleスプレッドシートで、同期させる用のファイルを作ります。

一行目にはName / Date / Description、その下のセルには適当な値を入力しておきます。

Step 8. Google Apps Script(GAS)のスクリプトを書く

以下のスクリプトをエディターに入力して、GASを走らせます。

1行目にStep 3で取得してトーケン、2行目にStep 6で取得したテーブルIDを入力ください。

コード

const NOTIONTOKEN = '★Notion APIのトーケンを入力★';
const DATABASEID = '★NotionのテーブルIDを入力★';

function myFunction() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const js = convertJson(ss.getDataRange().getValues());

  js.forEach(function (elem, index) {
    const obj = {
      "parent": {
        "database_id": DATABASEID
      },
      "properties": {
        "Name": {
          "title": [
            {
              "text": {
                "content": elem.Name
              }
            }
          ]
        },
        "Description": {
          "rich_text": [
            {
              "text": {
                "content": elem.Description
              }
            }
          ]
        },
        "Date": {
          "type": "date",
          "date": {
            "start": Utilities.formatDate(elem.Date, "JST", "yyyy-MM-dd"),
            "end": null
          }
        }
      }
    };
    postNotion(obj);
    Utilities.sleep(1000);
  });

}

function postNotion(object){
  const options = {
  method: 'post',
  headers: {
    'Content-Type': 'application/json',
    'Notion-Version':'2021-05-13',
    'Authorization':"Bearer "+NOTIONTOKEN
  },
  payload: JSON.stringify(object)
};
console.log(options)
  var response = UrlFetchApp.fetch('https://api.notion.com/v1/pages', options);

}

function convertJson(range) {
  const key = range[0];

  const js = range.slice(1).map(
    function (row) {
      const obj = {};
      row.map(function (item, index) {
        obj[String(key[index])] = item;
      }
      );
      return obj;
    });
  return js;
}

GASを初めて使う方は以下の記事を参考にしてください。

関連記事 GAS(Google App Script)のスクリプトを走らせる方法

ヘイショー

これで完了です。Googleスプレッドシートの内容がNotionのテーブルに反映されていることを確認ください。

まとめ

シンプルな内容なので実用的ではないかもしれませんが、ここから発展させていきたいと思います。

ヘイショー

ご精読ありがとうございました!

3 COMMENTS

藤内

最後の /(スラッシュ)からURLの「?v=〇〇」までの32文字の文字列がデータベースIDです。
後で使用するのでコピーしてメモしておきます。

この部分は
結局どこで使うのでしょうか?

返信する
ヘイショー

分かりにくかったようなので修正しました。
お知らせありがとうございます。

返信する

コメントを残す

メールアドレスが公開されることはありません。