ฟิลเตอร์

ตัวกรองช่วยให้คุณจัดเรียงและกรองข้อมูลที่เห็นเมื่อดู สเปรดชีต ตัวกรองจะไม่เปลี่ยนแปลงค่าข้อมูลในสเปรดชีต คุณสามารถ ใช้ตัวกรองเพื่อซ่อนหรือจัดเรียงข้อมูลชั่วคราว ข้อมูลที่ตรงกับ เกณฑ์ตัวกรองที่ระบุจะไม่ปรากฏขณะที่ตัวกรอง เปิดอยู่ ด้วยมุมมองตัวกรอง คุณยังสามารถบันทึกชื่ออื่น ใช้ตัวกรองและสลับไปมาได้ทุกเมื่อที่ต้องการ

ต่อไปนี้เป็นตัวอย่างกรณีการใช้งานตัวกรอง

  • จัดเรียงข้อมูลตามคอลัมน์ใดคอลัมน์หนึ่ง เช่น จัดเรียงบันทึกผู้ใช้ตาม ชื่อ
  • ซ่อนข้อมูลที่ตรงกับเงื่อนไขที่เฉพาะเจาะจง เช่น ซ่อนระเบียนทั้งหมด 2 ปี
  • ซ่อนข้อมูลที่ตรงกับค่าบางค่า เช่น ซ่อนปัญหาทั้งหมดเกี่ยวกับ สถานะ "ปิด"

ตัวกรองพื้นฐาน

BasicFilter เป็นตัวกรองเริ่มต้นที่จะใช้ทุกครั้งที่ผู้ใช้ดู สเปรดชีต สเปรดชีต 1 แผ่นจะมีตัวกรองพื้นฐาน 1 รายการต่อ sheet คุณสามารถปิดตัวกรองพื้นฐานได้โดย เพื่อล้างออกไป การดําเนินการนี้จะนําตัวกรองและการตั้งค่าทั้งหมดออกจากสเปรดชีต หากต้องการเปิดตัวกรองเดิมอีกครั้ง คุณต้องตั้งค่าเกณฑ์อีกครั้ง

จัดการตัวกรองพื้นฐาน

หากต้องการตั้งค่าหรือล้างตัวกรองพื้นฐาน ให้ใช้ spreadsheets.batchUpdate ที่มีประเภทคำขอที่เหมาะสม ดังนี้

  • หากต้องการตั้งค่าตัวกรองพื้นฐาน ให้ใช้SetBasicFilterRequest
  • หากต้องการล้างตัวกรองพื้นฐาน ให้ใช้ClearBasicFilterRequest

หากต้องการแสดงตัวกรองพื้นฐาน ให้ใช้ spreadsheets.get และ ตั้งค่าพารามิเตอร์ URL fields เป็น sheets/basicFilter ดังต่อไปนี้ ตัวอย่างโค้ด spreadsheets.get แสดง URL ของ Google ชีตที่มีช่อง mask

GET https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID?fields=sheets/basicFilter)

มุมมองตัวกรอง

FilterView เป็นตัวกรองที่มีชื่อซึ่งคุณสามารถปิดและเปิดได้ทุกเมื่อที่ต้องการ สเปรดชีต สามารถมีมุมมองตัวกรองได้หลายรายการ แต่สามารถใช้ได้ครั้งละ 1 รายการเท่านั้น

ต่อไปนี้เป็นตัวอย่างกรณีการใช้งานสำหรับมุมมองตัวกรอง

  • คุณมีตัวกรองต่างๆ หลายรายการที่ต้องการสลับใช้ ดูข้อมูล
  • คุณไม่มีสิทธิ์แก้ไขสเปรดชีต แต่ยังต้องการใช้ ตัวกรอง ในกรณีนี้ คุณสามารถสร้างมุมมองตัวกรองชั่วคราวที่ ให้คุณเห็นได้
  • คุณต้องการให้บุคคลที่คุณแชร์สเปรดชีตด้วยดูข้อมูลได้ แตกต่างกัน คุณสามารถระบุมุมมองตัวกรองที่ต้องการใช้ได้โดยระบุ spreadsheetId และ filterViewId ใน URL ของสเปรดชีต โดยใช้ filterViewId แสดงผลในคำตอบเมื่อคุณสร้างมุมมองตัวกรอง

    ตัวอย่างโค้ดต่อไปนี้แสดง URL ของ Google ชีตที่มีมุมมองตัวกรอง

    https://docs.google.com/spreadsheets/d/SPREADSHEET_ID/edit#gid=0&fvid=FILTER_VIEW_ID

จัดการมุมมองตัวกรอง

หากต้องการสร้าง ทำซ้ำ แก้ไข หรือลบมุมมองตัวกรอง ให้ใช้ spreadsheets.batchUpdate ที่มีประเภทคำขอที่เหมาะสม ดังนี้

  • หากต้องการสร้างมุมมองตัวกรอง ให้ใช้ AddFilterViewRequest
  • หากต้องการทำสำเนามุมมองตัวกรอง ให้ใช้ DuplicateFilterViewRequest
  • หากต้องการแก้ไขคุณสมบัติของมุมมองตัวกรอง ให้ใช้ UpdateFilterViewRequest
  • หากต้องการลบมุมมองตัวกรอง ให้ใช้ DeleteFilterViewRequest

