[GAS][Notion]GoogleスプレッドシートからNotionのDBにデータを追加
Googleスプレッドシートに入力したデータをそのまま転用して、Notionのデータベースにデータを追加したいと思いつきました。
NotionはAPIが公開されているのでGoogle Apps Scriptを用いてツールを作ることが出来るようです。
以下のNotionデータベース「会議実績リスト」を例にします。
以下のスプレッドシートに入力した内容をNotionDBに追加していきます。
Notion側の事前準備も含めて手順を記します。 1_新規インテグレーション作成→トークン取得
2_コネクトの追加&データベースID取得
3_スクリプトプロパティにデータベースIDとトークンを格納
4_GASのスクリプト
5_GAS実行
※Notion事前準備はこちらの記事を参考にさせていただきました。
ありがとうございます!
1_新規インテグレーション作成→トークン取得
Notion内のページ「私のインテグレーション」より「新しいインテグレーション」押下
「基本情報」にて「インテグレーション名」を入力、ワークスペースを選択し「送信」押下
トークンの「表示」を押下後トークンをコピー(後程GASのスクリプトプロパティに格納します)
2_コネクトの追加&データベースID取得
次に、連携したいNotionを開きコネクトを追加します。
右上の三点リーダから「コネクトを追加」→先ほど新規作成したインテグレーションを選択し追加
また、連携したいNotionページのURLよりデータベースIDをコピーします。
URLのうち「スラッシュ」~「?v=」までの文字列が「データベースID」です。(下記のURLで言うと「aaaaaaaaa」の部分)
https://www.notion.so/aaaaaaaaa?v=bbbbbbbb
このデータベースIDもGASのスクリプトプロパティに格納します。
3_スクリプトプロパティにデータベースIDとトークンを格納
GASの「プロジェクトの設定」(歯車アイコン)より、スクリプトプロパティにデータベースIDとトークンを格納します。
4_GASのスクリプト
スクリプトはこちら。
function addDataToNotion() {
//スクリプトプロパティに格納したデータベースID、トークンを取得
const props = PropertiesService.getScriptProperties();
const dbId = props.getProperty('NOTION_DB_ID');
const token = props.getProperty('NOTION_TOKEN');
const apiUrl = 'https://api.notion.com/v1/pages';
//データベースIDを渡しオブジェクトを生成
const obj = generateObj(dbId);
//NotionAPIにポストしデータを追加
const options = {
method: "POST",
headers: {
"Content-type": "application/json",
"Authorization": "Bearer " + token,
"Notion-Version": '2022-06-28',
},
payload: JSON.stringify(obj),
};
UrlFetchApp.fetch(apiUrl, options);
}
function generateObj(dbId) {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('入力用シート');
//シートに入力された値を取得
const date = Utilities.formatDate(new Date(sheet.getRange(1, 2).getValue()), "Asia/Tokyo", "yyyy-MM-dd");
const mtgName = sheet.getRange(2, 2).getValue();
const mtgRoom = sheet.getRange(3, 2).getValue();
const members = sheet.getRange(4, 2).getValue();
const minutesUrl = sheet.getRange(5, 2).getValue();
const category = sheet.getRange(6, 2).getValue();
const taskCheck = sheet.getRange(7, 2).getValue();
//オブジェクトの生成
const pageObj = {
parent: {
database_id: dbId,
},
properties: {
"日付": {
"date": {
"start": date,
"end": null
}
},
"会議名": {
"title": [{
"text": {
"content": mtgName
}
}]
},
"会議場所": {
"rich_text": [{
"text": {
"content": mtgRoom
}
}]
},
"参加者": {
"rich_text": [{
"text": {
"content": members
}
}]
},
"議事録URL": {
"url": minutesUrl
},
"会議種別": {
"select":
{
"name": category
}
},
"残タスク有り": {
"checkbox": taskCheck
}
}
}
return pageObj;
}
今回のサンプルではプロパティが6種類(Date、TItle、Rich text、URL、Select、Checkbox)でしたが、Notionのプロパティごとにオブジェクトの記法があるようです。
公式リファレンスはこちら。
また「Notion-Version」も随時変更されるようですので、公式サイトより随時ご確認ください。
5_GAS実行
GASを実行すると、Notionのデータベースに新規データが追加され、スプレッドシート上の値がそれぞれの列に入力されます。
NotionのUIは非常にわかりやすく入力も容易ですが、すでにスプレッドシート上にデータがあるのであればGASとNotioAPIを用いて転記することが出来とても便利です。
こはた先生のこの新着記事もおススメです!すごい!
※類似の記事を書きました。
この記事が気に入ったらサポートをしてみませんか?