外観
Upsider
法人カードサービス Upsider(https://up-sider.com/)向けのタスクです。 カードの新規発行、上限変更、カード情報の取得、Slack 上の取引承認の自動クリックなどに対応します。
| 項目 | 値 |
|---|---|
CSV site 列の値 | Upsider |
| 対応エンジン | PC (Chromium) |
このページの読み方
各モードについて以下を記載しています。
- 必須 … タスクに必ず入れる必要がある CSV 列
- 任意 … 入っていれば使われる列
- 動作 … 主要なステップ
- 特記 … 注意点や使い方のコツ
モード名は CSV の mode 列にそのまま記入します(小文字化されます)。 別名がある場合はどちらでも指定できます。
すべてのモードで Upsider のログイン状態が前提です。ログイン情報(email または loginId + loginPass)は別途タスクに必要です。ログイン時は 2 要素認証コードの手動入力が必要になる場合があります(「コード入力してください」と表示されたら、開いているブラウザで手入力してください)。
extra3 はどのモードでも永続ブラウザのプロファイル名として使われます(未指定で 1)。同じ値を使うとログインセッションを再利用でき、別の値にすると別セッションとして扱われます。
モード名に Android を付けると、接続した Android 実機で実行できます(対象: すべてのモード)。詳しくは タスクの作成 を参照してください。
カード情報取得
GetList / list
現在保有しているカード一覧をスクレイピングして CSV ファイルに出力します。
- 必須: なし(ログイン済みセッションで自動実行)
- 任意: なし
- 動作:
- ブラウザを起動してログイン確認
- カード一覧 API(
/cards/search?type=NORMAL)を呼び出し nextPageCursorでページネーションして全ページを取得- ID / ラベル / 番号 / 有効期限 / CVV / 保有者名 を抽出
- CSV ファイルとして出力(ユーザーデータ内の
exportフォルダにUpsider_<日時>.csv) - 保存先パスを Discord へ通知(個人用チャンネル+共有チャンネル)
- 特記:
- 出力される CSV の列は
userAccountId, cardId, cardLabel, cardNumber, userFirstName, userLastName, expiredMonth, expiredYear, cvv, nextPageCursorです。カード番号・CVV が平文で含まれるため、ファイルの取り扱いにご注意ください。 - カード情報の取得は 1 枚ごとに最大 3 回まで自動リトライします(リトライ中は黄色表示)。
- タスクの入力欄への書き戻しはありません。結果は CSV ファイルと Discord 通知で受け取ります。
- 出力される CSV の列は
上限変更(一括)
MonthlyLimit / monthly
全カードの月間利用上限を一括で変更します。
- 必須:
extra1(新しい月間上限金額・整数) - 任意: なし
- 動作:
extra1(新しい上限金額)が入力されているか確認- ログイン確認
- カード一覧 API を呼び出し、全ページから
userAccountIdを収集 - 月間上限更新 API を呼び出し(
userAccountIdListとnewUsageLimitを送信) - 全件処理完了
- 更新件数・新しい上限金額を Discord へ通知(個人用チャンネル+共有チャンネル)
- 特記:
extra1が未指定だと「【Extra1】に新しい月間上限金額を入力してください」で停止します。- 対象は全カードで、個別カードの除外はできません。
- タスクの入力欄への書き戻しはありません。結果は UPSIDER 上の反映と Discord 通知で確認します。
DailyLimit / daily
全カードの日間利用上限を一括で変更します。
- 必須:
extra1(新しい日間上限金額・整数) - 任意: なし
- 動作:
MonthlyLimitと同じフロー(更新 API のエンドポイントが日間用に変わるだけ) - 特記:
extra1が未指定だと「【Extra1】に新しい日間上限金額を入力してください」で停止します。- 対象は全カードで、個別カードの除外はできません。
- タスクの入力欄への書き戻しはありません。結果は UPSIDER 上の反映と Discord 通知で確認します。
カード発行
Create
バーチャルカードを新規発行します。1 回の実行で複数枚発行できます。
- 必須:
extra2(カード保有者名 — この名前で候補を検索して選択。UPSIDER 上に存在する保有者名を正確に入力) - 任意:
extra1(発行枚数 — 未指定または 0 以下、数値以外は 1 枚として扱われます) - 動作:
- ログイン確認 →
/cards/issue/に遷移 - 「バーチャルカード」→「通常のバーチャルカード」を選択
extra2の名前でカード保有者をコンボボックスで検索・選択- 「発行リクエストを確認」→ ダイアログで「カードをアクティベート」→ POST 発行
- レスポンスの
validフラグで成功判定 - 2 枚目以降は「続けてバーチャルカードを発行」から同じフロー(ステップ 3〜5)をループ
- 発行枚数を Discord へ通知(個人用チャンネル)
- ログイン確認 →
- 特記:
extra2(カード保有者名)が候補と一致しないと保有者を選べず失敗します。正確に入力してください。- 発行するのは「通常のバーチャルカード」です。
- 複数枚発行時は MutationObserver で「発行」ボタンの再表示を検知してから次に進みます。
- タスクの入力欄への書き戻し(発行したカード番号を返す等)はありません。発行したカードの詳細は UPSIDER 上、または
GetListモードで確認します。
取引承認の自動クリック
AutoClick / auto
Slack チャネル内の 「取引を承認」ボタンを自動で検知してクリックし続けます。タイムアウトかボタンがなくなるまで実行します。
- 必須:
extra1(Slack チャネル URL) - 任意:
extra2(タイムアウト秒数 — 未指定・0 以下・数値以外は 21600 = 6 時間) - 動作:
- ブラウザを起動して Slack チャネル URL に遷移
- MutationObserver をセット(DOM 変更を即時検知)
- ボタン探索ループ(0.5 秒ポーリング + 定期スクロール):
- テキスト「取引を承認」を含むボタンを複数セレクタで探索
- 可視性チェックの後、ID 非依存のフィンガープリント(タイムスタンプ・属性・コンテキストハッシュ)で重複排除
- クリック可能なら実行
- タイムアウト or ボタンが見つからなくなったら終了
- クリック成功回数・経過秒数を Discord へ通知(個人用チャンネル)
- 特記:
- このモードは UPSIDER へのログイン操作は行いません。対象はあくまで Slack 画面で、そのブラウザで Slack にログイン済みである必要があります。
loginIdはブラウザプロファイルの識別用(任意)で、必要に応じてloginId/extra3でプロファイルを使い分けてください。 - Slack の仮想 DOM に対応するため、MutationObserver + ポーリング + 定期スクロールのハイブリッド検出方式を採用しています。
- タスクの入力欄への書き戻しはありません。結果はステータス表示(クリック回数)と Discord 通知で確認します。
- このモードは UPSIDER へのログイン操作は行いません。対象はあくまで Slack 画面で、そのブラウザで Slack にログイン済みである必要があります。
手動操作用
Browser
Upsider にログインしてから url のページを開き、手動操作のために待機します。
- 必須: なし(ログイン済みセッションを利用)
- 任意:
url(ログイン後に開くページ。省略時はカードページ/cardsのまま) - 動作:
- ブラウザを起動 → ログインページに遷移
- セッションが有効ならそのまま、無効ならログイン
- カードページ(
/cards)に遷移し、urlがあればそのページへ移る - ブラウザが閉じられるまで待機
- 特記:
urlはhttps://から始まる URL だけを受け付けます- ログイン後は「Browser ready - Manual operation mode」と表示され、ブラウザを閉じるまで待機します。
- このモードは Discord 通知を送信せず、タスクの入力欄への書き戻しもありません。