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