【保存版】GAS×Notion APIで作る、最強のタスク・プロジェクト管理ダッシュボード

この記事は約5分で読めます。

皆さんの会社では、タスク管理やプロジェクト管理ツールとして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/)」も参考に、自動化への第一歩を踏み出してみてください!

タイトルとURLをコピーしました