※ゲスト一覧は出力できません。
はじめに
Notionユーザーの一覧を出力したいときってありますよね。
CSVとかでDLできれば良いんですけど、そういう機能は特にないのでAPIから出力するしかありません。
本記事ではGoogleAppsScript(GAS)を使ってスプレッドシートにNotionのユーザーリストを出力する手順を紹介します。
利用イメージ
スプレッドシートにユーザーリストを出力!

使い方
必要なもの
- Notion管理者権限
- WorkspaceAdmin or WorkspaceOwner が必要
- Googleスプレッドシート
1. Notion APIキーの取得
- Notionにログインする。
- 左上の「Settings & Members」に移動し、「Integrations」タブを選択する。
- 「+ New integration」ボタンをクリックし、必要な情報を入力して新しい統合を作成する。
- 作成した統合を選択し、表示される「Secret」をコピーする。これがNotion APIキーとなる。
2. Notionのページへのアクセス許可
- 統合の詳細ページで「Notion pages this integration has access to」セクションに移動する。
- 「+ Share to a page」をクリックし、アクセス許可を付与したいページを選択する。
3. Google Apps Scriptのプロジェクト作成
- Google Apps Scriptにアクセスし、ログインする。
- 「+ New Project」をクリックして新しいプロジェクトを作成する。
4. スクリプトの追加
- 下記スクリプトをコピーする。
- Google Apps Scriptエディタにペーストする。
const notionToken = PropertiesService.getScriptProperties().getProperty('NOTION_TOKEN');
const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
const sheet = spreadsheet.getSheetByName("シート1"); // change to your sheet name
function getNotionUsers() {
const baseUrl = 'https://api.notion.com/v1/users';
const pageSize = 100; // maximum page size
let hasNextPage = true;
let startCursor = null;
// Notion token from script properties
// Add header row
const headers = ["ID", "Type", "Name", "Avatar URL", "Email"];
sheet.getRange(1, 1, 1, headers.length).setValues([headers]);
let currentRow = 2; // starting from second row after headers
while (hasNextPage) {
let url = `${baseUrl}?page_size=${pageSize}`;
if (startCursor) {
url += `&start_cursor=${startCursor}`;
}
const options = {
headers: {
'Authorization': `Bearer ${notionToken}`,
'Notion-Version': '2021-05-13' // API version
},
method: 'GET'
};
const response = UrlFetchApp.fetch(url, options);
const data = JSON.parse(response.getContentText());
const users = data.results;
hasNextPage = data.has_more;
startCursor = data.next_cursor;
users.forEach((user, i) => {
const row = [user.id, user.type, user.name, user.avatar_url];
// if user is a person, add email to row data
if (user.type === "person" && user.person) {
row.push(user.person.email);
} else {
row.push("");
}
sheet.getRange(currentRow + i, 1, 1, row.length).setValues([row]);
});
currentRow += users.length;
}
}
5. スクリプトプロパティの設定
- Google Apps Scriptエディタで「ファイル」→「プロジェクトのプロパティ」を選択する。
- 「スクリプトのプロパティ」タブを選択する。
- 「+ 行を追加」ボタンをクリックし、
NOTION_TOKENという名前でNotionのトークンを保存する。
6. Googleスプレッドシートの準備
- 新しいGoogleスプレッドシートを作成し、名前を設定する。
- (任意)スクリプトの中の
シート1部分を、スプレッドシートのシート名に置き換える。
7. スクリプトの実行
- Google Apps Scriptエディタで、上部のプルダウンメニューから関数
getNotionUsersを選択する。 - 左側の再生ボタン(▶️)をクリックして実行する。
- 必要に応じて、Google Apps Scriptに必要な権限を付与する。
8. 結果の確認
- Googleスプレッドシートを開いて、ユーザー情報が正しく書き込まれていることを確認する。
おわりに
以上でNotionのユーザーリスト出力ができます。
GASのトリガーを設定しておくことで定期的にユーザーリストを更新とかできます。
ゲストは一覧で出力ができない仕様なので、ゲスト出力の方法はまた別途検証してブログにてご紹介します。
まだ検証完了してないけど、これならいけるっしょって方法があるので気長にお待ちください。
ではでは。

