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

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

หากคุณใช้วิธีการที่แก้ไขความพอดีของข้อความภายในรูปร่าง การตั้งค่าการปรับให้พอดีอัตโนมัติ ใช้กับรูปร่างแล้ว

การใช้ช่วงข้อความ

ช่วงข้อความมีดัชนี 2 รายการที่คั่นส่วนของข้อความ ที่อยู่ภายใต้ช่วงข้อความ ได้แก่ ดัชนีเริ่มต้นและดัชนีสิ้นสุด คุณสามารถระบุ ดัชนีเหล่านี้ใช้ฟังก์ชัน getStartIndex() และ getEndIndex()

หากต้องการอ่านเนื้อหาของช่วงข้อความ ให้ใช้ asString() หรือ asRenderedString() ฟังก์ชัน

หากต้องการดึงข้อมูลช่วงย่อยจากภายในช่วงข้อความ ให้ใช้ฟังก์ชัน getRange()

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

สไลด์/สไตล์/สไตล์.gs
try {
  // Get the first slide of active presentation
  const slide = SlidesApp.getActivePresentation().getSlides()[0];
  // Insert shape in the slide with dimensions
  const shape = slide.insertShape(SlidesApp.ShapeType.TEXT_BOX, 100, 200, 300, 60);
  const textRange = shape.getText();
  // Set text in TEXT_BOX
  textRange.setText('Hello world!');
  console.log('Start: ' + textRange.getStartIndex() + '; End: ' +
    textRange.getEndIndex() + '; Content: ' + textRange.asString());
  const subRange = textRange.getRange(0, 5);
  console.log('Sub-range Start: ' + subRange.getStartIndex() + '; Sub-range End: ' +
    subRange.getEndIndex() + '; Sub-range Content: ' + subRange.asString());
} catch (err) {
  // TODO (developer) - Handle exception
  console.log('Failed with an error %s ', err.message);
}

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

Start: 0; End: 13; Content: Hello world!
Start: 0; End: 5; Content: Hello

การแทรกและลบข้อความ

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

  • insertText() และ appendText() ให้คุณแทรกข้อความได้
  • setText() แทนที่ข้อความของช่วงข้อความด้วยข้อความที่ให้ไว้
  • clear() ลบข้อความจากภายในช่วงข้อความ

สคริปต์ต่อไปนี้สาธิตการใช้ฟังก์ชันเหล่านี้

สไลด์/สไตล์/สไตล์.gs
try {
  // Get the first slide of active presentation
  const slide = SlidesApp.getActivePresentation().getSlides()[0];
  // Insert shape in the slide with dimensions
  const shape = slide.insertShape(SlidesApp.ShapeType.TEXT_BOX, 100, 200, 300, 60);
  const textRange = shape.getText();
  textRange.setText('Hello world!');
  textRange.clear(6, 11);
  // Insert text in TEXT_BOX
  textRange.insertText(6, 'galaxy');
  console.log('Start: ' + textRange.getStartIndex() + '; End: ' +
    textRange.getEndIndex() + '; Content: ' + textRange.asString());
} catch (err) {
  // TODO (developer) - Handle exception
  console.log('Failed with an error %s ', err.message);
}

สคริปต์นี้จะสร้างกล่องข้อความในสไลด์แรกและตั้งค่าเนื้อหาข้อความของสไลด์ เป็น "สวัสดีทุกคน!" จากนั้นจะลบอักขระ 6 ถึง 11 ("โลก") และ แทรกข้อความ "กาแล็กซี" ที่ดัชนี 6 แทน ตัวอย่างข้างต้นแสดง ข้อความบันทึกต่อไปนี้:

Start: 0; End: 14; Content: Hello galaxy!

ค้นหาและแทนที่

ใช้ฟังก์ชัน replaceAllText() ในงานนำเสนอหรือหน้าเว็บเพื่อดำเนินการ ค้นหาและแทนที่ในงานนำเสนอทั้งหมดหรือหน้าใดหน้าหนึ่ง

ฟังก์ชัน find() ใน TextRange จะแสดงผลอินสแตนซ์ของสตริงภายในฟังก์ชัน ซึ่งสามารถใช้ร่วมกับ setText() เพื่อดำเนินการค้นหาและแทนที่ ภายในรูปร่างหรือเซลล์ในตาราง

ย่อหน้า แสดงรายการ และการเรียกใช้

TextRange มีฟังก์ชันในการแสดงคอลเล็กชันเอนทิตีข้อความที่เป็นประโยชน์ ตัวอย่างฟังก์ชันดังกล่าว ได้แก่

  • getParagraphs(), ซึ่งแสดงทุกย่อหน้าที่ซ้อนทับกับช่วงข้อความ ต paragraph เป็นลำดับข้อความที่สิ้นสุดด้วยอักขระขึ้นบรรทัดใหม่ "\n"
  • getListParagraphs(), ซึ่งแสดงรายการในช่วงข้อความปัจจุบัน
  • getRuns(), ซึ่งระบุการเรียกใช้ข้อความที่ซ้อนทับกับช่วงข้อความปัจจุบัน ต การเรียกใช้ข้อความคือส่วนของข้อความที่อักขระทั้งหมดมีข้อความเดียวกัน สไตล์

การจัดรูปแบบข้อความ

รูปแบบข้อความกำหนดการแสดงผลของอักขระข้อความในงานนำเสนอ รวมทั้งแบบอักษร สี และไฮเปอร์ลิงก์

ฟังก์ชัน getTextStyle() ของช่วงข้อความจะแสดงออบเจ็กต์ TextStyle ที่ใช้สำหรับ การจัดรูปแบบข้อความ ออบเจ็กต์ TextStyle ครอบคลุมข้อความเดียวกันกับ TextRange ระดับบนสุด

สไลด์/สไตล์/สไตล์.gs
try {
  // Get the first slide of active presentation
  const slide = SlidesApp.getActivePresentation().getSlides()[0];
  // Insert shape in the slide with dimensions
  const shape = slide.insertShape(SlidesApp.ShapeType.TEXT_BOX, 100, 200, 300, 60);
  const textRange = shape.getText();
  // Set text in TEXT_BOX
  textRange.setText('Hello ');
  // Append text in TEXT_BOX
  const insertedText = textRange.appendText('world!');
  // Style the text with url,bold
  insertedText.getTextStyle()
      .setBold(true)
      .setLinkUrl('www.example.com')
      .setForegroundColor('#ff0000');
  const helloRange = textRange.getRange(0, 5);
  console.log('Text: ' + helloRange.asString() + '; Bold: ' + helloRange.getTextStyle().isBold());
  console.log('Text: ' + insertedText.asString() + '; Bold: ' +
    insertedText.getTextStyle().isBold());
  console.log('Text: ' + textRange.asString() + '; Bold: ' + textRange.getTextStyle().isBold());
} catch (err) {
  // TODO (developer) - Handle exception
  console.log('Failed with an error %s ', err.message);
}

ตัวอย่างข้างต้นจะสร้างกล่องข้อความในสไลด์แรกและ เนื้อหาเป็น "สวัสดี" จากนั้นจึงเพิ่มข้อความ "โลก!" ต่อท้าย ข้อความที่ต่อท้ายใหม่ เป็นตัวหนา ลิงก์กับ www.example.com และตั้งค่าสีแล้ว เป็นสีแดง

เมื่ออ่านรูปแบบ ฟังก์ชันจะแสดงผลค่า Null หากช่วงนั้นมีหลายค่า สำหรับสไตล์ ตัวอย่างข้างต้นจะสร้างคำสั่งบันทึกต่อไปนี้

Text: Hello; Bold: false
Text: world!; Bold: true
Text: Hello world!; Bold: null

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

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

