動画アーカイブ格納フロー

SlackArchiveFlow.js の全体像。イベント終了 → ボタン選択 → 格納完了まで。
対象カテゴリ: ウェビナー ジュニア ゼミ 入学式

前工程: 終了通知 5つのボタン 1番: 格納OK 2番: 秘書依頼 3番: 編集チーム 4番: ローカル保存 5番: アーカイブ不要 自動後工程 5項目チェック

1前工程: 終了通知

イベント終了時刻になると、endNotice_scanAndPost(5分おきトリガー)がイベントDBをスキャンし、該当行のSlackチャンネルに「終了通知 + 5つのボタン」を自動投稿する。

カテゴリ別ルーティング(投稿先 / メンション先)

カテゴリ
(B列+C列)
終了通知の投稿先ch CC先(個人) メンション対象
ウェビナー #community_contents_webinar 田松由奈 講師 / 責任者 / モデレーター + cc 田松由奈
ジュニア
B列=ウェビナー & C列=ジュニア
#junior_webinar 落合里南 講師 / 責任者 / モデレーター + cc 落合里南
ゼミ #community_ss_seminar 豆井知子 講師 / 責任者 / モデレーター + cc 豆井知子
入学式
Day0のみ対象。Day1〜3は除外
#community_ss_entrance-ceremony 福住花和 講師 / 責任者 / モデレーター + cc 福住花和
投稿後、スレッド内に5つのボタン(1〜5番)が表示される。ボタンを押すとブラウザが開き、ログイン済みの10xcユーザーとしてGAS(doGet)が実行される。

25つのボタン

1
Zoom問題なし・格納OKそのままダウンロードOK。自動で格納フローに進む
2
冒頭カット編集が必要秘書さんに編集を依頼。1時間後に自動通知
3
途中カット編集が必要編集チームに依頼。1時間後に自動通知
4
マイコンピューターに保存ローカルの動画をDriveに手動格納
5
アーカイブ不要このイベントはアーカイブしない。スレッド終了

3各ボタンの詳細フロー

1
格納OK(自動ダウンロード → 格納依頼 → Discord投稿)

入学式 Day1〜3 は対象外: 入学式はDay0のみが対象。Day1〜3はタイトルに「DAY 1/2/3」が含まれる行を自動判定し、終了通知・格納依頼・エラー通知すべてでスキップされる(通知自体が飛ばない)。
1番ボタンを押す ブラウザでGAS doGet(action=ok)が開く
5項目チェック 入学式(Day0のみ) → 免除(チェックなしで通過)
ウェビナー / ジュニア / ゼミ → 必須(未入力ならエラー表示+再押下ボタン表示)
未入力がある場合:
ボタンがロックされ、未入力項目をリスト表示。
入力後にもう一度押すための「動画格納OK」ボタンが再掲される。
「動画格納OK」列にチェック(TRUE) イベントDBのチェック列が埋まる
約1時間後: Zoom動画/VTTダウンロード開始 Zoom側の処理が完了し、録画データとVTT(文字起こしファイル)がダウンロード可能になる
VTT到着 Zoom文字起こしURL(VTT)がイベントDBに記録される
チャプター自動生成 VTTをもとにチャプター(動画の区切り情報)が自動生成され、イベントDBの「チャプター」列に書き込まれる
概要欄HTML自動生成(イベントDB側GAS) アーカイブ概要欄HTML生成.js がチャプター完成を検知し、アーカイブページ用のHTMLを自動生成。イベントDBの「HTML」列に書き込まれる
格納依頼の発火条件チェック(5分おきスキャン) 以下の項目がすべて揃った段階で格納依頼が自動投稿される:
ウェビナー / ジュニア / ゼミ: タイトル + 動画格納OK + HTML + チャプター + 5項目(アンケートリンク / Xアウトプットリンク / Xサムネ格納リンク / 学べること / こんな方)
入学式(Day0のみ): タイトル + 動画格納OK のみ(VTT/チャプター/HTML/5項目すべて不要)
格納依頼を自動投稿 投稿先: #community_learning_site_archive(全カテゴリ共通)
メンション: @learning_site_all cc @community_webinar_assist(または入学式なら @community_online_support_assist)
ここからアーカイブ格納作業 格納依頼を受けた作業者が実施する手順
作業者がアーカイブ格納を開始 格納依頼の通知を受信し、アーカイブ格納作業を開始する
アーカイブページURLを入力 イベントDBビューを開き、「アーカイブページURL」列に記入
「アーカイブ格納完了」ボタンを押す アーカイブページURLが空なら止まる(入力後に再度押せるボタンを再掲)
「アーカイブ格納完了」列にチェック(TRUE)
Discord自動投稿(5分おきスキャン) 入学式(Day0) → 投稿あり。ただし「アーカイブ動画視聴はこちら」のみ(アンケートなし)
ウェビナー / ジュニア / ゼミ → 「アーカイブ動画視聴はこちら」+「アンケートはこちら」の2セクション構成
入学式はアンケートがない:
入学式にはアンケートが存在しないため、Discord投稿文は「アーカイブ動画視聴はこちら」だけの表示になる。これは正常動作(アンケート回答リンク列が空なら自動的にスキップされる仕組み)。
Slack完了報告(自動) 格納依頼スレッドに完了報告を返信。
グループ: ウェビナー/ジュニア/ゼミ → @community_webinar_assist / 入学式 → @community_online_support_assist
cc(全カテゴリ共通): 村井綾 / 村井玲子 / 柳川那奈

