🚀 新規事業

slack-channel-auto-create

最終更新 2026年05月09日 / 40_新規事業/SCALE_Build/カタログ/機能集/slack-channel-auto-create.md

Slack チャンネル自動作成 + 招待

用途

Slack API でチャンネル新規作成 → ユーザー招待 → 初期メッセージ投稿。案件発生時の自動化。

特徴

  • conversations.create
  • conversations.invite(複数ID対応)
  • 初期投稿
  • 命名規則パターン

コード(コピペ用)

// Slack チャンネル自動作成 + 招待
async function createSlackChannel(opts: {
  token: ●●●●●●;
  name: string;             // 例: "case-2026-001-acme"
  userIds: string[];        // 招待する Slack ユーザーID
  initialMessage?: string;
}): Promise<string> {
  // 1. チャンネル作成
  const cr = await fetch('https://slack.com/api/conversations.create', {
    method: 'POST',
    headers: { Authorization: `Bearer ${opts.token}`, 'Content-Type': 'application/json' },
    body: JSON.stringify({ name: opts.name.toLowerCase().replace(/[^a-z0-9-]/g, '-') }),
  }).then(r => r.json());

  if (!cr.ok) throw new Error('Channel create failed: ' + cr.error);
  const channelId = cr.channel.id;

  // 2. 招待
  if (opts.userIds.length > 0) {
    await fetch('https://slack.com/api/conversations.invite', {
      method: 'POST',
      headers: { Authorization: `Bearer ${opts.token}`, 'Content-Type': 'application/json' },
      body: JSON.stringify({ channel: channelId, users: opts.userIds.join(',') }),
    });
  }

  // 3. 初期メッセージ
  if (opts.initialMessage) {
    await fetch('https://slack.com/api/chat.postMessage', {
      method: 'POST',
      headers: { Authorization: `Bearer ${opts.token}`, 'Content-Type': 'application/json' },
      body: JSON.stringify({ channel: channelId, text: opts.initialMessage }),
    });
  }

  return channelId;
}

// 使い方:
// const channelId = await createSlackChannel({
//   token: ●●●●●●,
//   name: `case-${caseId}-${clientName}`,
//   userIds: [pmId, fsId, ceoId],
//   initialMessage: `📋 案件「${clientName}」始動。詳細: ${url}`,
// });

使い方

対象プロジェクトに該当ファイルをコピーして、props を流し込むだけ。

注意事項

  • 依存パッケージを忘れず追加