โครงสร้างและการจัดรูปแบบข้อความ

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

หน้านี้จะอธิบายวิธีแสดงข้อความใน Slides API

ลำดับขององค์ประกอบข้อความ

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

เช่น ลองพิจารณาเนื้อหาของสไลด์นี้ ซึ่งทั้งหมดจะอยู่ในกล่องข้อความเดียว

ภาพหน้าจอของสไลด์ธรรมดา

สไลด์ด้านบนมีกล่องข้อความ 1 กล่อง ซึ่งช่อง text จะมีลำดับองค์ประกอบของข้อความตามที่แสดงในแผนภาพต่อไปนี้

แผนภาพแสดงลำดับขององค์ประกอบของข้อความ

เพื่อให้เห็นภาพมากขึ้นก็คือ ข้อความตามลำดับนี้จะแสดงใน Slides API ดังต่อไปนี้

"textElements": [ {
    "endIndex": 224,
    "paragraphMarker": { "style": {} }
  }, {
    "endIndex": 130,
    "textRun": { "content": "Li lingues differe in li grammatica e li vocabules. Omnicos directe al desirabilite de un nov ", "style": {} }
  }, {
    "endIndex": 143,
    "startIndex": 130,
    "textRun": { "content": "lingua franca", "style": { "italic": True } }
  }, {
    "endIndex": 224,
    "startIndex": 143,
    "textRun": { "content": ": solmen va esser necessi far:\n", "style": {} }
  }, {
    "endIndex": 243,
    "startIndex": 224,
    "paragraphMarker": {
      "style": { "indentStart": { "magnitude": 36, "unit": "PT" }, "direction": "LEFT_TO_RIGHT", "indentFirstLine": { "magnitude": 18, "unit": "PT" }, "spacingMode": "COLLAPSE_LISTS" },
      "bullet": { "listId": "foo123", "glyph": "\u25cf" }
    }
  }, {
    "endIndex": 243,
    "startIndex": 224,
    "textRun": { "content": "uniform grammatica\n", "style": {} }
  }, {
    "endIndex": 257,
    "startIndex": 243,
    "paragraphMarker": {
        "style": { "indentStart": { "magnitude": 36, "unit": "PT" }, "direction": "LEFT_TO_RIGHT", "indentFirstLine": { "magnitude": 18, "unit": "PT" }, "spacingMode": "COLLAPSE_LISTS" },
        "bullet": { "listId": "foo123", "glyph": "\u25cf" }
    }
}, {
    "endIndex": 257,
    "startIndex": 243,
    "textRun": { "content": "Pronunciation\n", "style": {} }
}, {
    "endIndex": 277,
    "startIndex": 257,
    "paragraphMarker": {
        "style": { "indentStart": { "magnitude": 36, "unit": "PT" }, "indentFirstLine": { "magnitude": 18, "unit": "PT" }, "spacingMode": "COLLAPSE_LISTS" },
        "bullet": { "listId": "foo123", "glyph": "\u25cf" }
    }
}, {
    "endIndex": 277,
    "startIndex": 257,
    "textRun": { "content": "plu sommun paroles.\n", "style": {} }
}, {
    "endIndex": 500,
    "startIndex": 277,
    "paragraphMarker": { "style": {} }
}, {
    "endIndex": 500,
    "startIndex": 277,
    "textRun": { "content": "Ka swu thefognay, tay waddeant varpa u inzo.\n", "style": {} }
}]

เนื้อหา TextElement

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

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

ย่อหน้าอาจอยู่ในรายการหัวข้อย่อยหรือรายการที่เรียงลำดับเลข ในกรณีนี้ เนื้อหาในช่อง ParagraphMarker.bullet จะมีรหัสรายการรวมอยู่ด้วย รหัสนี้อ้างอิงองค์ประกอบของรายการที่มีอยู่ภายใน TextContent ควบคู่ไปกับลำดับ TextElement ย่อหน้าภายในรายการเชิงตรรกะเดียวกันจะหมายถึงรหัสรายการเดียวกัน
TextRun องค์ประกอบข้อความนี้คือสตริงข้อความที่ต่อเนื่องกันและมีรูปแบบข้อความเหมือนกันทั้งหมด ข้อความไม่มีวันข้ามขอบเขตของย่อหน้า แม้ว่าข้อความที่สิ้นสุด 1 ย่อหน้าจะมีรูปแบบเหมือนกับข้อความที่เริ่มต้นย่อหน้าถัดไป แต่เนื้อหาก็จะถูกแยกออกหลังอักขระขึ้นบรรทัดใหม่เพื่อสร้างข้อความแยกต่างหากในการทำงาน

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