2
秘書さんに冒頭カット編集を依頼

2番ボタンを押す スレッドに「1時間後に通知します」と返信
1時間後: 秘書チームに編集依頼を自動通知 同じスレッドに依頼文を投稿。メンション先はカテゴリで分岐:

2番の1時間後通知: メンション先

カテゴリグループメンション追加メンションcc(全カテゴリ共通)
ウェビナー @community_webinar_assist - 村井綾 / 村井玲子 / 柳川那奈
ジュニア @community_webinar_assist + 落合里南
ゼミ @community_webinar_assist -
入学式
Day0のみ
@community_online_support_assist -
秘書が冒頭カットを編集 編集完了後、責任者にメンションして連絡
責任者が「動画格納OK」ボタンを押す 2番押下時にスレッド下部に再掲されたボタン
以降は1番と同じフロー 5項目チェック → 格納依頼 → 格納完了 → Discord投稿 → 完了報告

3
編集チームに途中カット編集を依頼

3番ボタンを押す スレッドに「1時間後に通知します」と返信
1時間後: 責任者にZoom URL取得+編集依頼の通知 責任者をメンションし「@community_movies へ依頼してください」と案内。
Driveフォルダ(共有)のURL + 「年月日_タイトル」のフォルダ命名例を添付。
責任者がZoom DL → 編集チームへ依頼 → 編集後Driveに格納
「格納完了」ボタンを押す 3番押下時にスレッド下部に表示されたボタン。「手動アップロード」列にTRUEが入る
スレッド完了 格納依頼→Discord投稿の自動フローには乗らない(手動格納のため)

4
マイコンピューターに保存(ローカル → Drive手動格納)

4番ボタンを押す スレッドにDriveフォルダURL + フォルダ命名ルールを案内
ローカルの動画をDriveフォルダに格納 フォルダ名: 「年月日_タイトル」
「格納完了」ボタンを押す 「手動アップロード」列にTRUEが入る
スレッド完了 3番と同様、自動フローには乗らない

5
アーカイブ不要

5番ボタンを押す 「アーカイブ不要ボタン」列にTRUEが入る
スレッド完了 格納依頼・Discord投稿いずれも対象外になる。以降の処理なし

4自動後工程(1番ボタン経由のみ)

1番(または2番→動画格納OK経由)で「動画格納OK」にチェックが入った後、以下が自動で順番に発火する。すべて5分おきのトリガーで動く。

順番 処理 発火条件 投稿先
1 VTT到着 → チャプター生成 Zoom録画処理完了(約1時間後) イベントDBの「Zoom文字起こしURL」「チャプター」列に書き込み
2 概要欄HTML生成
アーカイブ概要欄HTML生成.js
チャプター完成を検知 イベントDBのHTML列に書き込み
3 格納依頼投稿
archiveStorage_scanAndPost
ウェビナー/ジュニア/ゼミ: タイトル + 動画格納OK + HTML + チャプター + 5項目
入学式(Day0): タイトル + 動画格納OK のみ(VTT/チャプター/HTML/5項目すべて不要)
#community_learning_site_archive
(全カテゴリ共通)
- エラー通知
archiveStorage_scanAndPost内
終了通知から3時間経過しても格納依頼が飛んでいない場合 #community_learning_site_archive に不足項目一覧を投稿
(条件充足後に正常フローで上書き)
4 格納完了ボタン押下
action=storagedone
作業者が手動で押す
(アーカイブURL入力済みが条件)
「アーカイブ格納完了」= TRUE
5 Discord自動投稿
アーカイブ格納後Discord投稿.js
格納完了 = TRUE & Discord URL = 空 Discordフォーラムch
(入学式Day0は投稿あり・アンケートなし構成)
6 Slack完了報告
段2: completionReport_scanAndPost
Discord URL列が埋まった(または「Discord投稿なし」マーカー) 格納依頼スレッドに返信

55項目チェック(必須入力項目)

1番ボタン押下時と格納依頼の自動投稿時の2箇所で同じ5項目をチェックする。すべて埋まるまで先に進めない。

カテゴリ別の免除ルール

カテゴリ5項目チェック
ウェビナー必須
ジュニア必須
ゼミ必須
入学式
Day0のみ
免除(チェックなしで通過。VTT/チャプター/HTMLも不要)
GASプロジェクト構成:
SlackArchiveFlow.js(このフロー全体を管理) = スタンドアロンGAS
アーカイブ概要欄HTML生成.js / アーカイブ格納後Discord投稿.js = イベントDBバインドGAS(別プロジェクト)
両者はイベントDBスプレッドシートを介して連携(直接の関数呼び出しはできない)。