עריכה ועיצוב של טקסט

אפשר לערוך ולעצב טקסט באמצעות טווחי טקסט, שמיוצגים על ידי סוג TextRange. TextRange מייצג קטע של טקסט בתוך צורה או בתא בטבלה. קריאה לפונקציה getText() על צורה או תא בטבלה מחזירה טווח טקסט שמכסה את כל הטקסט.

אם משתמשים בשיטות שעורכים את האופן שבו טקסט נכנס בתוך צורה, כל הגדרות ההתאמה האוטומטית שהוחלו על הצורה יושבתו.

שימוש בטווחי טקסט

טווח טקסט מכיל שני אינדקסים שמפרידים את קטע הטקסט מכוסה בטווח טקסט: אינדקס ההתחלה ואינדקס הסיום. אפשר לקבוע את האינדקסים האלה באמצעות הפונקציות getStartIndex() ו-getEndIndex().

כדי לקרוא את התוכן של טווח טקסט, צריך להשתמש בפונקציית asString() או פונקציות asRenderedString().

כדי לאחזר תת-טווח מתוך טווח טקסט, יש להשתמש בפונקציה getRange().

הסקריפט הבא יוצר תיבת טקסט בשקף הראשון ומגדיר את תוכן הטקסט שלו ל"שלום עולם!". לאחר מכן הוא מאחזרת טווח משנה שמתפרס רק על המילה "Hello".

Slides/style/style.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() מוחקת טקסט מתוך טווח טקסט.

הסקריפט הבא מדגים את השימוש בפונקציות האלה:

Slides/style/style.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(),, שמציין את כל הפסקאות שחופפות לטווח הטקסט. א' פסקה היא רצף של טקסט שמסתיים בתו החדש, '\n'.
  • getListParagraphs(),, שמחזירה את הפריטים ברשימה בטווח הטקסט הנוכחי.
  • getRuns(), שמספק את הפעלות הטקסט שחופפות לטווח הטקסט הנוכחי. א' קטע טקסט שבו כל התווים מכילים את אותו הטקסט

עיצוב טקסט

סגנון הטקסט קובע את הרינדור של תווי הטקסט במצגת שלכם, כולל גופן, צבע והיפר-קישור.

הפונקציה getTextStyle() של טווח טקסט מספקת אובייקט TextStyle שמשמש לעצב טקסט. הטקסט של האובייקט TextStyle זהה לטקסט ההורה שלו, TextRange.

Slides/style/style.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);
}

הדוגמה שלמעלה יוצרת תיבת טקסט בשקף הראשון ומגדירה ל"שלום". לאחר מכן מתווסף הטקסט "world!". הטקסט החדש שצורף מודגש, מקושר אל www.example.com והצבע שלו מוגדר לאדום.

כשקוראים סגנונות, הפונקציה מחזירה ערך של null אם הטווח מכיל כמה ערכים. של הסגנון. לכן הדוגמה שלמעלה יוצרת את הצהרות היומן הבאות:

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

יש עוד הרבה סגנונות אחרים שאפשר להחיל על טקסט. פרטים נוספים יכולים במסמכי העזרה של TextStyle.

עיצוב פסקאות

סגנונות פיסקה חלים על פסקאות שלמות, וכוללים דברים כמו יישור טקסט וקו רווחים. הפונקציה getParagraphStyle() ב-TextRange מספקת ParagraphStyle לעיצוב של כל הפסקאות שחופפות לטווח הטקסט הראשי.

הדוגמה הבאה יוצרת תיבת טקסט בשקף הראשון עם ארבע ואז מיישרים את שלוש הפסקאות הראשונות.

Slides/style/style.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 לעיצוב כל הפסקאות שחופפים לטווח הטקסט של ההורה.

Slides/style/style.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);
}

הדוגמה שלמעלה יוצרת תיבת טקסט בשקף הראשון, שמכילה ארבע פסקאות: בוצעה כניסה אחת של הפסקה השנייה והפיסקה השלישית כניסה פעמיים. לאחר מכן היא מחילה רשימה מוגדרת מראש על כל הפסקאות. לבסוף, כל רמת הסידור הפנימי של פסקה נרשמת ביומן. (רמת הסידור הפנימי של הפסקה מגיעה מ מספר הכרטיסיות לפני הטקסט בפסקה). כלומר, הסקריפט שלמעלה מפיק הצהרות היומן הבאות:

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