หากต้องการแสดงมุมมองตัวกรองทั้งหมด ให้ใช้ spreadsheets.get และ ตั้งค่าพารามิเตอร์ URL fields เป็น sheets/filterViews ดังต่อไปนี้ ตัวอย่างโค้ด spreadsheets.get แสดง URL ของ Google ชีตที่มีช่อง mask

GET https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID?fields=sheets/filterViews)

การแสดงตัวกรอง

ตัวอย่างโค้ดต่อไปนี้แสดงการแทน JSON สำหรับ FilterView ออบเจ็กต์ BasicFilter เหมือนกัน ยกเว้นว่าไม่มีฟิลด์ filterViewId และ title และไม่สามารถใช้ช่วงที่ตั้งชื่อแล้ว

{
  "filterViewId": number,
  "title": string,
  "range": {
    object(GridRange)
  },
  "namedRangeId": string,
  "sortSpecs": [
    {
      object(SortSpec)
    }
  ],
  "criteria": {
    string: {
      object(FilterCriteria)
    },
    ...
  }
}

ตัวอย่างข้อมูล

ส่วนที่เหลือของเอกสารนี้อ้างอิงตัวอย่างตารางข้อมูลการขายด้านล่าง:

ตาราง 1 ตัวอย่างข้อมูลยอดขาย
A C D E F G
1 หมวดหมู่รายการ หมายเลขรุ่น ค่าใช้จ่าย จำนวน ภูมิภาค พนักงานขาย วันที่จัดส่ง
2 ตั๋วขึ้นชิงช้าสวรรค์ W-24 ฿600.00 4 ตะวันตก เบธ 1/3/2016
3 ประตู D-01X 450.00 บาท 2 ใต้ อาเมียร์ 15/3/2016
4 กรอบ ฝรั่งเศส - 0B1 ฿340.00 8 ตะวันออก ฮันนาห์ 12/3/2016
5 แผง P-034 $6.00 4 เหนือ Devyn 15/3/2016
6 แผง P-052 335 บาท 7 ตะวันออก อิริค 16/5/2016
7 ตั๋วขึ้นชิงช้าสวรรค์ W-24 ฿600.00 11 ใต้ Sheldon 30/4/2016
8 เครื่องยนต์ ENG-0161 ฿9,300.00 2 เหนือ เจสซี 2/7/2016

จัดเรียงข้อกำหนด

ตัวกรองหนึ่งๆ อาจมีข้อกำหนดการจัดเรียงได้หลายแบบ ข้อกำหนดเหล่านี้เป็นตัวกำหนด วิธีจัดเรียงข้อมูลและนำไปใช้ตามลำดับที่ระบุ SortSpec.dimensionIndex ระบุดัชนีคอลัมน์ที่ควรจะใช้การจัดเรียง

ตัวอย่างโค้ดต่อไปนี้แสดงข้อกำหนดในการจัดเรียง

[
  {
    "dimensionIndex": 3,
    "sortOrder": "ASCENDING"
  },
  {
    "dimensionIndex": 6,
    "sortOrder": "ASCENDING"
  }
]

เมื่อใช้กับตัวอย่างข้อมูลยอดขาย ข้อกำหนดนี้ จัดเรียงตาม "จำนวน" ก่อน จากนั้นหากแถว 2 แถวมีจำนวนเท่ากัน ให้คลิก "จัดส่ง วันที่"

ตาราง 2 ข้อมูลยอดขายจัดเรียงตามคอลัมน์ 2 คอลัมน์
A C D E F G
1 หมวดหมู่รายการ หมายเลขรุ่น ค่าใช้จ่าย จำนวน ภูมิภาค พนักงานขาย วันที่จัดส่ง
2 ประตู D-01X 450.00 บาท 2 ใต้ อาเมียร์ 15/3/2016
3 เครื่องยนต์ ENG-0161 ฿9,300.00 2 เหนือ เจสซี 2/7/2016
4 ตั๋วขึ้นชิงช้าสวรรค์ W-24 ฿600.00 4 ตะวันตก เบธ 1/3/2016
5 แผง P-034 $6.00 4 เหนือ Devyn 15/3/2016
6 แผง P-052 335 บาท 7 ตะวันออก อิริค 16/5/2016
7 กรอบ ฝรั่งเศส - 0B1 ฿340.00 8 ตะวันออก ฮันนาห์ 12/3/2016
8 ตั๋วขึ้นชิงช้าสวรรค์ W-24 ฿600.00 11 ใต้ Sheldon 30/4/2016

เกณฑ์การกรอง

FilterCriteria จะกำหนดว่าข้อมูลใดในสเปรดชีตที่จะแสดงหรือซ่อนในตัวกรองพื้นฐาน หรือ มุมมองตัวกรอง แต่ละเกณฑ์จะขึ้นอยู่กับค่าในคอลัมน์เฉพาะ คุณ ให้เกณฑ์ตัวกรองเป็นแผนที่ โดยมีคีย์เป็นดัชนีคอลัมน์ และ ค่าก็คือเกณฑ์

สำหรับเกณฑ์ที่ระบุโดยใช้ condition บูลีน เงื่อนไขต้องเป็น True สำหรับค่าที่จะแสดง เงื่อนไขจะไม่ลบล้าง hiddenValues หากมี ค่าอยู่ภายใต้ hiddenValues รายการที่ตรงกันทั้งหมดสำหรับค่าหนึ่งจะยังคงซ่อนอยู่

ตัวอย่างโค้ดต่อไปนี้แสดงแมปเกณฑ์ตัวกรอง

{
  0: {
    'hiddenValues': ['Panel']
  },
  6: {
    'condition': {
      'type': 'DATE_BEFORE',
      'values': {
        'userEnteredValue': '4/30/2016'
      }
    }
  }
}

เมื่อใช้กับตัวอย่างข้อมูลยอดขาย เกณฑ์นี้เท่านั้น แสดงแถวที่ปุ่ม "หมวดหมู่สินค้า" ไม่ใช่ "แผง" และอยู่ใน "วันที่จัดส่ง" คือก่อนวันที่ 30 เมษายน 2016

ตารางที่ 3 ข้อมูลการขายโดยใช้เกณฑ์ตัวกรอง
A C D E F G
1 หมวดหมู่รายการ หมายเลขรุ่น ค่าใช้จ่าย จำนวน ภูมิภาค พนักงานขาย วันที่จัดส่ง
2 ตั๋วขึ้นชิงช้าสวรรค์ W-24 ฿600.00 4 ตะวันตก เบธ 1/3/2016
3 ประตู D-01X 450.00 บาท 2 ใต้ อาเมียร์ 15/3/2016
4 กรอบ ฝรั่งเศส - 0B1 ฿340.00 8 ตะวันออก ฮันนาห์ 12/3/2016

ตัวอย่าง

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีสร้างมุมมองตัวกรอง ทำซ้ำ และ จากนั้นให้อัปเดตเวอร์ชันที่ซ้ำโดยใช้ตัวอย่างข้อมูลการขาย ที่ด้านบน

Python

sheets/snippets/sheets_filter_views.py
import google.auth
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError


def filter_views(spreadsheet_id):
  """
  Creates the batch_update the user has access to.
  Load pre-authorized user credentials from the environment.
  TODO(developer) - See https://developers.google.com/identity
  for guides on implementing OAuth2 for the application.
  """
  creds, _ = google.auth.default()
  # pylint: disable=maybe-no-member
  try:
    service = build("sheets", "v4", credentials=creds)

    my_range = {
        "sheetId": 0,
        "startRowIndex": 0,
        "startColumnIndex": 0,
    }
    addfilterviewrequest = {
        "addFilterView": {
            "filter": {
                "title": "Sample Filter",
                "range": my_range,
                "sortSpecs": [{
                    "dimensionIndex": 3,
                    "sortOrder": "DESCENDING",
                }],
                "criteria": {
                    0: {"hiddenValues": ["Panel"]},
                    6: {
                        "condition": {
                            "type": "DATE_BEFORE",
                            "values": {"userEnteredValue": "4/30/2016"},
                        }
                    },
                },
            }
        }
    }

    body = {"requests": [addfilterviewrequest]}
    addfilterviewresponse = (
        service.spreadsheets()
        .batchUpdate(spreadsheetId=spreadsheet_id, body=body)
        .execute()
    )

    duplicatefilterviewrequest = {
        "duplicateFilterView": {
            "filterId": addfilterviewresponse["replies"][0]["addFilterView"][
                "filter"
            ]["filterViewId"]
        }
    }

    body = {"requests": [duplicatefilterviewrequest]}
    duplicatefilterviewresponse = (
        service.spreadsheets()
        .batchUpdate(spreadsheetId=spreadsheet_id, body=body)
        .execute()
    )

    updatefilterviewrequest = {
        "updateFilterView": {
            "filter": {
                "filterViewId": duplicatefilterviewresponse["replies"][0][
                    "duplicateFilterView"
                ]["filter"]["filterViewId"],
                "title": "Updated Filter",
                "criteria": {
                    0: {},
                    3: {
                        "condition": {
                            "type": "NUMBER_GREATER",
                            "values": {"userEnteredValue": "5"},
                        }
                    },
                },
            },
            "fields": {"paths": ["criteria", "title"]},
        }
    }

    body = {"requests": [updatefilterviewrequest]}
    updatefilterviewresponse = (
        service.spreadsheets()
        .batchUpdate(spreadsheetId=spreadsheet_id, body=body)
        .execute()
    )
    print(str(updatefilterviewresponse))
  except HttpError as error:
    print(f"An error occurred: {error}")


if __name__ == "__main__":
  # Pass: spreadsheet_id
  filter_views("1CM29gwKIzeXsAppeNwrc8lbYaVMmUclprLuLYuHog4k")