ふきげん猫ちび
ふきげん猫ちび
ふきげん猫ちび
このような方々のために、本日はNotion APIとGoogle App Script(GAS)を使用してGoogleスプレッドシートのデータをNotionに出力する方法を解説します。
大まかに以下の流れになります。
- NotionのIntegrationを作成し、トーケンを作る
- Notionでテーブルを作成し、アクセスを許可する
- 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)のスクリプトを走らせる方法
ヘイショー
まとめ
シンプルな内容なので実用的ではないかもしれませんが、ここから発展させていきたいと思います。
ヘイショー