// 健康診断管理 SiteId 508971: 既存のクライアントスクリプト「プロセス実行スクリプト」のBodyのみ // ローカルファイルの最新内容で上書きする。Columns/EditorColumnHash/Processesには一切触れない。 "use strict"; const fs = require("fs"); const path = require("path"); const { findSiteDir, newModifyDir } = require("../../site-paths.js"); const PROJECT_NAME = "健康診断管理"; const ENV = "production"; const SITE_ID = 508971; const REQUEST_LABEL = "update-clientscript-process"; const TITLE = "プロセス実行スクリプト"; const REPO_ROOT = path.join(__dirname, "..", "..", "..", ".."); const PROJECT_ROOT = path.join(REPO_ROOT, PROJECT_NAME); const CONFIGS_DIR = path.join(PROJECT_ROOT, "configs", ENV); const SCRIPT_FILE = path.join( CONFIGS_DIR, "site-508971_社員別健康診断管理", "scripts", "3_プロセス実行スクリプト.js" ); function loadServerConfig() { return JSON.parse(fs.readFileSync(path.join(REPO_ROOT, `config_${ENV}.json`), "utf-8")); } function loadLatest() { const siteDir = findSiteDir(CONFIGS_DIR, SITE_ID); const p = path.join(siteDir, "sitesettings", `site-${SITE_ID}_latest.json`); const raw = JSON.parse(fs.readFileSync(p, "utf-8")); return { current: raw.Response.Data, siteDir, rawText: fs.readFileSync(p, "utf-8") }; } const execute = process.argv.includes("--execute"); const server = loadServerConfig(); (async () => { const { current, siteDir, rawText } = loadLatest(); const settings = JSON.parse(JSON.stringify(current.SiteSettings)); settings.Links = current.SiteSettings.Links || []; const script = (settings.Scripts || []).find((s) => s.Title === TITLE); if (!script) { console.error(`[エラー] スクリプト「${TITLE}」が見つかりません。`); process.exit(1); } const newBody = fs.readFileSync(SCRIPT_FILE, "utf-8"); script.Body = newBody; const requestBody = { ApiVersion: 1.1, ApiKey: server.ApiKey, SiteId: SITE_ID, Title: current.Title, ReferenceType: current.ReferenceType, ParentId: current.ParentId, InheritPermission: current.InheritPermission, SiteSettings: settings, }; const modifyDir = newModifyDir(siteDir, REQUEST_LABEL); fs.writeFileSync(path.join(modifyDir, `before_site-${SITE_ID}_latest.json`), rawText, "utf-8"); console.log("更新後Body文字数:", newBody.length); if (!execute) { console.log("(--execute 未指定のためプレビューのみ)"); return; } const url = `${server.BaseUrl}api/items/${SITE_ID}/updatesite`; const res = await fetch(url, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(requestBody) }); console.log(`[結果] HTTP ${res.status}:`, JSON.stringify(await res.json())); })();