การแก้ไขเนื้อหาข้อความ

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

การแทรกข้อความ

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

การแทรกข้อความมีผลข้างเคียงบางอย่างซึ่งคล้ายกับการทำงานของเครื่องมือแก้ไขสไลด์ ดังนี้

  • การแทรกอักขระขึ้นบรรทัดใหม่จะเป็นการสร้างย่อหน้าใหม่โดยปริยาย โดยจะสร้างองค์ประกอบข้อความ ParagraphMarker ที่เริ่มต้นจากดัชนีของบรรทัดใหม่และสิ้นสุดที่บรรทัดใหม่ต่อไปนี้ รูปแบบย่อหน้าซึ่งรวมถึงรายละเอียดหัวข้อย่อยและรายการจะคัดลอกจากย่อหน้าปัจจุบันไปยังย่อหน้าใหม่
  • รูปแบบของอักขระที่แทรกจะถูกกำหนดโดยอัตโนมัติ โดยส่วนมาก จะคงรูปแบบข้อความที่มีอยู่ในดัชนีการแทรกไว้ ด้วยเหตุนี้ โดยทั่วไปข้อความจะแทรกอยู่ใน TextRun ที่มีอยู่ในดัชนีนั้น คุณอัปเดตสไตล์นี้ภายหลังได้โดยใช้คำขอ UpdateTextStyle

กำลังลบข้อความ

คุณสามารถลบช่วงของข้อความโดยใช้ข้อความ DeleteTextRequest ในการเรียก batchUpdate การลบข้อความจะมีรายละเอียดปลีกย่อยบางอย่างดังนี้

  • การลบที่ข้ามขอบเขตของย่อหน้าจะรวม 2 ย่อหน้าเข้าด้วยกัน จะเป็นการลบองค์ประกอบข้อความ ParagraphMarker ที่แยกกันด้วย
  • ย่อหน้าที่ผสานใหม่จะใช้ลักษณะย่อหน้าแบบรวม ซึ่งจะตรงกับลักษณะการทำงานในเครื่องมือแก้ไขสไลด์
  • การลบที่มีช่วงซึ่งครอบคลุมการเรียกใช้ข้อความจะนำเนื้อหาทั้งหมดออกจากการเรียกใช้งานข้อความ และจะเป็นการลบข้อความที่ทำงานด้วย
  • การลบที่มีช่วงที่ครอบคลุมองค์ประกอบ AutoText จะลบองค์ประกอบ AutoText

กำลังอัปเดตรูปแบบข้อความ

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

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

กำลังอัปเดตรูปแบบอักขระ

คุณอัปเดตรูปแบบอักขระได้โดยใช้ข้อความ UpdateTextStyleRequest ในการเรียก batchUpdate

เช่นเดียวกับการดำเนินการข้อความอื่นๆ รูปแบบอักขระจะใช้กับช่วงข้อความและจะสร้างออบเจ็กต์ TextRun ใหม่โดยปริยายตามความจำเป็น

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

การอัปเดตรูปแบบย่อหน้า

คุณอัปเดตรูปแบบย่อหน้าได้โดยใช้ข้อความ UpdateParagraphStyleRequest ในการเรียก batchUpdate

Slides API รองรับ CreateParagraphBulletsRequest ซึ่งจำลองฟังก์ชันการทำงานของค่าสัญลักษณ์หัวข้อย่อยล่วงหน้าในเครื่องมือแก้ไขสไลด์เพื่อสร้างรายการสัญลักษณ์แสดงหัวข้อย่อยและรายการที่เรียงลำดับเลข ในทำนองเดียวกัน DeleteParagraphBulletsRequest จะนำหัวข้อย่อยที่มีอยู่ในย่อหน้าออก

รูปแบบที่รับช่วงมา

รูปร่างบางรายการหรือที่เรียกว่าplaceholdersสามารถรับรูปแบบข้อความจากรูปร่างระดับบนสุดอื่นๆ ได้ โปรดดูplaceholdersเพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับการสืบทอดรูปร่างโดยทั่วไป

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

