/*
* @title ベネフィットステーションのすくすくファミリーサポートお申込み内容入力
* @description my bookmarklet
* @include http://*
* @license MIT License
* @require
*/
javascript:(function(){
// --- 設定項目(【】の中身をご自身の情報に変更してください) ---
const config = {
childName: "【お子様名】",
birthYear: "【2020】",
birthMonth: "【4】",
birthDay: "【1】",
pref: "【東京都】",
officeName: "【○○ファミリー・サポート・センター】",
bankCode: "【0001】",
bankName: "【ギンコウメイ】",
branchCode: "【001】",
branchName: "【シテンメイ】",
accountNo: "【1234567】",
accountHolder: "【コウザ メイギ】"
};
// --- 実行日の「前月」を自動計算 ---
const now = new Date();
now.setMonth(now.getMonth() - 1);
const prevMonthVal = String(now.getMonth() + 1);
// --- Vue / HTML5 イベント発火付きの入力セット関数 ---
const setNativeVal = (el, val) => {
if (!el) return;
const proto = Object.getPrototypeOf(el);
const setter = Object.getOwnPropertyDescriptor(proto, 'value')?.set || Object.getOwnPropertyDescriptor(el, 'value')?.set;
if (setter) {
setter.call(el, val);
} else {
el.value = val;
}
el.dispatchEvent(new Event('input', { bubbles: true }));
el.dispatchEvent(new Event('change', { bubbles: true }));
};
// 1. ラジオボタン選択(「はい」をチェック)
document.querySelectorAll('input[type="radio"]').forEach(radio => {
const label = radio.closest('label') || radio.parentElement;
if (label && label.innerText.includes('はい')) {
radio.checked = true;
radio.dispatchEvent(new Event('change', { bubbles: true }));
}
});
// 2. テキストエリア項目の一括入力
const textareas = Array.from(document.querySelectorAll('textarea'));
const textVals = [
config.childName,
config.pref,
config.officeName,
config.bankCode,
config.bankName,
config.branchCode,
config.branchName,
config.accountNo,
config.accountHolder
];
textareas.forEach((ta, idx) => {
if (textVals[idx] !== undefined) {
setNativeVal(ta, textVals[idx]);
}
});
// 3. セレクトボックス(生年月日・ご利用月)の選択
const selects = Array.from(document.querySelectorAll('select'));
if (selects.length >= 4) {
const setSelectVal = (selectEl, val) => {
const targetOpt = Array.from(selectEl.options).find(o =>
o.value === String(val) ||
o.text.includes(String(val) + '月') ||
o.text.includes(String(val) + ' 年') ||
o.text.includes(String(val) + ' 日')
);
if (targetOpt) {
setNativeVal(selectEl, targetOpt.value);
}
};
setSelectVal(selects[0], config.birthYear);
setSelectVal(selects[1], config.birthMonth);
setSelectVal(selects[2], config.birthDay);
setSelectVal(selects[3], prevMonthVal);
}
alert('入力完了(ご利用月: ' + prevMonthVal + '月)');
})();