※ゲスト一覧は出力できません。
はじめに
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のトリガーを設定しておくことで定期的にユーザーリストを更新とかできます。
ゲストは一覧で出力ができない仕様なので、ゲスト出力の方法はまた別途検証してブログにてご紹介します。
まだ検証完了してないけど、これならいけるっしょって方法があるので気長にお待ちください。
ではでは。