การแสดงรูปแบบในตัวยึดตำแหน่ง

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

  • คุณสมบัติขององค์ประกอบข้อความ ParagraphMaker กำหนดการจัดรูปแบบย่อหน้า
  • คุณสมบัติขององค์ประกอบข้อความ TextRun จะกำหนดการจัดรูปแบบอักขระ
  • เนื้อหาของตัวยึดตำแหน่งระดับบนสุดจะมีคู่ ParagraphMarker/TextRun ดังกล่าว 8 คู่ (เพื่อรองรับการซ้อนรายการ 8 ระดับ)
  • ตัวยึดตำแหน่งย่อยจะรับค่าพร็อพเพอร์ตี้ข้อความเริ่มต้นจากองค์ประกอบข้อความเหล่านี้ในเนื้อหาข้อความของระดับบนสุด

แผนภาพต่อไปนี้จะแสดงวิธีหนึ่งในการแสดงความสัมพันธ์เหล่านี้

แผนภาพของรูปร่างย่อยที่สืบทอดคุณสมบัติข้อความ

ParagraphMarker/TextRun แรกในรูปร่างระดับบนสุดจะเป็นตัวกำหนดการจัดรูปแบบข้อความที่รับค่ามาส่วนใหญ่ การจัดรูปแบบใน 7 คู่ที่เหลือจะมีผลเฉพาะกับย่อหน้าที่ระดับหัวข้อย่อยที่ซ้อนลึกขึ้นเรื่อยๆ

คู่องค์ประกอบข้อความหลัก การจัดรูปแบบย่อยที่มันควบคุม
ParagraphMarker
แรก TextRunแรก
รูปแบบข้อความระดับ 0 (ชั้นนอก) ของย่อหน้ารายการและย่อหน้าที่ไม่อยู่ในรายการทั้งหมด
ที่สอง ParagraphMarker
วินาที TextRun
รูปแบบข้อความของระดับรายการ (ซ้อน) ที่เหลือ 1-7
ParagraphMarker
ที่ 3 TextRunที่ 3
ที่ 4 ParagraphMarker
TextRun ที่ 4
ที่ห้า ParagraphMarker
ที่ 5 TextRun
ที่หก ParagraphMarker
ที่ TextRun ที่หก
7 ParagraphMarker
7 TextRun
แปด ParagraphMarker
แปด TextRun

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

"text": {
  "textElements": [  {
     "startIndex": 0,
     "endIndex": 1,
     "paragraphMarker": {
       "style": {  "alignment": "START",  ...  },
       "bullet": {  "nestingLevel": 0,  ...  }
     }
   },{
     "startIndex": 0,
     "endIndex": 1,
     "textRun": {
       "content": "\n",
       "style": {  "foregroundColor": {  "opaqueColor": {  "themeColor": "DARK1"  }  },  }
     }
   },{
     ...
   } ]
 }

โปรดทราบว่าช่อง content ใน TextRun ของรูปร่างหลักประกอบด้วยอักขระขึ้นบรรทัดใหม่ 1 บรรทัดเสมอ

สามารถลบล้างรูปแบบที่รับช่วงมาได้

รูปร่างย่อยจะระบุพร็อพเพอร์ตี้การจัดรูปแบบในองค์ประกอบ ParagraphMarker และ TextRun ในเนื้อหาได้ พร็อพเพอร์ตี้ที่ระบุในเครื่องเหล่านี้จะลบล้างพร็อพเพอร์ตี้ที่รับช่วงมาภายในขอบเขตภายใน องค์ประกอบที่ไม่ระบุสไตล์ใดๆ จะใช้สไตล์ที่สอดคล้องกันที่รับช่วงมาจากระดับบนสุด

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

ตัวอย่าง

ตามการสืบทอดที่แสดงในแผนภาพด้านบน สมมติว่ารูปร่าง ParentPlaceholder มีเนื้อหาข้อความต่อไปนี้

