皆さんの会社では、タスク管理やプロジェクト管理ツールとしてNotionを利用していますか?最近、バックオフィスや開発部門を問わずNotionの導入が進んでいます。
当ブログでは以前、
[Notion APIを利用してスプレッドシートと連携させる方法(準備編)](https://admin-it.xyz/gas/notion-api-preparation/)と、
[DBデータを取得する編](https://admin-it.xyz/gas/notion-api-getdbdata/)をご紹介しました。
今回はその**応用編**として、取得したデータを活用して「全社のタスク・プロジェクト状況が一目でわかるダッシュボード」を作る具体的な手順を解説します。
## なぜNotionのデータをわざわざスプレッドシートに持ってくるのか?
「Notionのダッシュボード機能を使えばいいのでは?」と思うかもしれません。しかし、管理部門やCFO視点では、スプレッドシートにデータを同期させることには大きなメリットがあります。
* **経営陣への報告フォーマット化**: 独自のピボットテーブルやQuery関数を用いて、必要な切り口(部署別、月別など)で瞬時に集計できる
* **Googleデータポータル(Looker Studio)等との連携**: シートをソースにすることで、経営指標ダッシュボードの一部としてグラフィカルに可視化できる
* **アクセス権の一元管理**: Notionアカウントを持たない経営陣にも、スプレッドシートの権限だけで数値を共有できる
## ダッシュボード構築の3ステップ
### ステップ1:Notionでタスク管理DBを作る
まずはNotion上にデータベースを作成します。以下のプロパティを用意してください。
* `Name`(タイトル): タスク名
* `Assignee`(ユーザー): 担当者
* `Status`(ステータス): 未対応 / 進行中 / 完了
* `Deadline`(日付): 期限
※APIを利用するためのToken取得や接続設定については、過去の記事「[Notion APIの準備](https://admin-it.xyz/gas/notion-api-preparation/)」をご確認ください。
### ステップ2:GASでNotion APIを叩いてデータを取得する
Notionからデータを取得する基本的なコードを記述します。
“`javascript
function updateDashboard() {
const token = ‘YOUR_INTEGRATION_TOKEN’; // 取得したトークン
const dbId = ‘YOUR_DATABASE_ID’; // NotionのDB ID
const url = ‘https://api.notion.com/v1/databases/’ + dbId + ‘/query’;
const options = {
method: ‘post’,
headers: {
‘Authorization’: ‘Bearer ‘ + token,
‘Notion-Version’: ‘2022-06-28’,
‘Content-Type’: ‘application/json’
}
};
// Notion APIを実行
const response = UrlFetchApp.fetch(url, options);
const data = JSON.parse(response.getContentText());
const results = data.results;
// ステップ3の処理へ続く…
writeToSpreadsheet(results);
}
“`
### ステップ3:スプレッドシートに書き出してグラフ化(初心者が躓くポイント!)
取得した`results`(JSONの配列)から必要なデータだけを抽出して、スプレッドシートに書き出します。ノンプログラマーが一番躓きやすい「データ構造の分解」は、このように処理します。
“`javascript
function writeToSpreadsheet(results) {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(‘ダッシュボード用データ’);
// 以前のデータをクリア(1行目のヘッダーは残す)
sheet.getRange(2, 1, sheet.getLastRow(), 4).clearContent();
let rows = [];
results.forEach(page => {
// Notion特有の深い階層からデータを取り出す
const taskName = page.properties[‘Name’].title[0]?.plain_text || ”;
const status = page.properties[‘Status’].status?.name || ”;
const deadline = page.properties[‘Deadline’].date?.start || ”;
rows.push([taskName, status, deadline]);
});
// 一括でシートに書き込む(処理速度向上のコツ!)
if(rows.length > 0) {
sheet.getRange(2, 1, rows.length, rows[0].length).setValues(rows);
}
}
“`
このスクリプトを実行すると、シート上にNotionのタスク一覧が綺麗に並びます。あとはこのシートを参照して、円グラフ(ステータス割合)やピボットテーブル(担当者別タスク数)を作れば、立派なダッシュボードの完成です。
## まとめと次のステップ
Notionは「入力しやすい」ツールであり、スプレッドシートは「集計・視覚化しやすい」ツールです。GASを使って両者の良いとこ取りをすることで、管理部門の業務効率は飛躍的に向上します。
「GASの操作にまだ不安があるな…」という方は、ぜひ「[GASを習得したい人向け〜お勧めの勉強方法5選〜](https://admin-it.xyz/gas/gas-how-to-study/)」も参考に、自動化への第一歩を踏み出してみてください!
