"use strict"; /* * プリザンター実ユーザー側で既に「退職済み」マーキングされている人(Name先頭が"(退職) "、 * またはBodyが"退職済み")に対応するマスタレコード(Class011=プリザンターUserId一致)の * Check001(退職済み、基本情報タブに新規追加)をtrueに一括更新する。 * 既定はドライラン(対象一覧の表示のみ)。実際に送信するには --execute を付ける。 * * 実行: node scripts/mark-retired-check001.js [--execute] */ const { getSiteItems, getAllUsers, updateSiteItem } = require("../src/lib/pleasanterClient"); const BASE_URL = process.env.PLEASANTER_BASE_URL; const API_KEY = process.env.PLEASANTER_API_KEY; const SITE_ID = process.env.PLEASANTER_MASTER_SITE_ID; if (!BASE_URL || !API_KEY || !SITE_ID) { console.error("PLEASANTER_BASE_URL / PLEASANTER_API_KEY / PLEASANTER_MASTER_SITE_ID が未設定"); process.exit(1); } function isRetiredPleasanterUser(pUser) { return pUser.Name.startsWith("(退職) ") || pUser.Body === "退職済み"; } async function main() { const execute = process.argv.includes("--execute"); const config = { baseUrl: BASE_URL, apiKey: API_KEY, siteId: SITE_ID }; const [masterItems, pleasanterUsers] = await Promise.all([ getSiteItems(config), getAllUsers(config), ]); const retiredUserIds = new Set( pleasanterUsers.filter(isRetiredPleasanterUser).map((u) => String(u.UserId)) ); console.log(`プリザンター側「退職済み」判定件数: ${retiredUserIds.size}`); const targets = masterItems.filter( (i) => i.Class011 && retiredUserIds.has(i.Class011) && i.Check001 !== true ); const alreadyTrue = masterItems.filter( (i) => i.Class011 && retiredUserIds.has(i.Class011) && i.Check001 === true ).length; console.log(`マスタ内で更新対象(Check001をtrueにする): ${targets.length}件`); console.log(`マスタ内で既にCheck001=trueだったもの: ${alreadyTrue}件`); console.log("更新対象サンプル:", JSON.stringify(targets.slice(0, 5).map((i) => ({ ResultId: i.ResultId, Class011: i.Class011, Class013: i.Class013 })))); if (!execute) { console.log("\n[ドライラン] --execute を付けずに実行したため送信していません。"); return; } let updated = 0; for (const item of targets) { await updateSiteItem({ baseUrl: BASE_URL, apiKey: API_KEY, itemId: item.ResultId, fields: { Check001: true } }); updated++; } console.log(`\n[OK] ${updated}件のCheck001をtrueに更新しました。`); } main().catch((e) => { console.error(e); process.exit(1); });