ลักษณะของย่อหน้าใช้ได้กับทั้งย่อหน้า และรวมถึงสิ่งต่างๆ เช่น การจัดแนวข้อความและบรรทัด การเว้นวรรค ฟังก์ชัน getParagraphStyle() ใน TextRange จะให้ ParagraphStyle สำหรับจัดรูปแบบย่อหน้าทั้งหมดที่ทับซ้อนกับช่วงข้อความระดับบนสุด

ตัวอย่างต่อไปนี้สร้างกล่องข้อความในสไลด์แรกโดยมี แล้วจัดกึ่งกลาง 3 ย่อหน้าแรก

สไลด์/สไตล์/สไตล์.gs
try {
  // Get the first slide of active presentation
  const slide = SlidesApp.getActivePresentation().getSlides()[0];
  // Insert shape in the slide with dimensions
  const shape = slide.insertShape(SlidesApp.ShapeType.TEXT_BOX, 50, 50, 300, 300);
  const textRange = shape.getText();
  // Set the text in the shape/TEXT_BOX
  textRange.setText('Paragraph 1\nParagraph2\nParagraph 3\nParagraph 4');
  const paragraphs = textRange.getParagraphs();
  // Style the paragraph alignment center.
  for (let i = 0; i <= 3; i++) {
    const paragraphStyle = paragraphs[i].getRange().getParagraphStyle();
    paragraphStyle.setParagraphAlignment(SlidesApp.ParagraphAlignment.CENTER);
  }
} catch (err) {
  // TODO (developer) - Handle exception
  console.log('Failed with an error %s ', err.message);
}

การจัดรูปแบบรายการ

คล้ายกับ ParagraphStyle โดยสามารถใช้ ListStyle เพื่อจัดรูปแบบย่อหน้าทั้งหมด ซึ่งจะทับซ้อนกับช่วงข้อความระดับบนสุด

สไลด์/สไตล์/สไตล์.gs
try {
  // Get the first slide of active presentation
  const slide = SlidesApp.getActivePresentation().getSlides()[0];
  // Insert shape in the slide with dimensions
  const shape = slide.insertShape(SlidesApp.ShapeType.TEXT_BOX, 50, 50, 300, 300);
  // Add and style the list
  const textRange = shape.getText();
  textRange.appendText('Item 1\n')
      .appendText('\tItem 2\n')
      .appendText('\t\tItem 3\n')
      .appendText('Item 4');
  // Preset patterns of glyphs for lists in text.
  textRange.getListStyle().applyListPreset(SlidesApp.ListPreset.DIGIT_ALPHA_ROMAN);
  const paragraphs = textRange.getParagraphs();
  for (let i = 0; i < paragraphs.length; i++) {
    const listStyle = paragraphs[i].getRange().getListStyle();
    console.log('Paragraph ' + (i + 1) + '\'s nesting level: ' + listStyle.getNestingLevel());
  }
} catch (err) {
  // TODO (developer) - Handle exception
  console.log('Failed with an error %s ', err.message);
}

ตัวอย่างข้างต้นสร้างกล่องข้อความในสไลด์แรก ซึ่งมี 4 ย่อหน้า เยื้องย่อหน้าที่ 2 1 ครั้ง และเยื้องย่อหน้าที่ 3 2 ครั้ง จากนั้นจึงใช้ค่าที่กำหนดล่วงหน้าแบบรายการกับย่อหน้าทั้งหมด สุดท้าย แต่ละ ระบบจะบันทึกระดับการซ้อนของย่อหน้า (ระดับการซ้อนของย่อหน้ามาจาก จำนวนแท็บอยู่ก่อนข้อความในย่อหน้า) ดังนั้นสคริปต์ด้านบนจะแสดง ข้อความบันทึกต่อไปนี้:

Paragraph 1's nesting level: 0
Paragraph 2's nesting level: 1
Paragraph 3's nesting level: 2
Paragraph 4's nesting level: 0