"text": {
  "textElements": [
    { "startIndex": 0,  "endIndex": 1,
      "paragraphMarker": {
        "style": {"alignment": "START", ...},
        "bullet": {"nestingLevel": 0, ...}
      }
    },
    { "startIndex": 0,  "endIndex": 1,
      "textRun": {
        "content": "\n",
        "style": {"foregroundColor": {"opaqueColor": {"themeColor": "DARK1"} }, }
        ...
      }
    },
    { "startIndex": 1,  "endIndex": 2,
      "paragraphMarker": {
        "style": {"alignment": "END", ...},
        "bullet": {"nestingLevel": 1, ...}
      }
    },
    { "startIndex": 1,  "endIndex": 2,
      "textRun": {
        "content": "\n",
        "style": {"foregroundColor": {"opaqueColor": {"themeColor": "LIGHT1"} }, ...}
      }
    },
   ...
  ]
}

และสมมติว่ารูปร่าง ChildPlaceholder มีเนื้อหาข้อความต่อไปนี้

"text": {
  "textElements": [
    { "startIndex": 0,  "endIndex": 1,
      "paragraphMarker": {
        "style": {},
      }
    },
    { "startIndex": 0,  "endIndex": 1,
      "textRun": {
        "content": "This is my first paragraph\n",
        "style": {},
      }
      ...
    },
    {  "startIndex": 1,  "endIndex": 2,
      "paragraphMarker": {
        "style": {},
        "bullet": {
          "nestingLevel": 1,
          "listId": "someListId",
          "glyph": "●"
        }
      }
    },
    { "startIndex": 1,  "endIndex": 2,
      "textRun": {
        "content": "This paragraph is in a list\n",
        "style": {},
        ...
      }
    }
  ]
}

ซึ่งทำให้เกิดผลลัพธ์ที่อธิบายไว้ในย่อหน้าถัดไป

การรับช่วงรูปแบบสําหรับย่อหน้าธรรมดา

ย่อหน้าแรกของรูปร่างย่อยที่มีข้อความ "นี่คือย่อหน้าแรกของฉัน" ซึ่งเป็นย่อหน้าธรรมดา (ไม่ได้อยู่ในรายการ) ไม่มีองค์ประกอบในเนื้อหาข้อความที่ระบุคุณสมบัติของสไตล์ใดๆ จึงรับค่าอักขระและรูปแบบย่อหน้าทั้งหมดจากระดับบน ซึ่งทำให้เกิดการแสดงผลดังต่อไปนี้

  • ข้อความ: "นี่คือย่อหน้าแรกของฉัน" คือข้อความที่แสดงผล ข้อความจะไม่ได้รับสืบทอดมา
  • การจัดข้อความ: ข้อความจะแสดงผลด้วยการจัดแนวSTART ซึ่งรับค่ามาจาก ParagraphMarker รายการแรกของระดับบนสุด
  • สีพื้นหน้า: ข้อความจะแสดงผลโดยมีสีพื้นหน้า DARK1 ที่รับค่ามาจาก TextRun แรกของระดับบนสุด

การรับช่วงรูปแบบสำหรับย่อหน้ารายการ

ย่อหน้าถัดไปซึ่งมีข้อความว่า "ย่อหน้านี้อยู่ในรายการ" เป็นรายการสัญลักษณ์หัวข้อย่อยที่ระดับที่ 1 ซ้อนกัน เนื่องจาก ParagraphMarker ที่ตรงกันมีช่อง bullet ตั้งไว้ที่ระดับนี้ ผลที่ได้คือสไตล์ข้อความและย่อหน้าจากการซ้อนระดับที่ 1 ในระดับบนสุด ซึ่งจะทำให้เกิดการแสดงผลต่อไปนี้

  • ข้อความ: "ย่อหน้านี้อยู่ในรายการ" คือข้อความที่แสดงผล ข้อความจะไม่ได้รับสืบทอดมา
  • การจัดข้อความ: ข้อความจะแสดงผลด้วยการจัดข้อความ "END" ซึ่งรับค่ามาจาก ParagraphMarker ที่ 2 ของระดับบนสุด
  • สีพื้นหน้า: ข้อความจะแสดงผลโดยมีสีพื้นหน้าของข้อความLIGHT1 ซึ่งรับค่ามาจาก TextRun รายการที่ 2 ของระดับบนสุด

การโต้ตอบระหว่างการอัปเดตและการรับค่ารูปแบบข้อความและย่อหน้า

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

