Notion × GAS:Notionのユーザーリストをスプレッドシートに出力する

ばるす

ばるす

※ゲスト一覧は出力できません。

はじめに

Notionユーザーの一覧を出力したいときってありますよね。

CSVとかでDLできれば良いんですけど、そういう機能は特にないのでAPIから出力するしかありません。

本記事ではGoogleAppsScript(GAS)を使ってスプレッドシートにNotionのユーザーリストを出力する手順を紹介します。

利用イメージ

スプレッドシートにユーザーリストを出力!

使い方

必要なもの

  • Notion管理者権限 WorkspaceAdmin or WorkspaceOwner が必要

Googleスプレッドシート

1. Notion APIキーの取得

  1. Notionにログインする。
  2. 左上の「Settings & Members」に移動し、「Integrations」タブを選択する。
  3. 「+ New integration」ボタンをクリックし、必要な情報を入力して新しい統合を作成する。
  4. 作成した統合を選択し、表示される「Secret」をコピーする。これがNotion APIキーとなる。

2. Notionのページへのアクセス許可

  1. 統合の詳細ページで「Notion pages this integration has access to」セクションに移動する。
  2. 「+ Share to a page」をクリックし、アクセス許可を付与したいページを選択する。

3. Google Apps Scriptのプロジェクト作成

  1. Google Apps Scriptにアクセスし、ログインする。
  2. 「+ New Project」をクリックして新しいプロジェクトを作成する。

4. スクリプトの追加

  1. 下記スクリプトをコピーする。
  2. 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のトリガーを設定しておくことで定期的にユーザーリストを更新とかできます。

ゲストは一覧で出力ができない仕様なので、ゲスト出力の方法はまた別途検証してブログにてご紹介します。

まだ検証完了してないけど、これならいけるっしょって方法があるので気長にお待ちください。

ではでは。

この記事をシェア