はじめに
チャットやWebページから簡単にホワイトボードを作成して、すぐに共同編集を始めることができたら便利ですよね?
この記事では、Zoom Whiteboard APIを使ってホワイトボードの作成、権限変更、共有URL取得を実装する方法を、実際に動くコードと共に解説します。
本記事では、Zoom APIの基本的なOAuth認証が完了していることを前提としています。
OAuth認証について詳しく知りたい方は、2025年版 はじめての Zoom API - OAuth編 を参考にしてください。
Zoom Whiteboard APIとは?
Zoom Whiteboard APIを使うことで、以下の操作を自動化できます:
- 🎨 ホワイトボードの作成・削除
- 🔒 権限設定(閲覧・編集権限の管理)
- 🔗 共有URLの取得
- 📋 ホワイトボード一覧の取得
- 👥 メンバーの追加・削除
今回は特に「作成→権限変更→共有URL取得」の基本フローに焦点を当てて解説します。
必要なスコープ設定
Whiteboard APIを使用するには、OAuth Appに以下のスコープを設定する必要があります:
スコープ | 用途 |
---|---|
whiteboard:read:whiteboard |
ホワイトボード情報の閲覧 |
whiteboard:write:whiteboard |
ホワイトボードの作成・編集 |
whiteboard:update:share_setting |
ホワイトボードの設定変更 |
実装の全体フロー
「作成→権限変更→共有URL取得」の流れをざっくり起こすと以下の通りです:
// 1. ホワイトボード作成
const whiteboard = await createWhiteboard("プロジェクト会議");
// 2. 共有設定の更新(必要に応じて)
await updateShareSettings(whiteboard.whiteboard_id);
// 3. 共有URL取得
const shareUrl = await getWhiteboardInfo(whiteboard.whiteboard_id);
実装コード
環境設定
const axios = require("axios").default;
// OAuth設定(OAuth編の記事を参考に事前取得)
const clientId = "your_client_id";
const clientSecret = "your_client_secret";
let accessToken = ""; // OAuth認証で取得したアクセストークン
1. ホワイトボード作成
/**
* ホワイトボードを作成する
* @param {string} name - ホワイトボード名
* @param {string} accessToken - アクセストークン
* @returns {Object} 作成されたホワイトボードの情報
*/
async function createWhiteboard(name, accessToken) {
const options = {
method: "POST",
url: "https://api.zoom.us/v2/whiteboards",
headers: {
"Content-Type": "application/json",
Authorization: "Bearer " + accessToken,
},
data: { name: name },
};
try {
const { data } = await axios.request(options);
console.log("Whiteboard created:", {
id: data.whiteboard_id,
name: data.name,
url: data.whiteboard_url
});
return data;
} catch (error) {
console.error("Whiteboard creation failed:",
error.response?.data || error.message);
throw error;
}
}
2. 共有設定の更新
/**
* ホワイトボードの共有設定を更新する
* @param {string} whiteboardId - ホワイトボードID
* @param {string} accessToken - アクセストークン
*/
async function updateShareSettings(whiteboardId, accessToken) {
const options = {
method: "PATCH",
url: `https://api.zoom.us/v2/whiteboards/${whiteboardId}/share_setting`,
headers: {
"Content-Type": "application/json",
Authorization: "Bearer " + accessToken,
},
data: {
share_link_setting: {
share_scope: 2, // 2: アカウント内のメンバー
share_role: 2 // 2: 編集者権限
}
},
};
try {
const { data } = await axios.request(options);
console.log("Share settings updated:", data);
return data;
} catch (error) {
console.error("Share settings update failed:",
error.response?.data || error.message);
throw error;
}
}
共有設定パラメータ
パラメータ | 値 | 意味 |
---|---|---|
share_scope |
0 | 共有ユーザーのみ |
1 | アカウント内のメンバー | |
2 | 誰でも | |
share_role |
2 | 編集可能 |
3 | コメント可能 | |
4 | 閲覧のみ |
3. ホワイトボード情報取得(共有URL含む)
/**
* ホワイトボード情報を取得(共有URL含む)
* @param {string} whiteboardId - ホワイトボードID
* @param {string} accessToken - アクセストークン
* @returns {Object} ホワイトボード情報
*/
async function getWhiteboardInfo(whiteboardId, accessToken) {
const options = {
method: "GET",
url: `https://api.zoom.us/v2/whiteboards/${whiteboardId}`,
headers: {
"Content-Type": "application/json",
Authorization: "Bearer " + accessToken,
},
};
try {
const { data } = await axios.request(options);
console.log("Whiteboard info retrieved:", {
id: data.whiteboard_id,
name: data.name,
shareUrl: data.share_link
});
return data;
} catch (error) {
console.error("Whiteboard info retrieval failed:",
error.response?.data || error.message);
throw error;
}
}
チャットボットとの連携例
まとめ
この記事では、Zoom Whiteboard APIを使った基本的な操作を実装しました。
-
ホワイトボード作成:
POST /v2/whiteboards
-
共有設定更新:
PATCH /v2/whiteboards/{id}/share_setting
-
情報取得:
GET /v2/whiteboards/{id}
これらの機能を組み合わせることで、「チャットからすぐにホワイトボードを作成して共同編集を始める」というワークフローが実現できます。
参考リンク・リソース
実装で困ったことがあれば、コメント欄で質問してください!
この記事は、Zoom Communications, Inc.の公式にサポートされているものではなく、個人的に公開しているものになります。Zoom Communications, Inc.とその従業員、および関連会社は、本記事の使用や保守について責任を負いません。技術的な議論やサポートが必要な場合は、作成者やZoom開発者コミュニティ( https://devforum.zoom.us/ )にご連絡いただけますが、この記事にはサービスレベル契約に基づくサポートがないことをご理解ください。