Skip to content

【GAS】CodeRabbitが指摘したシフト/タスク系スクリプトのバグ精査 #263

@taminororo

Description

@taminororo

開発概要

目的

PR #259 (backend N+1修正) の過程で、GASディレクトリに対して CodeRabbit が指摘したバグ群をスコープ外として削除・resolve した。運用上は動作確認で問題が出ていないが、本物のバグが混ざっているため精査して対応する。

開発期間

  • 開始日:
  • 締切日:

考えられる開発内容

🔴 本物のバグ(優先度高)

  • gas/shift/サイドバー動作.js:86 演算子優先順位バグ
    • if(swappingSheetName == null || !swappingCellRange == null)(!swappingCellRange) == null と評価され、常に false になる
    • 隣の swappingSheetName == null チェックで偶然弾けているだけで、片方だけnullのケースをガードできない
    • 修正: || swappingCellRange == null
  • gas/shift/サイドバー動作.js:29 型の曖昧さ
    • getValues() は2D配列を返すので shift[value] 形式。shift == selectedShift は JS の型強制で偶然動くが脆弱
    • 修正: shift[0] == selectedShift

🟡 実害は小さいが要修正

  • gas/shift/コード.js:99 console.log(changes[j - 1]) は j=0 で undefined を参照(log文なので実害なし)
    • 修正: changes[changes.length - 1](他の関数と揃える)
  • gas/shift/条件付き書式.js:40 ui 変数がこのファイルでは未定義で、別ファイル コード.js の top-level var ui = SpreadsheetApp.getUi() に暗黙依存
    • GAS の全ファイルが同一グローバルスコープを共有する挙動に頼っていて脆い
    • 修正: このファイル内でも const ui = SpreadsheetApp.getUi() を用意する
  • gas/task/タスク塗り分け.js:61 重複変数 suitableproperPeople が両方 K列 (srcData[row][10]) を読んでいる
  • gas/task/タスク塗り分け.js:7 エラーメッセージがシート名と不一致 ('44thTask' vs 実際 '44thTask_準備日')

💅 マイナー改善

  • gas/rescue/onChange.js:16 / gas/user/コード.js:10 baseUrl が null のときの早期バリデーション追加
  • gas/shift/Sidebar.html:105 <使い方> のHTMLエスケープ
  • gas/shift/サイドバー動作.js:92 getSheetByName が null を返すケースの guard
  • gas/shift/条件付き書式.js:27 sheets 配列を使う前に .filter(s => s != null)
  • gas/task/(内田)タスク適当色割り当て.js:50 空シート時のエッジケース

備考

Metadata

Metadata

Assignees

No one assigned

    Labels

    ✨Google-Spread-Sheetスプシ関連のタスク. 主にGoogle Spread Sheet, Google Apps Scriptを使用🔨修正バグや仕様と異なる箇所の修正

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions