From 6bcceb9dfc338daa539a4db1b10f9cae22522770 Mon Sep 17 00:00:00 2001
From: Yasutake Yohei <61961825+yasutakeyohei@users.noreply.github.com>
Date: Thu, 5 Nov 2026 23:25:28 +0900
Subject: events: LoGoフォームの一覧を取得し事業承継セミナーの日程を修正
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
LoGoフォームの一覧APIを呼ぶスクリプトを追加した。18件を取得して
既存データと照合したところ、事業承継セミナーの日程が12月15日から
11月25日(水)の誤りだったため、市のページで確認して直した。
---
scripts/fetch-logoform-events.mjs | 82 +++++++++++++++++++++++++++++++++++++++
src/data/schedule/events.json | 4 +-
2 files changed, 84 insertions(+), 2 deletions(-)
create mode 100644 scripts/fetch-logoform-events.mjs
diff --git a/scripts/fetch-logoform-events.mjs b/scripts/fetch-logoform-events.mjs
new file mode 100644
index 0000000..f499d47
--- /dev/null
+++ b/scripts/fetch-logoform-events.mjs
@@ -0,0 +1,82 @@
+// LoGoフォーム(小平市)の手続き一覧を取得する。
+//
+// LoGoフォームのページ自体は自動アクセス防止(TRUSTBANKの確認画面)で
+// ブラウザから開けないことがある。一方、一覧のAPIは直接呼べる。
+// ただし Node の fetch では 403 になるため、curl を使って取得している。
+//
+// 使い方:
+// node scripts/fetch-logoform-events.mjs # イベント情報(procedure id 49006)
+// node scripts/fetch-logoform-events.mjs 48668 # 電子申請(手続き一覧)
+// node scripts/fetch-logoform-events.mjs 49006 --json
+//
+// procedure id は、手続きページの設定に "id" として入っている。
+// 2517(イベント情報)は 49006、666(電子申請)は 48668。
+
+import { execFileSync } from 'node:child_process';
+
+const DEFAULT_ID = '49006';
+const args = process.argv.slice(2);
+const asJson = args.includes('--json');
+const procedureId = args.find((a) => /^\d+$/.test(a)) ?? DEFAULT_ID;
+
+const PAGE = procedureId === '48668'
+ ? 'https://logoform.jp/procedure/exdH/666'
+ : 'https://logoform.jp/procedure/exdH/2517';
+
+const UA =
+ 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36';
+
+const curlArgs = [
+ '-s',
+ '--max-time',
+ '30',
+ '-X',
+ 'POST',
+ '-H',
+ 'Content-Type: application/json',
+ '-H',
+ 'Accept: application/json',
+ '-H',
+ `Referer: ${PAGE}`,
+ '-H',
+ `User-Agent: ${UA}`,
+ // 空のオブジェクトで全件返る。page などの項目を足すと「不明な項目」で弾かれる。
+ '-d',
+ '{}',
+ `https://logoform.jp/api/procedure/branch/detail/search/${procedureId}`,
+];
+
+let raw;
+try {
+ raw = execFileSync('curl', curlArgs, { encoding: 'utf8', maxBuffer: 20 * 1024 * 1024 });
+} catch (error) {
+ console.error('curl の実行に失敗しました。curl が使えるか確認してください。');
+ console.error(String(error).slice(0, 300));
+ process.exit(1);
+}
+
+let data;
+try {
+ data = JSON.parse(raw);
+} catch {
+ console.error('JSONとして読めませんでした(自動アクセス防止の画面が返っている可能性があります)。');
+ console.error(raw.slice(0, 300));
+ process.exit(1);
+}
+
+const items = Array.isArray(data.items) ? data.items : [];
+
+if (asJson) {
+ console.log(JSON.stringify(items, null, 2));
+ process.exit(0);
+}
+
+console.log(`procedure_id=${procedureId} 件数=${items.length}`);
+for (const item of items) {
+ const description = (item.description ?? '').replace(/\s+/g, ' ').trim();
+ console.log(
+ `- [${item.category_name}] ${item.procedure_name}` +
+ (description ? `\n ${description.slice(0, 120)}` : '') +
+ `\n https://logoform.jp${item.form_url ?? ''}`,
+ );
+}
diff --git a/src/data/schedule/events.json b/src/data/schedule/events.json
index 380b42d..b556efc 100644
--- a/src/data/schedule/events.json
+++ b/src/data/schedule/events.json
@@ -582,10 +582,10 @@
"source": "市報こだいら10月20日号6面"
},
{
- "date": "12月15日(火)",
+ "date": "11月25日(水)",
"title": "📚 小平市事業承継セミナー「事業承継への第一歩」",
"place": "午後3時から午後4時30分まで/中央公民館 講座室1",
- "note": "事業を営んでいる方や従業員・ご家族の方。定員25人(先着順)。11月20日(金)までに申込みフォームまたは産業振興課 042-346-9534へ",
+ "note": "事業を営んでいる方や従業員・ご家族の方。定員25人(先着順)。事業承継のリアルから見る準備の大切さ、支援策の紹介。11月20日(金)までに申込みフォームまたは産業振興課 042-346-9534へ。共催は東京都多摩地域事業承継・引継ぎ支援センター、小平商工会",
"source": "LoGoフォーム"
},
{
--
cgit v1.3.1