คุณอาจใช้ UpdateTextStyleRequest เพื่อยกเลิกการตั้งค่ารูปแบบข้อความของรูปร่างย่อย เพื่อที่จะไม่มีการลบล้างภายในอีก และด้วยการกำหนดรูปแบบจากรูปร่างหลัก นอกจากนี้ การอัปเดตรูปแบบข้อความของผู้เผยแพร่โฆษณาย่อยให้ตรงกับค่าที่รับช่วงมาจากระดับบนสุดจะยกเลิกการตั้งค่ารูปแบบโดยปริยาย เพื่อให้ใช้รูปแบบที่รับค่ามา

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

ตัวอย่าง

ลองพิจารณาคำจำกัดความในตัวอย่างก่อนหน้านี้สำหรับ ChildPlaceholder และ ParentPlaceholder

คราวนี้สมมติว่าคุณส่ง UpdateTextStyleRequest นี้:

{ "updateTextStyle": {
    "objectId": "ChildPlaceholder",
    "style": {"foregroundColor": {"opaqueColor": {"themeColor": "DARK1"} }, },
    "textRange": { "type": "ALL" },
    "fields": "foregroundColor"
  }
}

คำขอนี้พยายามตั้งค่าสีเบื้องหน้า DARK1 ให้กับข้อความทั้งหมดของ Childplaceholder โดยใช้ฟิลด์มาสก์ เพื่อระบุว่าควรเปลี่ยนเฉพาะสีพื้นหน้าขององค์ประกอบเท่านั้น คําขอนี้มีผลลัพธ์ดังต่อไปนี้

  • ย่อหน้าแรก: foregroundColor ใหม่ตรงกับ foregroundColor ที่รับช่วงมา ดังนั้นสไตล์นี้จะไม่เปลี่ยนแปลงและยังคงรับค่าเดิมมา
  • ย่อหน้าที่ 2: foregroundColor ใหม่ไม่ตรงกับ foregroundColor ที่รับช่วงมา ดังนั้นสีพื้นหน้าของย่อหน้าที่ 2 จะอัปเดตเป็น DARK1

เนื้อหาข้อความของ ChildPlaceholder ในขณะนี้คือ:

"text": {
  "textElements": [
    { "startIndex": 0,  "endIndex": 1,
      "paragraphMarker": {
        "style": {},
      }
    },
    { "startIndex": 0,  "endIndex": 1,
      "textRun": {
        "content": "This is my first paragraph\n",
        "style": {},
      }
      ...
    },
    { "startIndex": 1,  "endIndex": 2,
      "paragraphMarker": {
        "style": {},
        "bullet": {"nestingLevel": 1, "listId": "someListId", "glyph": "●" }
      }
    },
    { "startIndex": 1,  "endIndex": 2,
      "textRun": {
        "content": "This paragraph is in a list\n",
        "style": {"foregroundColor": {"opaqueColor": {"themeColor": "DARK1"} }, },
        ...
      }
    }
  ]
}

รูปแบบข้อความสัญลักษณ์หัวข้อย่อย

สัญลักษณ์หัวข้อย่อยมีรูปแบบข้อความที่ควบคุมลักษณะการแสดงรูปอักขระเช่นเดียวกับข้อความปกติ คุณไม่สามารถเปลี่ยนรูปแบบข้อความเหล่านี้โดยใช้ Slides API โดยตรง อย่างไรก็ตาม หากคุณใช้ UpdateTextStyleRequest เพื่ออัปเดตย่อหน้าที่สมบูรณ์ที่มีสัญลักษณ์หัวข้อย่อย Slides API จะอัปเดตรูปแบบข้อความของรูปสัญลักษณ์หัวข้อย่อยให้ตรงกัน

รูปแบบข้อความสัญลักษณ์หัวข้อย่อยจะเป็นไปตามลำดับชั้นของการสืบทอดที่แตกต่างจากรูปแบบข้อความปกติเล็กน้อย

  1. หัวข้อย่อยที่ระดับการซ้อนบางระดับจะรับค่าจากชุด TextStyle ในช่อง NestingLevel.bullet_style ภายในออบเจ็กต์ List ของหัวข้อย่อย
  2. ลำดับถัดไปจะรับค่าจาก NestingLevel.bullet_style ที่เกี่ยวข้องใน List ของตัวยึดตำแหน่งระดับบนสุด
  3. และสุดท้ายก็จะพยายามรับค่าจากออบเจ็กต์ตัวยึดตําแหน่งระดับบนสุดที่เหลือ