Skip to content

SheetTable.getData()の戻り値に行の非表示状態を含める #865

@YusukeHirao

Description

@YusukeHirao

概要

SheetTable.getData() の戻り値に、各行がスプレッドシート上で非表示(hidden)かどうかの情報を含めてほしい。

背景

スプレッドシート上で非表示にした行が getData() で返されるため、利用側で意図しないデータが混入する問題が発生した。

具体的には、同一URLに対して「削除フラグあり(非表示行)」と「削除フラグなし(表示行)」の2行が存在するケースで、非表示行のデータが先にマッチし、本来削除すべきでないファイルが削除される事象が起きた。

現状の動作

  • Sheet.getValues()spreadsheets.values.get を使用しており、非表示行も含めて全行を返す
  • 利用側では非表示行かどうかを判別する手段がない

提案

SheetTable.getData() の戻り値の各行に、非表示状態のフラグを含める。

Google Sheets API の spreadsheets.getincludeGridData: true)で取得できる rowMetadatahiddenByUser / hiddenByFilter プロパティがあり、これを利用すれば実現可能。Sheets クラスの既存メソッド getWithGridData() の仕組みを流用できる。

利用側の想定

const data = await table.getData();
for (const row of data) {
  if (row._hidden) continue; // 非表示行をスキップ
  // ...
}

フラグの形式(_hidden: boolean / _hiddenByUser + _hiddenByFilter を分けるなど)はお任せします。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions