Skip to content

Instantly share code, notes, and snippets.

@hushin
Last active November 30, 2021 12:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hushin/ff28c93eaf4ea679e278aae2c428a6e2 to your computer and use it in GitHub Desktop.
Save hushin/ff28c93eaf4ea679e278aae2c428a6e2 to your computer and use it in GitHub Desktop.
MoneyForward の未分類の項目を一括で設定するスクリプト

MoneyForward の未分類の項目を一括で設定するスクリプト

手作業でぽちぽちするのが辛かったので作った

使い方

修正が必要な箇所

  • searchText は「内容」でヒットさせたい文字列
  • large_category_id, middle_category_id は、 Networkタブを開いて、1回分類設定したときに飛ぶリクエストを見て設定する
{
// 一括設定したい作品名
const searchText = '作品名'
// 趣味・娯楽、本に設定する例
const large_category_id = 13
const middle_category_id = 52
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms))
const csrfToken = document
.querySelector('[name="csrf-token"]')
.getAttribute('content')
const callApi = (id) => async () => {
await sleep(2000)
console.log(`${id} update`)
await fetch('https://moneyforward.com/cf/update', {
headers: {
accept: 'text/javascript',
'accept-language': 'ja-JP,ja;q=0.9,en-US;q=0.8,en;q=0.7',
'content-type': 'application/x-www-form-urlencoded; charset=UTF-8',
'x-csrf-token': csrfToken,
'x-requested-with': 'XMLHttpRequest',
},
body: `user_asset_act%5Bid%5D=${id}&user_asset_act%5Blarge_category_id%5D=${large_category_id}&user_asset_act%5Bmiddle_category_id%5D=${middle_category_id}&user_asset_act%5Btable_name%5D=user_asset_act&user_asset_act%5Bis_income%5D=0`,
method: 'PUT',
mode: 'cors',
credentials: 'include',
})
}
const ids = $$('td.content')
.filter((elm) => elm.innerText.includes(searchText))
.map((elm) => elm.parentNode)
.filter((elm) => elm.querySelector('td.lctg').innerText === '未分類')
.map((elm) => elm.querySelector('[name="user_asset_act[id]"]').value)
const tasks = ids.map((id) => callApi(id))
tasks
.reduce((promise, task) => promise.then(task), Promise.resolve())
.then(() => alert('done (リロードすると反映されてるはず)'))
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment