Google Apps Script で Backlog の通知を取得し、Slack に投稿するためのサンプルです。単一ワークスペース構成と複数ワークスペース構成の両方に対応しています。
- メインファイル:
back2slack.gs - 想定実行環境: Google Apps Script (時間主導トリガー)
- Google Apps Script プロジェクトを作成し、
back2slack.gsの内容を貼り付けます。 - メニュー「設定 → スクリプト プロパティ」を開き、以下のいずれかの方法でプロパティを登録します。
BACKLOG_CONFIGS に JSON 配列を保存します。各要素が 1 つのワークスペース設定です。
[
{
"space": "space1",
"apiKey": "<Backlog API Key>",
"webhook": "https://hooks.slack.com/services/...",
"label": "Workspace A",
"storageKey": "BACKLOG_LAST_SEEN_NOTIFICATION_ID__workspace_a"
},
{
"space": "space2",
"apiKey": "<Backlog API Key>",
"webhook": "https://hooks.slack.com/services/...",
"label": "Workspace B"
}
]space: Backlog のスペースサブドメイン (例:https://space1.backlog.com→space1)apiKey: Backlog API キーwebhook: Slack Incoming Webhook URL- 任意フィールド
label: ログ出力時に使う識別名 (未指定時は自動で生成)storageKey: 既読通知IDを保存するスクリプトプロパティ名。指定しない場合は自動生成されます。
従来の 3 つのプロパティを設定すれば、そのまま単一ワークスペースとして動作します。
BACKLOG_SPACEBACKLOG_API_KEYSLACK_WEBHOOK_URL
- 「トリガー」メニューを開き、関数
runを選択します。 - イベントのソースを「時間主導型」、タイプを「分ベース」などに設定し、5〜15 分間隔で実行するのが目安です。
run関数が設定情報を読み込み、ワークスペースごとにprocessWorkspaceを順番に実行します。- 各ワークスペースで Backlog API (
/api/v2/notifications) を呼び出し、未読かつ前回取得より新しい通知のみを抽出します。 - 抽出した通知を Slack Webhook へ投稿し、使用した通知 ID の最大値をスクリプトプロパティへ保存します。
- 新着が無い場合も、ワークスペースごとにログへ「新着通知なし」を出力します。
runTest 関数を Apps Script エディタから手動実行すると、設定済みの Slack Webhook に簡単なテキストメッセージを送信できます。
BACKLOG_CONFIGS が不正なJSONですなどのエラー: JSON フォーマット (ダブルクォート、カンマ等) を再確認してください。space がありませんと表示される: 設定オブジェクト内にspaceプロパティが含まれているか確認してください。- 通知が重複する / 送信されない:
storageKeyが設定ごとに一意になっているか確認してください。複数設定の場合は自動で重複チェックを行います。
このスクリプトは MIT ライセンスで提供されます。詳細は必要に応じてライセンスファイルを追加してください。