ช่วงที่ตั้งชื่อ &ป้องกัน

Google Sheets API ช่วยให้คุณสร้าง แก้ไข และลบช่วงที่มีชื่อหรือช่วงที่มีการป้องกันได้ ตัวอย่างในหน้านี้แสดงวิธีใช้ Sheets API เพื่อดำเนินการบางอย่างที่ใช้กันทั่วไปใน Sheets

ตัวอย่างเหล่านี้แสดงในรูปแบบคำขอ HTTP เพื่อให้เป็นกลางทางภาษา หากต้องการดูวิธีใช้ ไลบรารีของไคลเอ็นต์ Google API เพื่ออัปเดตเป็นชุดในภาษาต่างๆ โปรดดูอัปเดต สเปรดชีต

ในตัวอย่างเหล่านี้ ตัวยึดตำแหน่ง SPREADSHEET_ID และ SHEET_ID จะระบุตำแหน่งที่คุณจะระบุรหัสเหล่านั้น คุณจะพบรหัสของสเปรดชีต IDใน URL ของสเปรดชีต คุณสามารถรับ รหัสชีตได้โดยใช้วิธี spreadsheets.get ช่วง จะระบุโดยใช้ สัญกรณ์ A1 ตัวอย่างช่วงคือ Sheet1!A1:D5

นอกจากนี้ ตัวยึดตำแหน่ง NAMED_RANGE_ID และ PROTECTED_RANGE_ID จะระบุรหัสสำหรับช่วงที่มีชื่อและช่วงที่มีการป้องกัน ระบบจะใช้ namedRangeId และ protectedRangeId เมื่อส่งคำขอให้อัปเดตหรือลบช่วงที่เชื่อมโยง ระบบจะแสดงรหัสในการตอบกลับคำขอ Sheets API ที่สร้างช่วงที่มีชื่อหรือช่วงที่ป้องกันไว้ คุณสามารถรับรหัสของช่วงที่มีอยู่ได้ด้วยวิธี spreadsheets.get ในเนื้อหาการตอบกลับ Spreadsheet

เพิ่มช่วงที่มีชื่อหรือช่วงที่มีการป้องกัน

ตัวอย่างโค้ด spreadsheets.batchUpdate ต่อไปนี้แสดงวิธีใช้ออบเจ็กต์คำขอ 2 รายการ รายการแรกใช้ AddNamedRangeRequest เพื่อกำหนดชื่อ "Counts" ให้กับช่วง A1:E3 รายการที่ 2 ใช้ AddProtectedRangeRequest เพื่อแนบการป้องกันระดับคำเตือนกับช่วง A4:E4 การป้องกันระดับนี้ยังคงอนุญาตให้แก้ไขเซลล์ภายในช่วงได้ แต่จะแสดงคำเตือนก่อนทำการเปลี่ยนแปลง

คำขอเหล่านี้จะแสดง AddNamedRangeResponse และ AddProtectedRangeResponse ซึ่งมีรหัสและพร็อพเพอร์ตี้ของช่วง

โปรโตคอลคำขอแสดงไว้ด้านล่าง

POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{
  "requests": [
    {
      "addNamedRange": {
        "namedRange": {
          "name": "Counts",
          "range": {
            "sheetId": SHEET_ID,
            "startRowIndex": 0,
            "endRowIndex": 3,
            "startColumnIndex": 0,
            "endColumnIndex": 5,
          },
        }
      }
    },
    {
      "addProtectedRange": {
        "protectedRange": {
          "range": {
            "sheetId": SHEET_ID,
            "startRowIndex": 3,
            "endRowIndex": 4,
            "startColumnIndex": 0,
            "endColumnIndex": 5,
          },
          "description": "Protecting total row",
          "warningOnly": true
        }
      }
    }
  ]
}

ลบช่วงที่มีชื่อหรือช่วงที่มีการป้องกัน

ตัวอย่างโค้ด spreadsheets.batchUpdate ต่อไปนี้แสดงวิธีใช้ออบเจ็กต์คำขอ 2 รายการ รายการแรกใช้ DeleteNamedRangeRequest เพื่อลบช่วงที่ตั้งชื่อแล้วที่มีอยู่ โดยใช้ NAMED_RANGE_ID จาก การเรียก API ครั้งก่อน รายการที่ 2 ใช้ DeleteProtectedRangeRequest เพื่อลบการป้องกันช่วงที่มีอยู่ โดยใช้ PROTECTED_RANGE_ID จากการเรียก API ครั้งก่อน

โปรโตคอลคำขอแสดงไว้ด้านล่าง

POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{
  "requests": [
    {
      "deleteNamedRange": {
          "namedRangeId": "NAMED_RANGE_ID",
      }
    },
    {
      "deleteProtectedRange": {
        "protectedRangeId": PROTECTED_RANGE_ID,
      }
    }
  ]
}

อัปเดตช่วงที่มีชื่อหรือช่วงที่มีการป้องกัน

ตัวอย่างโค้ด spreadsheets.batchUpdate ต่อไปนี้แสดงวิธีใช้ออบเจ็กต์คำขอ 2 รายการ รายการแรกใช้ UpdateNamedRangeRequest เพื่ออัปเดตชื่อของช่วงที่ตั้งชื่อแล้วที่มีอยู่เป็น "InitialCounts" โดยใช้ NAMED_RANGE_ID จากการเรียก API ครั้งก่อน รายการที่ 2 ใช้ออบเจ็กต์ UpdateProtectedRangeRequest เพื่ออัปเดตช่วงที่ป้องกันไว้ที่มีอยู่เพื่อให้ช่วงดังกล่าวป้องกันช่วงที่ตั้งชื่อแล้วเดียวกัน เมธอด Editorsอนุญาตให้เฉพาะผู้ใช้ที่ระบุไว้เท่านั้นแก้ไขเซลล์เหล่านั้น คำขอนี้ใช้ NAMED_RANGE_ID และ PROTECTED_RANGE_ID จากการเรียก API ครั้งก่อน

โปรโตคอลคำขอแสดงไว้ด้านล่าง

POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{
  "requests": [
    {
      "updateNamedRange": {
        "namedRange": {
          "namedRangeId": NAMED_RANGE_ID,
          "name": "InitialCounts",
        },
        "fields": "name",
      }
    },
    {
      "updateProtectedRange": {
        "protectedRange": {
          "protectedRangeId": PROTECTED_RANGE_ID,
          "namedRangeId": NAMED_RANGE_ID,
          "warningOnly": false,
          "editors": {
            "users": [
              "charlie@example.com",
              "sasha@example.com"
            ]
          }
        },
        "fields": "namedRangeId,warningOnly,editors"
      }
    }
  ]
}