Important Announcement
PubHTML5 Scheduled Server Maintenance on (GMT) Sunday, June 26th, 2:00 am - 8:00 am.
PubHTML5 site will be inoperative during the times indicated!

Home Explore หนังสือคอมพิวเตอร์-การใช้ document service

หนังสือคอมพิวเตอร์-การใช้ document service

Description: หนังสือคอมพิวเตอร์-การใช้ document service

Search

Read the Text Version

8 ธนัธ วาคม 2019

พิมพ พ์พครรั้งทที่ 1 : 8 ธนร วาคม 2019

Google Apps Script เซอรว์ร สิว Document เรรียบเรียร งโดย วสัสนต์ต คณคุ ดลดิ กเศวต [email protected] Line ID : wasankds 08-1459-8343 www.poeclub.org

สารบบัญ สารบัญบ ...............................................................................4 คคานคา.................................................................................. 7 บททที่ 1 เซอร์รวิวส Document......................................................9 1.1. เซอรวร์ สวิ Document และ คลาส DocumentApp ................................................10 1.2. โครงสร้าร งของเอกสาร Google Docs .....................................................................11 บทท่ีท 2 คลาส Body..............................................................15 2.1. สว่ส น Body ของเอกสาร ......................................................................................... 16 2.2. จบัธ และล้ราง Body ................................................................................................... 16 2.3. สร้าร งไฟลร์ Google Docs และใสสเ่ นอื้น หาลงไป ..........................................................17 2.4. Methods ตระกลูก Append .................................................................................. 18 2.4.ก.) appendParagraph() (18) 2.4.ข.) appendPageBreak() (19) 2.4.ค.) appendTable() (19) 2.4.ง.) appendListItem(), getListId() , setListId() (20) 2.4.จ.) GlyphType (22) 2.4.ฉ.) appendImage()(23) 2.4.ช.) appendHorizontalRule() (24) 2.5. Methods ตระกลกู Get และ set ............................................................................24 2.5.ก.) getParagraphs(), getListItems(), getTables() (24) 2.5.ข.) getText() (25) 2.5.ค.) getMargin 4 ตัวต และ getPage 2 ตตัว (25) 2.5.ง.) setMargin 4 ตตวั และ setPage 2 ตวตั (26) 2.5.จ.) getParent() (26) 2.5.ฉ.) getAttributes() คลาส Body (27) 2.5.ช.) getAttributes() คลาส Paragraph (27) 2.6. Enum Attribute .................................................................................................. 28 2.7. setAttributes() คลาส Paragraph ......................................................................30 บททที่ 3 Heading..................................................................33 3.1. setHeading() ....................................................................................................... 34 3.2. Enum ParagraphHeading .................................................................................. 35 3.3. setHeadingAttributes() ..................................................................................... 35

บททที่ 4 Elements.................................................................37 4.1. Elements .............................................................................................................. 38 4.2. Interface Element .............................................................................................. 38 4.3. getNumChildren() .............................................................................................. 39 4.4. จบธั และดชูก นดวิ ของ Elements (คลาส Body) .........................................................40 4.5. Enum ElementType .......................................................................................... 41 4.6. ระบชุบ นดิว ELement ดว้ร ย Method ตระกูกล As ......................................................42 4.7. findElement() ..................................................................................................... 43 บททที่ 5 เคอร์รเซอร.ร์ ...............................................................45 5.1. getCursor() .......................................................................................................... 46 5.2. setCursor(), newPosition() ............................................................................... 47 บทท่ีท 6 Selection.................................................................49 6.1. getSelection(), getRangeElements(), getElement() ....................................50 6.2. Methods ตระกกลู Insert – ยร้ายไป Element .......................................................54 บททที่ 7 Text.......................................................................55 7.1. คลาส Text ............................................................................................................ 56 7.2. editAstext(), insertText() .................................................................................. 56 7.3. deleteText() ........................................................................................................ 57 7.4. replaceText() ...................................................................................................... 58 บททที่ 8 ภาพ........................................................................61 8.1. ใสภ่ส าพลงในตตาแหนงส่ Cursor ................................................................................. 62



คาค นาค หนัตงสสือเลล่มน้นี เป็ปนหน่นึงในชชุด การเขีขยนโปรแกรม Google Apps Script โดยในเลล่มนนี้อธิธบายการใช้ชงาน เซอร์วร สวิ Document ก็กคือส เซอรวร์ ธสิ สสาหรบตั การใชช้งาน Google Docs นัึนตน่ เอง ผเชผ้ ขนยน เขนยนหนงัต สอสื เลม่ล นน้ี จดชุ ประสงค์ดร ันีตง้ เดิมธ กก็คสือ เกบ็ก ไวรอ้ า่ส นเอง เมสืนึอ่ ผ้ผชเขยน นศนกษาเรสอึืน่ งอะไร ก็กจะไปเรยน นร้ผชจากส่สืนึอออนไลนร์ในอินธ เตอร์รเน็กต ทนงีัต้ คอร์รสออนไลน์ร วธิดนโอ หรืสอ เอกสาร ทง้ีนัต ในแบบฟรแน ละเสนยเงิธน ในยชุคปัปจจุชบันต เราตอ้ช งเรยน นร้ชผอะไรใหช้เรก็ว โดยเฉพาะเรื่ึสนองของ IT ผชผเ้ ขนยนจนงต้ังีนต ใจจะดผวธิดนโอเพนยงรอบเดนยว จนงดผไป พธมิ พร์สรชุปไปดวช้ ย เวลาจาส อะไรไมไ่ล ด้ช มาดผจากทน่ึพธิมพร์สรุชปไวช้งลา่ ยกวล่าการไปยอช้ นดผจากวธิดนโอ นอกจากน้ีนกย็ก ัตงนาส มาทบทวน ได้งช ่าล ย ในอนาคตสามารถเพ่นึิธมเติมธ เสรมธิ แตลง่ เนนสีือ้ หาไดเช้ รึนอืส่ ยๆด้วช ย หนังต สอสื เลล่มน้นี ความตนี้ตังใจดีันตง้ เดิมธ ของผเชผ้ ขยน น ก็กคอสื ต้นืงัธ ใจเก็บก ไวร้อาส่ นเองคนเดีขยว เหตเุบ พราะเน้นอื หาเอามาจากของ คนอื่อนนเป็ปนส่วส นใหญส่ ผร้กูเขียข นเขีขยนเพวมอื่ิ ไปไมส่มาก อย่ลางไรก็ดก น อตชุ สาล่ หร์พธมิ พไร์ วช้เปปน็ หนัตงสสือแลว้ช จะเก็บก ไวช้อา่ล นคนเดนยวกก็รสชผ้ นกเสนยดาย ผผ้เช ขยน นจนงนสามาแบล่งปปัน เนนืออ่ งดว้ร ย ผเกู้ร ขยีข นใหค้ร วามสตาคัญธ กบัธ ประเดน็ก ด้าร นลขวิ สวิทธิ์วมธ าก ฉะนั้ธนืนจงึจ ขอแจร้งไว้ร ณ ทนอืีข่ ื้ีขน ตันืง้ธ แตต่ส นร้ กค็ก อน 1. เนส้นืีอหาในหนัตงสสือ ผเช้ผ ขนยนรวบรวมมาจากแหลลง่ ตา่ล งๆในอินธ เตอรร์เน็กต ซน่ึงจะพยายามใหม้ช ากทน่ึสุชด ท่จึน ะบอกลธิงคร์ หรือส แหล่ลงทึน่มาในแตล่ละหตัวข้อช เพราะหนงัต สอืส เล่มล นน้ีถผกเขยน นไวช้นานแลว้ช บางเร่ึอสืน งลมสื ก๊กอปปีปล้ งธิ คม์ร าแปะไว้ช 2. ผเชผ้ ขยน นเปปน็ เพนยงผชผร้ วบรวมเนี้อนืส หา เขนยนเพึมนิ่ธ เติธมเพยน งเล็กก นอ้ช ย 3. หนงตั สืสอเล่มล นี้นแจกฟรน ผเผช้ ขนยนไมม่ล รน ายได้จช ากหนตงั สืสอเล่มล นน้ี หนธังสนอเลส่มนนขื้ียัธงไม่สจบเสีขยทีขเดขียว หากผกูร้เขขียนวส่าง จะมาเขขียนเพิอวื่มเติวมเรน่อือยๆ ให้รดกูเวอรร์ชธัอ่ืนตามวัธนทขอืี่ทขี่ือปลส่อย หนังธ สนอ วสนัต ต์ร คณชุ ดธิลกเศวต [email protected] 081-459-8343 Line ID : wasankds



บททีท่ 1 เซอรร์วสิว Document

1.1. เซอรรว์ วิส Document และ คลาส DocumentApp เซอรพว์ สพิ Document https://developers.google.com/apps-script/reference/document เซอร์วร ิสธ Document ใชสช้ ราช้ ง เข้ชาถนงไฟล์ร และแก้ไช ขขอ้ช มผลตา่ล งๆในไฟลร์ Google Docs เซอรวร์ สิธ Document ประกอบไปดว้ช ยหลากหลายคลาส ท่นมึ คน วามสมัต พันต ธ์รกนตั อยา่ล งเปปน็ โครงสรา้ช ง คลาส DocumentApp https://developers.google.com/apps-script/reference/document/document-app การใชง้ช านเซอรว์ร สิธ Document เรธ่ึมิน ตชน้ จาก คลาส DocumentApp คลาส DocumentApp ประกอบไปดวช้ ย Properties(Enum) และ Methods ดตังตอล่ ไปนี้น Properties หรอรื Enum ต่ตางๆในคลาส DocumentApp Property Type Description Attribute Attribute The Attribute enumeration. ElementType ElementType The ElementType enumeration. FontFamily FontFamily The FontFamily enumeration. GlyphType GlyphType The GlyphType enumeration. HorizontalAlignment HorizontalAlignment The HorizontalAlignment enumeration. ParagraphHeading ParagraphHeading The ParagraphHeading enumeration. PositionedLayout PositionedLayout The PositionedLayout enumeration. TextAlignment TextAlignment The TextAlignment enumeration. VerticalAlignment VerticalAlignment The VerticalAlignment enumeration. Methods Method Return type Brief description create(name) Document Creates and returns a new document. getActiveDocument() Document Returns the document to which the script is container- bound. Returns an instance of the document's user-interface getUi() Ui environment that allows the script to add features like menus, dialogs, and sidebars. openById(id) Document Returns the document with the specified ID. openByUrl(url) Document Opens and returns the document with the specified URL. หมายเหตุบ : หนงตั สือส เล่ลมนนี้จะขอข้ชามเรอสืนึ่ ง Methods ของคลาส DocumentApp เพราะทชุกเซอรวร์ ิสธ หลักต ๆ เชน่ล SpreadApp, FormApp ใชช้งานเหมือส นกัตน และไดอ้ช ธธบิ ายไปแล้วช ในหนตังสือส เลน่ล อนืึนส่ ตวัต อยา่ล ง โคช้ดตล่อไปนีน้ เรยน กใช้เช ซอรวร์ สิธ Document โดยเรนม่ธิึ ตนช้ จากคลาส DocumentApp // เปดปิ ไฟลลโ์ ดยใช้ช ID var doc = DocumentApp.openById('DOCUMENT_ID_GOES_HERE'); // สรช้างและเปปิดเอกสารใหมม่ - คนคื ค่าม กลบลั มาเป็ปน Document doc = DocumentApp.create('Document Name'); 10 Google Apps Script เซอรพ์วิพส Doucument

1.2. โครงสราร้ งของเอกสาร Google Docs Structure of a document https://developers.google.com/apps-script/guides/docs#structure_of_a_document เอกสาร Google Docs ประกอบไปด้ชวยวัตตถชุหรสือคลาสจาส นวนหนนึ่ง(เรนยกรวมๆวล่า Elements) มนความ สัมต พัตนธกร์ ัตนอยา่ล งเปป็นโครงสร้ชาง ซนึ่งสามารถเขนยนเป็ปนผัตง Structure of a document ไดช้ในหนา้ช ถัตดไป ผตังนนี้ เป็ปน หวัต ใจสสาคัญต ในการเขยน นสครปิธ ต์ร ตวัธ ทือขีข่ ดขี เสร้นใต้ร หมายถนง แทรกลงในเอกสารไดช้ แตท่ส ่ขีือไมม่ส ขีขดีข เสรน้ ใตร้ หมายถนง สามารถจตดั การในลตักษณะอยผล่กับต ทน่ึไดช้ เรยีร บเรีรยงโดย วสลนั ตล์ คคณุ ดลดิ กเศวต ([email protected]) 11

Document |- 1.Body // Body ประกอบไปดวช้ ย 4 ตัลว กคก็ อคื ListItem, Paragraph, Table, TableOf Contents | |- ListItem (1) | | |- Equation || |- EquationFunction || |- EquationFunction… || |- EquationFunctionArgumentSeparator || |- EquationSymbol || |- Text || |- EquationSymbol || |- Text | | |- Footnote | | |- HorizontalRule | | |- InlineDrawing | | |- InlineImage | | |- PageBreak | | |- Text || | |- Paragraph (2) | | |- Equation || |- EquationFunction || |- EquationFunction… || |- EquationFunctionArgumentSeparator || |- EquationSymbol || |- Text || |- EquationSymbol || |- Text | | |- Footnote | | |- HorizontalRule | | |- InlineDrawing | | |- InlineImage | | |- PageBreak | | |- Text || | |- Table (3) | | |- TableRow || |- TableCell || |- Paragraph… || |- ListItem… || |- Table… || | |- TableOfContents (4) | |- Paragraph… | |- ListItem… | |- Table… | (มตท อ่ต ) 12 Google Apps Script เซอรว์พ สิพ Doucument

(ตอ่ต ) | | |- 2.HeaderSection | |- ListItem | |- HorizontalRule | |- InlineDrawing | |- InlineImage | |- Text | |- UnsupportedElement (page number, etc.) | |- Paragraph | |- HorizontalRule | |- InlineDrawing | |- InlineImage | |- Text | |- UnsupportedElement (page number, etc.) | |- Table | |- TableRow | |- TableCell | |- Paragraph… | |- ListItem… | |- Table... | |- 3.FooterSection | |- ListItem | |- HorizontalRule | |- InlineDrawing | |- InlineImage | |- Text | |- UnsupportedElement (page number, etc.) | |- Paragraph | |- HorizontalRule | |- InlineDrawing | |- InlineImage | |- Text | |- UnsupportedElement (page number, etc.) | |- Table | |- TableRow | |- TableCell | |- Paragraph… | |- ListItem… | |- Table... | |- 4.FootnoteSection |- ListItem |- HorizontalRule |- Text |- Paragraph |- HorizontalRule |- Text เรียร บเรยีร งโดย วสนลั ต์ล คุณค ดิลด กเศวต ([email protected]) 13

14 Google Apps Script เซอรพ์วิสพ Doucument

บททที่ 2 คลาส Body

2.1. สวส่ น Body ของเอกสาร คลาส Body https://developers.google.com/apps-script/reference/document/body.html Body ของเอกสาร กค็ก ือส พนืส้นี ทหึน่ ลตักทึเน่ ราใสเล่ นืน้ีสอหาลงในเอกสาร Google Docs Body ประกอบไปดว้ช ย Elements หลัตกๆ 4 ตวัต ก็กคอสื ListItem(หวัล ขชอ้ อัลตโนมลัติด เชม่น Bullets หรอคื Numbering), Paragraph(ยอ่ม หนาช้ ), Table(ตาราง) และ TableOfContents(สารบลญั ) ยกเวร้น HeaderSection(หลวั กระดาษ), FooterSection(ท้ชายกระดาษ) และ FootnoteSection(เชงิด อรรถ) 2.2. จจบั และล้ราง Body getBody() - Method ในคลาส Document https://developers.google.com/apps-script/reference/document/document.html#getbody ใชจช้ ัตบส่ลวน Body ของเอกสาร โดยจะคสืนคา่ล กลตับมาเป็นป คลาส Body คลาส Body https://developers.google.com/apps-script/reference/document/body.html ตวัต อยาล่ ง โคดช้ ตลอ่ ไปนนี้ พมิธ พ์รย่ลอหนช้าท่ึมน ขน อ้ช ความ A paragraph ตอ่ล ท้ชาย // จบลั ไปทไรี่ท ฟลล์ Google Docs ทีรท่โปรเจคก็ Google Apps Script ฝังฝ อย่มย var doc = DocumentApp.getActiveDocument() ; // จบลั ไปทรี่ท Body ของเอกสาร var body = doc.getBody() ; // แนบท้าช ยดว้ช ยยอ่ม หน้าช body.appendParagraph(\"A paragraph.\"); // ขนึข้ หนช้าใหมม่ body.appendPageBreak(); หากต้อช งการลาช้ งขช้อความใน Body ใชช้ Method clear() clear() - Method ในคลาส Body https://developers.google.com/apps-script/reference/document/body.html#clear ตวัต อยาล่ ง body.clear() // ล้าช งบอดี้ขึร 16 Google Apps Script เซอร์วพ ิสพ Doucument

2.3. สรา้ร งไฟลร์ Google Docs และใสเส่ นือน้ หาลงไป Extending Google Docs – The basics https://developers.google.com/apps-script/guides/docs#the_basics สรา้ช งโปรเจค็ก Google Apps Script แบบ Stand alone จากนตันน้ี พธิมพร์โคช้ดต่อล ไปนลนี้ งไป function createDoc() { var doc = DocumentApp.create('Sample Document') ; var body = doc.getBody() ; var rowsData = [ [ 'Plants' , 'Animals' ] , [ 'Ficus' , 'Goat' ] , [ 'Basil' , 'Cat' ] , [ 'Moss' , 'Frog' ] ] ; // แทรกยมอ่ หน้ชาทต่ทีร ตาแหนม่ง Element ที่รท 0 (ยม่อหนช้าแรก) ข้อช ความในยอ่ม หนาช้ คคือช่ีอทรื ไฟลพ์ // และ กาต หนดสไตลล์ย่อม หนาช้ เป็นป Heading1 body.insertParagraph(0, doc.getName()) .setHeading(DocumentApp.ParagraphHeading.HEADING1) ; // แนบทช้ายด้าช ยตาราง ใสเ่ม นอข้ืคึ หาตามค่าม ในตลัวแปรอารย์ล rowsData table = body.appendTable(rowsData) ; // จับล แถบแรกของตาราง + แกไ้ช ขแบบข้อช ความ + กตาหนดเปน็ป ตลัวหนา table.getRow(0).editAsText().setBold(true) ; } ผล เรยีร บเรีรยงโดย วสลันต์ล คคณุ ดดลิ กเศวต ([email protected]) 17

2.4. Methods ตระกกลู Append Methods ตระกผล Append ใช้แช นบทา้ช ยบางอยา่ล งลงในเอกสาร 2.4.ก.) appendParagraph() appendParagraph(text) – Method ในคลาส Body https://developers.google.com/apps-script/reference/document/body.html#appendparagraphtext appendParagraph(paragraph) – Method ในคลาส Body https://developers.google.com/apps-script/reference/document/body.html#appendparagraphparagraph คลาส Paragraph https://developers.google.com/apps-script/reference/document/paragraph.html appendParagraph() ใข้แช นบทา้ช ยด้ชวยย่ลอหน้าช โดยจะคสนื คาล่ กลัตบมาเป็ปนคลาส Paragraph พารามเธิ ตอร์ร ของ appendParagraph() เปปน็ text(ขอ้ข ความ) หรสือ คลาส Paragraph กก็ได้ช การระบชเุ ปปน็ คลาส Paragraph ใชช้ในกรณกน ๊กอปปย้ีป ่ลอหนชา้ ตวตั อยา่ล งการใชงช้ าน function appendParas(){ var body = DocumentApp.getActiveDocument().getBody() ; // สร้าช งยม่อหนาช้ แล้ชวจลับใสมต่ วลั แปร var header = body.appendParagraph(\"A Document\") ; // กตาหนดสไตลยล์ ม่อหนช้า HEADING1 กับล ยมอ่ หนช้า header.setHeading(DocumentApp.ParagraphHeading.HEADING1) ; // แนบทช้ายเอกสารดช้วยย่มอหน้ชาทมรีท่ ขรี อ้ช ความ Section 1 var section = body.appendParagraph(\"Section 1\") ; // กตาหนดสไตล์ลยอ่ม หนช้า HEADING2 กบลั ยอม่ หนชา้ section.setHeading(DocumentApp.ParagraphHeading.HEADING2) ; // แนบทา้ช ยเอกสารด้วช ยยมอ่ หนาช้ ที่มรท ขรี อ้ช ความ … - เปปน็ ยอม่ หนา้ช ปกติด (ใชช้สไตลล์ Normal) var para = body.appendParagraph(\"This is a typical paragraph.\") ; // กอก๊ ปปย้ปี ม่อหนาช้ – พารามดิเตอรเล์ ปป็นวตลั ถยคุ ม่อหน้ชา body.appendParagraph(para.copy()) ; } ผล 18 Google Apps Script เซอรว์พ ิพส Doucument

2.4.ข.) appendPageBreak() appendPageBreak() – Method ในคลาส Body https://developers.google.com/apps-script/reference/document/body.html#appendpagebreak appendPageBreak(pageBreak) – Method ในคลาส Body https://developers.google.com/apps-script/reference/document/body.html#appendpagebreakpagebreak ตามเอกสารของ Google อธธิบายวล่า ใชช้สร้ชางและแนบคลาส PageBreak ซน่ึงอธธิบายงล่ายๆได้ชอนกอยล่างวล่า ใชชข้ นีน้ ใหมนล่ ันึนต่ เอง โดยจะคสืนคล่ากลับต มาเปปน็ คลาส PageBreak ตวัต อย่าล ง body.appendPageBreak() ; // ขน้ขึ หนชา้ ใหมม่ 2.4.ค.) appendTable() appendTable() – Method ในคลาส Body https://developers.google.com/apps-script/reference/document/body.html#appendtable appendTable(cells) – Method ในคลาส Body https://developers.google.com/apps-script/reference/document/body.html#appendtablecells appendTable(table) – Method ในคลาส Body https://developers.google.com/apps-script/reference/document/body.html#appendtabletable คลาส Table https://developers.google.com/apps-script/reference/document/table.html ใชช้แนบทา้ช ยด้ชวยตาราง โดยจะคสืนคา่ล กลัตบมาเป็ปนคลาส Table พารามธิเตอร์รสามารถเปป็น cells(String[][] หรสอื ขอข้ ความในอาเรยพ์ 2 มติพ ิพ) , เปนป็ คลาส Table หรสือ ไมต่ระบบุพารามเพิ ตอรพ์ กกไ็ ดช้ แบบ ไม่ตระบุบพารามพิเตอรพ์ จะแนบย่ลอหน้ชาวล่างๆหลัตงตาราง เพราะเอกสาร Google Docs จบด้ชวยตาราง ไมลไ่ ดช้ แบบ คลาส Table ใชใ้ช นกรณกน ๊กอปปป้ีตาราง การใชงช้ านเชน่ล body.appendTable(table.copy()) ; ตวตั อยล่าง var doc = DocumentApp.getActiveDocument() ; var body = doc.getBody() ; // อาเรย์ล 2 มิดตทิด รีจท่ ะใชชเ้ ป็นป ขช้อมลย ใหกช้ บลั ตาราง var data = [ [ 'Plants' , 'Animals' ] , [ 'Ficus' , 'Goat' ] , [ 'Basil' , 'Cat' ] , [ 'Moss' , 'Frog' ] ] ; var table = body.appendTable(data) ; // ตารางทีทร่ 1 body.appendTable(table.copy()) ; // ตารางททีร่ 2 ก๊กอปปตปี้ ารางท่ีรท 1 มา เรีรยบเรียร งโดย วสัลนตล์ คุคณดิลด กเศวต ([email protected]) 19

ผล – ไดช้ 2 ตาราง ตารางแรกสราช้ งจากอารย์รขชอ้ ความ อนกตารางกอ๊ก ปปป้ีมาจากตารางแรก 2.4.ง.) appendListItem(), getListId() , setListId() appendListItem(text) – Method ในคลาส Body https://developers.google.com/apps-script/reference/document/body.html#appendlistitemtext appendListItem(listItem) – Method ในคลาส Body https://developers.google.com/apps-script/reference/document/body.html#appendlistitemlistitem คลาส ListItem https://developers.google.com/apps-script/reference/document/list-item.html ใชช้สร้ชางและแนบ ListItem ตตัวใหมล่ โดยจะคสืนค่ลากลัตบมาเปป็นคลาส ListItem พารามิธเตอรร์สามารถเป็ปน text หรสอื เปปน็ คลาส ListItem(ใช้ใช นกรณนกอ๊ก ปปีป้ ListItem) 1 ListItem มน 1 ย่ลอหน้ชา และมน List ID ด้ชวย โดย List ID ใช้ชเป็ปนตตัวจตัดกลชุล่มวล่าเปป็น ListItem กลชุล่ม เดยน วกันต หรืสอไม่ล ListItem ไม่ลสามารถมน \\n (new-line characters) โดยจะถผกแปลงเป็ปน \\r (line-break characters คลชา้ ยกด <Shift><Enter>) 20 Google Apps Script เซอร์วพ ิสพ Doucument

ตวตั อย่าล ง function appendListItem(){ var body = DocumentApp.getActiveDocument().getBody() ; body.clear() ; // แนบทา้ช ยดช้วย ListItem ลตาดบลั ทีท่ร 1 var item1 = body.appendListItem('Item 1') ; // จลบั List ID ของ item1 // เช่มนพมิด พล์ : kix.z8suvlutfedt Logger.log(item1.getListId()) ; // แนบทา้ช ยด้วช ยตาราง จดคุ ประสงคเล์ พคืทีอ่ ขนึ้ขลั กลางระหว่าม ง ListItem body.appendTable([['Cell 1', 'Cell 2']]) ; // แนบท้ชายดวช้ ย ListItem ลาต ดบลั ที่ทร 2 // และเซ็ตก List ID ตวัล เดีรยวกบลั Item1 เพที่ืคอใหเช้ ปป็นกลม่มุค เดยรี วกลนั ตวร เลขจงจึ นรบตอ่ต กรน var item2 = body.appendListItem('Item 2') ; item2.setListId(item1) ; // แนบทช้ายดช้วย ListItem ลาต ดบัล ท่ีรท 3 - ข้อช ความยาวๆ var item3 = body.appendListItem('Item 3 : ยอม่ หน้ชายาวๆ ยอ่ม หนา้ช ยาวๆ ยอม่ หนา้ช ยาวๆ ยมอ่ หน้ชายาวๆ ยอม่ หน้าช ยาวๆ ยม่อหนช้ายาวๆ ย่มอหนาช้ ยาวๆ ยอ่ม หนช้ายาวๆ ยม่อหนาช้ ยาวๆ') ; // แนบท้ชายดช้วย ListItem ลตาดบัล ทีรท่ 4 – มีกร ารขขนึ้ บรรทัดล ใหมม่ (คลชา้ ยการกด <Shift><Eeter>) var item4 = body.appendListItem('Item 4 : บรรทรดทท่ี 1\\n บรรทดร ท่ที 2\\n บรรทรดทที่ 3\\n') ; } ผล getListId() - Method ในคลาส ListItem https://developers.google.com/apps-script/reference/slides/list?hl=vi#getlistid ใชช้จตับ List ID settListId(listItem) - Method ในคลาส ListItem https://developers.google.com/apps-script/reference/document/list-item#setlistidlistitem ใชชก้ สาหนด List ID ให้กช บตั LIstItem เรีรยบเรียร งโดย วสันล ตล์ คุณค ดลิด กเศวต ([email protected]) 21

2.4.จ.) GlyphType Enum GlyphType https://developers.google.com/apps-script/reference/document/glyph-type ใชกช้ สาหนดรปผ แบบของ Bullet ใหก้ช ตับ ListItem การใช้งช านเชน่ล DocumentApp.GlyphType.Property Property Type Description BULLET Enum The default bullet, circular and filled. HOLLOW_BULLET Enum A hollow bullet. SQUARE_BULLET Enum A square bullet. NUMBER Enum A number based bullet. LATIN_UPPER Enum A latin, uppercase bullet. LATIN_LOWER Enum A latin, lowercase bullet. ROMAN_UPPER Enum A roman numeral, uppercase bullet. ROMAN_LOWER Enum A roman numeral, lowercase bullet. ตวตั อยาล่ ง function bulletType() { var docID = \"1aqAv5bzhIvxWPheMpaQJu2vPTWZQQKd3qIsyGPlq-qM\" ; var docFiles = DocumentApp.openById(docID) ; var docBody = DocumentApp.openById(docID).getBody() ; // Insert at list item, with the default nesting level of zero. docBody.appendListItem(\"Item 1\") ; // Append a second list item, with a nesting level of one, indented one inch. // The two items will have different bullet glyphs. docBody.appendListItem(\"Item 2\") .setNestingLevel(1) .setIndentStart(72) .setGlyphType(DocumentApp.GlyphType.SQUARE_BULLET) ; } ผล 22 Google Apps Script เซอรวพ์ สิพ Doucument

2.4.ฉ.) appendImage() appendImage(image) – Method ในคลาส Body https://developers.google.com/apps-script/reference/document/body.html#appendimageimage appendImage(image) – Method ในคลาส Body (ใชช้กรณรีกกอ๊ ปปภ้ีป าพ) https://developers.google.com/apps-script/reference/document/body.html#appendimageimage_1 คลาส InlineImage https://developers.google.com/apps-script/reference/document/inline-image.html ใช้ชสรา้ช งและแนบท้าช ยดวช้ ยภาพ InLineImage โดยจะคนสื คาล่ กลัตบมาเป็นป คลาส InLineImage พารามธิเตอร์ร image เป็ปน BlobSource ทม่ที ทขอ้ข มมูลเปปน็ ภาพ ตวัต อยาล่ ง ดรดแปลงมาจาก - Insert Inline Image in a Google Document https://ctrlq.org/code/20078-insert-image-in-google-document function insertImage() { // ภาพจากเวกบ็ // จบัล Blob ใส่มตลวั แปร // var imageLink = \"https://img.labnol.org/logo.png\" ; // var blob = UrlFetchApp.fetch(imageLink).getBlob() ; // ภาพจาก Google Drive – จบัล ใสม่ BLOB กอม่ น var imageLink = \"https://drive.google.com/open?id=11inBoKWzWZr_ip2OvBAv3BWY7TbW9JDt\" ; var imageID = imageLink.match(/[\\w\\_\\-]{25,}/).toString() ; // จบัล มาเฉพาะ ID var blob = DriveApp.getFileById(imageID).getBlob() ; // จบัล Blob ของภาพใสม่ตัลวแปร var body = DocumentApp.getActiveDocument().getBody() ; // แนบทช้ายดว้ช ยภาพลงใน Body เอกสาร var image = body.appendImage(blob).setWidth(100).setHeight(100/1.7777) ; // ก๊อก ปปภปี้ าพ body.appendImage(image.copy()).setWidth(200).setHeight(200/1.7777) ; } ผล เรีรยบเรีรยงโดย วสันล ต์ล คุคณดดลิ กเศวต ([email protected]) 23

2.4.ช.) appendHorizontalRule() appendHorizontalRule() https://developers.google.com/apps-script/reference/document/body.html#appendhorizontalrule ใชแช้ นบท้าช ยดว้ช ยย่อล หน้าช ท่มนึ คน ลาส HorizontalRule โดยจะคนืส คาล่ กลบตั มาเปปน็ คลาส HorizontalRule HorizontalRule กคก็ อืส เสน้ช ทึข่น นดดชว้ ยแท็กก <hr> ในโคด้ช HTML 2.5. Methods ตระกูลก Get และ set 2.5.ก.) getParagraphs(), getListItems(), getTables() getParagraphs() - Method ในคลาส Body https://developers.google.com/apps-script/reference/document/body#getparagraphs ใชช้จัตบย่ลอหน้ชาทนึ่อยลใ่ผ น Body รวมถนงย่ลอหนช้าทน่ึอยผ่ลใน ListItem และ Table ด้วช ย (ถชา้ อยล่ผในวัตตถุชบรรจชุภตัณฑร์ ตวตั อ่ืนึนส กก็จับต ย่อล หนช้าในบรรจภุช ณัต ฑ์รตวัต นนีต้ัน ) โดยจะคืนส คาล่ กลตับมาเปป็น Paragraph[] (คลาส Paragraph ในอารเยล์) getListItems() - Method ในคลาส Body https://developers.google.com/apps-script/reference/document/body#getlistitems ใช้ชจตับ ListItem ทนึ่อยล่ผใน Body โดย 1 หัตว(1 ย่ลอหนช้า) จะจัตบมาเปป็น 1 คลาส ListItem(ถ้ชาอยลผ่ในวตัตถุช บรรจชุภัตณฑ์รตตัวอ่ึืนสน กก็จตับ ListItem ในบรรจุชภตัณฑรต์ ัตวนตนีั้น) โดยจะคืสนค่ลากลัตบมาเป็ปน ListItem[] (คลาส ListItem ในอารเย์ล) getTables() - Method ในคลาส Body https://developers.google.com/apps-script/reference/document/body#gettables ใชช้จตับตารางทนึ่อยผ่ลใน Body (ถ้ชาอย่ผลในวตัตถชุบรรจชุภัตณฑ์รตตัวอืนสึ่น กก็จัตบตารางในบรรจชุภตัณฑ์รตัตวนันีต้น) โดยจะคสืน คา่ล กลับต มาเปน็ป Table[] (คลาส Table ในอารเยล์) ตวัต อยา่ล ง function Tables() { var body = DocumentApp.getActiveDocument().getBody() ; var paras = body.getParagraphs() ; var lists = body.getListItems() ; var tables = body.getTables() ; Logger.log(body) ; // พมดิ พ์ล : DocumentBodySection Logger.log(paras) ; // พมดิ พล์ : [Paragraph, Paragraph, Paragraph, … ] Logger.log(lists) ; // พมิด พล์ : [ListItem, ListItem] Logger.log(tables) ; // พมิด พล์ : DocumentBodySection Logger.log(body.getType()) ; // พมิด พ์ล : BODY_SECTION () Logger.log(paras[0].getType()); // พมิด พล์ : PARAGRAPH Logger.log(lists[0].getType()); // พมิด พ์ล : LIST_ITEM Logger.log(tables[0].getType()); // พมดิ พล์ : TABLE tables.forEach(function(table){ // แนบท้าช ยดช้วยตารางท่กรีท ๊อก ปปไป้ี วช้ ลงไป body.appendTable(table.copy()) ; }) ; } 24 Google Apps Script เซอรพ์วิพส Doucument

หมายเหตบุ getType() เปป็น Method ในหลายคลาส ดผ Enum ElementType https://developers.google.com/apps-script/reference/document/element-type 2.5.ข.) getText() getText() - Method ในคลาส Body https://developers.google.com/apps-script/reference/document/body#gettext ใชชจ้ ตับข้ชอความทตีันง้ หมดทน่ึอย่ผลใน Body รวมถงน ข้ชอคามทึน่อย่ใผล น ListItem, Paragraph และ Table (ถาช้ อยใผล่ น วตตั ถชบุ รรจุชภัตณฑรต์ ัวต อึนน่ืส กจ็ก บตั ขอ้ช ความในบรรจชุภณตั ฑต์ร ัวต นัี้นตน ) โดยจะคืสนคาล่ กลตับมาเป็ปนขอ้ช ความ(String) ตวัต อย่ลาง var body = DocumentApp.getActiveDocument().getBody() ; var text = body.getText() ; 2.5.ค.) getMargin 4 ตวร และ getPage 2 ตวร getMarginTop(), getMarginBottom(), getMarginLeft(), getMarginRight() - Method ในคลาส Body https://developers.google.com/apps-script/reference/document/body#getMarginTop() https://developers.google.com/apps-script/reference/document/body#getMarginBottom() https://developers.google.com/apps-script/reference/document/body#getMarginLeft() https://developers.google.com/apps-script/reference/document/body#getMarginRight() ใชจ้ช ตบั ระยะ Margin(ระยะเวน้ช ขอบกระดาษ) ทีนตัง้ 4 ดาช้ น โดยจะคสนื ค่ลากลตบั มาเปปน็ จสานวนเตม็ก ในหน่วล ย points getPageHeight(), getPageWidth() - Method ในคลาส Body https://developers.google.com/apps-script/reference/document/body#getpageheight https://developers.google.com/apps-script/reference/document/body#getpagewidth ใชจช้ ตบั ความสผงและความกวา้ช งของหน้าช กระดาษ โดยจะคืสนคาล่ กลับต มาเปน็ป จาส นวนเต็มก ในหนลว่ ย points ตวัต อย่ลาง function margin_page() { var body = DocumentApp.getActiveDocument().getBody() ; Logger.log(body.getMarginTop()) ; // เชน่ม พิดมพล์ : 14.1732 Logger.log(body.getMarginBottom()) ; // เชนม่ พดมิ พ์ล : 14.1732 Logger.log(body.getMarginLeft()) ; // เชม่นพมิด พ์ล : 14.1732 Logger.log(body.getMarginRight()) ; // เช่นม พมิด พ์ล : 14.1732 Logger.log(body.getPageHeight()) ; // เชนม่ พดิมพล์ : 400.899887517858 Logger.log(body.getPageWidth()) ; // เชม่นพมดิ พล์ : 283.465 } // Close - function หมายเหตบุ : 1 ซม. = 28.3465 พอช้ ยตล์ 1 นึขดิ้ว 1 พชอ้ ยต์ล = 72 พอ้ช ยต์ล 1 พอ้ช ยตล์ = 0.0352778 ซม. = 0.0138889 นดขึ้วิ เรยรี บเรียร งโดย วสลันตล์ คณคุ ดดลิ กเศวต ([email protected]) 25

2.5.ง.) setMargin 4 ตรว และ setPage 2 ตวร การตตง้ันี ค่ลาหน้าช กระดาษ Google Docs ทนเ่ึ มนผ File → Page Setup ไมมล่ ใน ห้เช ลือส กแบบ Custum Size หรอืส แบบทึน่เรากาส หนดขนาดเองได้ช มนแตแ่ล บบสาส เรจก็ รผปให้ชเลืสอก เช่ลน A4, A5 เปปน็ ตช้น หากต้ชองการตน้ีงัต คลา่ หนชา้ กระดาษแบบ Custom Size เราต้ชองเขนยน Script โดยใช้ช Method ตาล่ งๆ เชล่น setMarginLeft หรสือ setPageHeight ในการกสาหนดขนาดและระยะตาล่ งๆของหน้ชากระดาษ ตวัต อยา่ล ง function CustomPageSize(){ var body = DocumentApp.getActiveDocument().getBody() ; body.setMarginLeft(14.1732) // ตลัขงึ้ ระยะเวช้นขอบดช้านซา้ช ย 0.5 ซม .setMarginRight(14.1732) // ตึง้ขัล ระยะเว้ชนขอบดา้ช นขวา 0.5 ซม .setMarginTop(14.1732) // ตง้ึขัล ระยะเว้นช ขอบดช้านบน 0.5 ซม .setMarginBottom(14.1732) // ต้งลัึข ระยะเวนช้ ขอบดช้านลา่ม ง 0.5 ซม .setPageWidth(283.465) // ตึลัข้งความกวา้ช งของหน้ชากระดาษ 10 ซม. .setPageHeight(400.899887517858) ; // ตัลง้ึข ความกวชา้ งของหน้ชากระดาษ 14.143 ซม. } 2.5.จ.) getParent() getParent() - Method ในคลาส Body https://developers.google.com/apps-script/reference/document/body#getParent() ใชช้จัตบ Element ทึ่นเปน็ป วตัตถชุบรรจุชภตัณฑร์ เช่ลน Body เปปน็ วัตตถุชบรรจุชภัตณฑ์รของ Paragraph, ListItem และ Table เปนป็ ตชน้ โดยจะคืสนคาล่ กลตบั มาเปนป็ คลาส ContainerElement (วตัล ถบุค รรจคุภณัล ฑ)์ล คลาส ContainerElement https://developers.google.com/apps-script/reference/document/container-element.html ตวตั อยา่ล ง function parent() { var body = DocumentApp.getActiveDocument().getBody() ; var para = body.getParagraphs()[0] ; var table = body.getTables()[0] ; var cell = table.getCell(0, 0) ; Logger.log(body.getParent()) ; // พมดิ พล์ : DocumentElement Logger.log(para.getParent()) ; // พมดิ พ์ล : DocumentBodySection Logger.log(table.getParent()) ; // พมดิ พ์ล : DocumentBodySection Logger.log(cell.getParent()) ; // พมดิ พ์ล : TableRow Logger.log(cell.getParent().getParent()) ; // พมิด พล์ : Table } // Close – function 26 Google Apps Script เซอร์วพ ิพส Doucument

2.5.ฉ.) getAttributes() คลาส Body getAttributes() - Method ในคลาส Body และหลายคลาส https://developers.google.com/apps-script/reference/document/body#getAttributes() ใช้จช บัต คณชุ ลตักษณะ(Attributes) ของ Element (ในทนน่ึ นีก้ กค็ อสื Body) โดยจะคสืนค่ลากลตับมาเป็นป Object[] หรือส วตร ถุบทเีท่ ก็กบ Enum Attribute ไวช้ ดยเพีมิทด่ เตมิด ขอช้ 2.6 Enum Attribute หนาช้ 28 ตวตั อยา่ล ง function getAttsBody() { var body = DocumentApp.getActiveDocument().getBody(); var attsBody = body.getAttributes(); for(var att in attsBody){ Logger.log(att + \" : \" + attsBody[att]) ; } } // Close – function ผล Logs [ 01 ] FONT_SIZE : null [ 02 ] ITALIC : null [ 03 ] PAGE_WIDTH : 283.465 [ 04 ] LINK_URL : null [ 05 ] UNDERLINE : null [ 06 ] BACKGROUND_COLOR : null [ 07 ] MARGIN_BOTTOM : 14.1732 [ 08 ] PAGE_HEIGHT : 400.899887517858 [ 09 ] MARGIN_RIGHT : 14.1732 [ 10 ] STRIKETHROUGH : null [ 11 ] MARGIN_LEFT : 14.1732 [ 12 ] FOREGROUND_COLOR : null [ 13 ] BOLD : null [ 14 ] FONT_FAMILY : Sarabun [ 15 ] MARGIN_TOP : 14.1732 2.5.ช.) getAttributes() คลาส Paragraph getAttributes ใช้ชบ่ลอยและเป็ปน Method ในหลายคลาส ฉะน้ตันีนจนงขออธิธบาย getAttributes ในคลาส Paragraph เพนิึ่มธ เตมธิ getAttributes() - Method ในคลาส Paragraph และหลายคลาส https://developers.google.com/apps-script/reference/document/paragraph#getAttributes() เรียร บเรรยี งโดย วสลันต์ล คุคณดิดลกเศวต ([email protected]) 27

ใชจ้ช ับต คุชณลตกั ษณะ(Attributes) ของ Element (ในท่นนึ กน้ี คก็ ือส Paragraph) โดยจะคสนื คาล่ กลบตั มาเปน็ป Object[] หรือส วตร ถุทบ ่ีทเกก็บ Enum Attribute ไวช้ ( ดยเพทิดมี่ เติดมขอช้ 2.6 Enum Attribute หนา้ช 28 ) ตวตั อยา่ล ง function getAttsPara() { var body = DocumentApp.getActiveDocument().getBody() ; // แนบทช้ายดว้ช ยยอ่ม หน้ชาตอม่ ไปนขีึร้ var par = body.appendParagraph('A bold, italicized paragraph.') ; par.setBold(true) ; par.setItalic(true) ; // จบัล Attributes ของย่อม หนช้า var atts = par.getAttributes() ; for (var att in atts) { Logger.log(att + \" : \" + atts[att]) ; } } // Close – function ผล Logs [ 01 ] FONT_SIZE : 8 [ 02 ] ITALIC : true [ 03 ] HORIZONTAL_ALIGNMENT : Left [ 04 ] INDENT_END : 0 [ 05 ] INDENT_START : 0 [ 06 ] LINE_SPACING : 1.15 [ 07 ] LINK_URL : null [ 08 ] UNDERLINE : null [ 09 ] BACKGROUND_COLOR : null [ 10 ] INDENT_FIRST_LINE : 0 [ 11 ] LEFT_TO_RIGHT : true [ 12 ] SPACING_BEFORE : 0 [ 13 ] HEADING : Normal [ 14 ] SPACING_AFTER : 0 [ 15 ] STRIKETHROUGH : null [ 16 ] FOREGROUND_COLOR : null [ 17 ] BOLD : true [ 18 ] FONT_FAMILY : Sarabun 2.6. Enum Attribute https://developers.google.com/apps-script/reference/document/attribute Enum Attribute เป็ปนการแจกแจง(Enumeration) คุชณลตักษณะตล่างๆขององค์รประกอบหรสือวัตตถชุ หรสือ อธธิบายอนกอย่ลางวล่า เปป็นคุชณสมบัตติธของวตัตถชุท่นึถผกกสาหนดไว้ชแลช้ว วล่าเราสามารถเขช้าไปตีต้ันงค่ลาอะไรไดช้บ้ชาง เช่ลน คณชุ สมบัตตธิ BOLD กกค็ สอื คุบณสมบตร พิตรวหนาของอกร ษร เปน็ป ต้นช 28 Google Apps Script เซอรว์พ สพิ Doucument

เราสามารถเรนยกใชช้ Enum Attribute ไดช้จาก DocumentApp.Attribute.[Property] โดย Properties มน ดงัต ต่ลอไปนน้ี Property Type Description BACKGROUND_COLOR Enum The background color of an element (Paragraph, Table, etc) or document. BOLD Enum The font weight setting, for rich text. BORDER_COLOR Enum The border color, for table elements. BORDER_WIDTH Enum The border width in points, for table elements. CODE Enum The code contents, for equation elements. FONT_FAMILY Enum The font family setting, for rich text. FONT_SIZE Enum The font size setting in points, for rich text. FOREGROUND_COLOR Enum The foreground color setting, for rich text. HEADING Enum The heading type, for paragraph elements (for example, DocumentApp.). HEIGHT Enum The height setting, for image elements. HORIZONTAL_ALIGNMENT Enum The horizontal alignment, for paragraph elements (for example, DocumentApp.). INDENT_END Enum The end indentation setting in points, for paragraph elements. INDENT_FIRST_LINE Enum The first line indentation setting in points, for paragraph elements. INDENT_START Enum The start indentation setting in points, for paragraph elements. ITALIC Enum The font style setting, for rich text. GLYPH_TYPE Enum The glyph type, for list item elements. LEFT_TO_RIGHT Enum The text direction setting, for rich text. LINE_SPACING Enum The line spacing setting as a multiplier, for paragraph elements. LINK_URL Enum The link URL, for rich text. The default link style (foreground color, underline) is automatically applied. LIST_ID Enum The ID of the encompassing list, for list item elements. MARGIN_BOTTOM Enum The bottom margin setting in points, for paragraph elements. MARGIN_LEFT Enum The left margin setting in points, for paragraph elements. MARGIN_RIGHT Enum The right margin setting in points, for paragraph elements. MARGIN_TOP Enum The top margin setting in points, for paragraph elements. NESTING_LEVEL Enum The item nesting level, for list item elements. MINIMUM_HEIGHT Enum The minimum height setting in points, for table row elements. PADDING_BOTTOM Enum The bottom padding setting in points, for table cell elements. PADDING_LEFT Enum The left padding setting in points, for table cell elements. PADDING_RIGHT Enum The right padding setting in points, for table cell elements. PADDING_TOP Enum The top padding setting in points, for table cell elements. PAGE_HEIGHT Enum The page height setting in points, for documents. PAGE_WIDTH Enum The page width setting in points, for documents. SPACING_AFTER Enum The bottom spacing setting in points, for paragraph elements. SPACING_BEFORE Enum The top spacing setting in points, for paragraph elements. STRIKETHROUGH Enum The strike-through setting, for rich text. UNDERLINE Enum The underline setting, for rich text. VERTICAL_ALIGNMENT Enum The vertical alignment setting, for table cell elements. WIDTH Enum The width setting, for table cell and image elements. ตวัต อยาล่ ง https://developers.google.com/apps-script/reference/document/attribute โค้ชดตล่อไปน้ีน เม่ืสอนึ รตนั จะพิธมพข์ร อช้ ความ Hello ไว้ชทจน่ึ ดชุ แรกของเอกสาร Google Docs เรยรี บเรยรี งโดย วสันล ต์ล คุณค ดลิด กเศวต ([email protected]) 29

// Define a style with yellow background. var highlightStyle = {} ; highlightStyle[DocumentApp.Attribute.BACKGROUND_COLOR] = '#FFFF00' highlightStyle[DocumentApp.Attribute.BOLD] = true ; // Insert \"Hello\", highlighted. DocumentApp.getActiveDocument().editAsText() .insertText(0, 'Hello\\n') .setAttributes(0, 4, highlightStyle); ผล 2.7. setAttributes() คลาส Paragraph setAttributes(attributes) – Method ในคลาส Paragraph และหลายคลาส https://developers.google.com/apps-script/reference/document/paragraph#setattributesattributes ใชกช้ าส หนด Attributes ใหก้ช ับต Element ในทนึ่นนี้กค็ก อืส Paragraph โดยจะคืนส คล่ากลบตั มาเป็นป ยอ่ล หน้าช ตวัต ทจน่ึ บัต มา เพนยงแตล่ Attributes เปลนึ่ยนไป พารามธิเตอรร์ attributes เปป็น Object[] หรืสอ เป็ปนตวตั แปรวตัตถชุท่ึน Properties ตา่ล งๆตาม Enum Attribute ตวัต อยา่ล ง function setAttsPara(){ var body = DocumentApp.getActiveDocument().getBody(); // เตรียร มตวลั แปร Object วม่างๆรอไวช้ var style = {} ; // ปอ้ป น Item ทีเ่ทร ปน็ป Propertiy : Value ให้ชกบลั ตลัวแปร Object ที่เรท ตรรยี มไวช้ style[DocumentApp.Attribute.HORIZONTAL_ALIGNMENT] = DocumentApp.HorizontalAlignment.RIGHT ; style[DocumentApp.Attribute.FONT_FAMILY] = 'Sarabun' ; style[DocumentApp.Attribute.FONT_SIZE] = 12 ; style[DocumentApp.Attribute.BOLD] = false ; style[DocumentApp.Attribute.FOREGROUND_COLOR] = '#0000FF' ; // แนบทาช้ ยดวช้ ยยอ่ม หน้ชา para ลงใน Body ของเอกสาร var par = body.appendParagraph('A paragraph with custom style.'); // กาต หนด Attributes ใหก้ช บัล ยอม่ หนาช้ para body.setAttributes(style) ; } 30 Google Apps Script เซอร์พวสพิ Doucument

ผลหลังต รตันโค้ดช เรรียบเรียร งโดย วสันล ตล์ คุณค ดิลด กเศวต ([email protected]) 31

32 Google Apps Script เซอรพ์วิสพ Doucument

บททีท่ 3 Heading

3.1. setHeading() คลาส Paragraph https://developers.google.com/apps-script/reference/document/paragraph setHeading(heading) – Method ในคลาส Paragraph https://developers.google.com/apps-script/reference/document/paragraph#setheadingheading กาส หนดสไตลร์ยล่อหนช้ามาตรฐานให้ชกัตบยล่อหน้ชา โดยจะคืสนคล่ากลัตบมาเป็ปนย่ลอหน้ชาปัปจจุชบัตน พารามธิเตอร์ร heading ดไผ ดจช้ าก Enum ParagraphHeading (ดยเพมทด่ิี เตมิด ขอ้ช 3.2 Enum ParagraphHeading หนช้า 35) getHeading() – Method ในคลาส Paragraph https://developers.google.com/apps-script/reference/document/paragraph#getheading ใชจ้ช ัตบไสตลย์ร ล่อหนา้ช มาตรฐานของย่อล หนช้า โดยคสืนคล่ากลบัต มาเปป็น Property ใน Enum ParagraphHeading (ดเย พิมที่ด เตมดิ ข้อช 3.2 Enum ParagraphHeading หนาช้ 35) ตวตั อยา่ล ง function example() { var body = DocumentApp.getActiveDocument().getBody() ; body.clear() ; // แนบทา้ช ยด้ชวยยอ่ม หนา้ช + กตาหนดสไตลล์ย่มอหนา้ช เปป็น Heading 1 var par1 = body.appendParagraph(\"Title\") ; par1.setHeading(DocumentApp.ParagraphHeading.HEADING1) ; // แนบทา้ช ยดช้วยยอม่ หน้ชา + กาต หนดสไตลยล์ มอ่ หนช้าเปป็น Heading 2 var par2 = body.appendParagraph(\"SubTitle\") ; par2.setHeading(DocumentApp.ParagraphHeading.HEADING2) ; // แนบทา้ช ยด้วช ยยอม่ หนา้ช + กาต หนดสไตลลย์ อ่ม หนา้ช เปนป็ Nornal text var par3 = body.appendParagraph(\"Text\") ; par3.setHeading(DocumentApp.ParagraphHeading.NORMAL) ; } ผลหลตงั รันต โคดช้ 34 Google Apps Script เซอรวพ์ ิสพ Doucument

3.2. Enum ParagraphHeading Enum ParagraphHeading https://developers.google.com/apps-script/reference/document/paragraph-heading แจงแจงคชุณสมบตตั ิธสไตลย์ร ่ลอหนาช้ มาตรฐาน การเรนยกใชง้ช าน เช่นล DocumentApp.ParagraphHeading.Property Property Type Description NORMAL Enum The heading option for normal text. HEADING1 Enum The highest heading option. HEADING2 Enum The second heading option. HEADING3 Enum The third heading option HEADING4 Enum The fourth heading option. HEADING5 Enum The fifth heading option. HEADING6 Enum The lowest heading option. TITLE Enum The title heading option. SUBTITLE Enum The subtitle heading option. 3.3. setHeadingAttributes() setHeadingAttributes(paragraphHeading, attributes) – Method ในคลาส Body https://developers.google.com/apps-script/reference/document/body#setHeadingAttributes(ParagraphHeading,Object) ใช้ชกสาหนด Attributes ใหก้ช ัตบสไตลร์ยอล่ หน้ชามาตรฐาน โดยจะคืสนคา่ล กลตบั มาเป็ปนคลาส Body ตวตั เดมธิ พารามิธเตอรร์ – Method ในคลาส Body Name Type Description paragraphHeading ParagraphHeading the heading whose attributes will be set attributes ดมขู อ้ข 3.2 Enum ParagraphHeading หน้ขา 35 Object a map of attributes and the values to set them to ดมขู อ้ข 2.6 Enum Attribute หนา้ข 28 getHeadingAttributes(paragraphHeading) https://developers.google.com/apps-script/reference/document/body#getheadingattributesparagraphheading ใช้ชจตับ Attributes ของสไตลร์ย่ลอหนช้ามาตรฐาน โดยคสืนค่ลากลตับมาเปป็น Object ทน่ึมนสามาชิธกเป็ปน Enum Attributes และ คา่ล ตา่ล งๆ พารามิเธ ตอรร์ paragraphHeading ก็คก ือส Enum paragraphHeading การใชง้ข านเชต่น body.getHeadingAttributes(DocumentApp.ParagraphHeading.HEADING1) เรรียบเรียร งโดย วสัลนต์ล คคณุ ดิลด กเศวต ([email protected]) 35

ผลลพตั ธ์ถร ้ชา Log ดเผ ช่นล Logs [ 01 ] {FONT_SIZE=24, ITALIC=false, HORIZONTAL_ALIGNMENT=Left, INDENT_END=0.0, INDENT_START=0.0, LINE_SPACING=1.15, UNDERLINE=false, BACKGROUND_COLOR=#ffff00, INDENT_FIRST_LINE=0.0, SPACING_BEFORE=20.0, SPACING_AFTER=6.0, STRIKETHROUGH=false, FOREGROUND_COLOR=#00ff00, BOLD=false, FONT_FAMILY=Sarabun, VERTICAL_ALIGNMENT=Center} ตวตั อยา่ล ง function HeadingAttributes() { var myHeading1 = {} ; myHeading1[DocumentApp.Attribute.FONT_SIZE] = 24 ; myHeading1[DocumentApp.Attribute.FONT_FAMILY] = \"Sarabun\" ; var myHeading2 = {} ; myHeading2[DocumentApp.Attribute.FONT_SIZE] = 16 ; myHeading2[DocumentApp.Attribute.FONT_FAMILY] = \"Sarabun\" ; myHeading2[DocumentApp.Attribute.FOREGROUND_COLOR] = \"#555555\" ; var myNormal = {} ; myNormal[DocumentApp.Attribute.FONT_SIZE] = 12 ; myNormal[DocumentApp.Attribute.FONT_FAMILY] = \"Sarabun\" ; myNormal[DocumentApp.Attribute.FOREGROUND_COLOR] = \"#505050\" ; myNormal[DocumentApp.Attribute.SPACING_BEFORE] = 5 ; myNormal[DocumentApp.Attribute.SPACING_AFTER] = 0 ; var body = DocumentApp.getActiveDocument().getBody() ; body.setHeadingAttributes(DocumentApp.ParagraphHeading.HEADING1, myHeading1) .setHeadingAttributes(DocumentApp.ParagraphHeading.HEADING2, myHeading2) .setHeadingAttributes(DocumentApp.ParagraphHeading.NORMAL, myNormal) ; } 36 Google Apps Script เซอรว์พ สิพ Doucument

บททที่ 4 Elements

4.1. Elements Elements คอน อะไร ? เอกสาร Google Docs ประกอบไปด้ชวย Elements(วตร ถบุธาต)ุบ ตาล่ งๆมากมาย เช่นล ListItem, Paragraph และ Table เป็ปนตนช้ ซึน่งทุชกตตัวกค็ก ือส Elements ภายในเอกสาร Elements ลกกู หรอน Child elements เม่สนึือเราจตับไปทน่ึ Element สตักตัตวหนนึ่งในเอกสาร Element ตัวต นตั้ีนนจะมน Elements ย่ลอยๆขช้างในอนก เชล่น เมืสนึ่อจตับทึ่น Body ลผกๆของ Body กก็คืสอ Paragraph, ListITem, Table, TableOdContents เปป็นต้ชน ซ่ึนงเราเรนยกว่ลา Elements ย่อล ยๆขา้ช งในนวนี้ าล่ Elements ลกมู หรือส Child elements 4.2. Interface Element Interface Element – Interface ของเซอร์วล ิสด Document https://developers.google.com/apps-script/reference/document/element Elements ตาล่ งๆมน Methods กลลมชุ่ หนนงึ่ ทน่ึซาส้ีน กตัน ซงนึ่ เราสามารถจับต มามตดั รวมกนตั (Inherit หรือส สบืส ทอดส่งนิธึ ทึ่นซ้ีนสากันต ออกมา) กลายเปนป็ Interface Element หรืสอ เป็ปนกลต่มุบ Methods Methods ใน Interface Element ยกตวตั อยาล่ งเช่ลน getAttributes(), Method ตระกผล as เชนล่ asParagraph() เปนป็ ต้นช หมายเหตุบ 1 : มสน ิึ่ธนงทึน่คลชา้ ยกตันกค็ก ืสอ คลาส Element(ตามลิธงคด์ร ้ชานลา่ล ง) แตล่เปนป็ วัตตถุชหรอสื คลาสในเซอร์รวธิส XML เซอรพว์ ิพส XML https://developers.google.com/apps-script/reference/xml-service เปน็ป บริกธ ารทนึใ่ ชช้ วิเธ คราะหร์ สาส รวจ และโปรแกรม ในการสราช้ งเอกสาร XML คลาส Element (ในเซอรว์ล ิสด XML) https://developers.google.com/apps-script/reference/xml-service/element เปน็ป XML ของ Element node หมายเหตุบ 2 : ภาษา XML มโน ครงสรา้ช งเหมืสอนกบัต HTML มนแทก็กเปดปิ แทกก็ ปดปิ แตล่ XML เราสามารถ สรา้ช งแท็กก และกสาหนดโครงสร้ชางของข้อช มลผ ไดเช้ อง ตา่ล งจาก HTML ทนึแ่ ท็กกถกผ กหนดตายตัตว ตวตั อยาล่ ง XML Tutorial https://www.w3schools.com/xml/ <?xml version=\"1.0\" encoding=\"UTF-8\"?> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note> แตล่ล ะแทก็ก ทึเน่ ราสร้ชางเรนยกวล่า โหนด(node) เชน่ล โหนด Note เปน็ป ตน้ช 38 Google Apps Script เซอรพว์ พิส Doucument

ยกตัธวอย่สาง การดกชู นิวดของ Elements ใน Body องคป์ร ระกอบในสว่ล น Body ในเอกสาร Google Docs มตน ามภาพ โคช้ดต่ลอไปนีน้ จบตั Elements ใน Body ของเอกสาร Log ดวผ า่ล มชน นดธิ เปปน็ อะไรบา้ช ง function testElem() { var body = DocumentApp.getActiveDocument().getBody(); var elemInBody = body.getNumChildren(); for(var x = 0 ; x < elemInBody ; x++){ // วนหลปย Log ชนดิด Elements ทรท่จี บัล มา Logger.log(body.getChild(x).getType()) ; }; } ผล [ 01 ] PARAGRAPH // ยอ่ม หนช้าวมา่ ง [ 02 ] PARAGRAPH [ 03 ] TABLE [ 04 ] LIST_ITEM [ 05 ] LIST_ITEM [ 06 ] LIST_ITEM [ 07 ] PARAGRAPH 4.3. getNumChildren() getNumChildren() - Method ในคลาส ContainerElement https://developers.google.com/apps-script/reference/document/container-element#getnumchildren ใช้จช ตับจสานวนของ Elements ลมกู โดยจะคสนื คาล่ กลตับมาเป็ปนเลขจสานวนเต็มก คลาส ContainerElement https://developers.google.com/apps-script/reference/document/container-element Element ทนึเ่ ปปน็ ตวตั เกก็บ Elements อึ่สนืนๆ (เรยน กวาล่ Element บรรจุภช ณัต ฑกร์ กไ็ ด)้ช เรีรยบเรียร งโดย วสนลั ตล์ คณุค ดลิด กเศวต ([email protected]) 39

ตวธั อย่สาง ให้ใช ส่อล ะไรลงไปในเอกสาร Google Docs บา้ช งจากน้นีตัน จนงรตันโคด้ช ต่ลอไปนี้น var body = DocumentApp.getActiveDocument().getBody(); var elemInBody = body.getNumChildren(); // ถ้ชา Log ดจย ะได้ผช ลลัลพธลเ์ ข่นม 7 (เปน็ป จาต นวนของ Elements) เปนป็ ตน้ช 4.4. จับจ และดกูชนิวดของ Elements (คลาส Body) getChild() เปน็ป Method ในหลายคลาส หลกัต ๆกค็ก ือส ใช้ชจตบั Child elements เชล่น getChild(name) – Method ในคลาส Element https://developers.google.com/apps-script/reference/xml-service/element#getchildname getChild(name, namespace) – Method ในคลาส Element https://developers.google.com/apps-script/reference/xml-service/element#getchildname,-namespace getChild(childIndex) – Method ในคลาส Paragraph https://developers.google.com/apps-script/reference/document/paragraph#getchildchildindex getChild(childIndex) – Method ในคลาส Body *** https://developers.google.com/apps-script/reference/document/body#getchildchildindex ใชช้จตับ Child elements ใน Body โดยคสืนค่ลากลตับมาเป็ปน คลาส Element พารามธิเตอรร์ childIndex เปน็ป เลขดรรชลน าส ดตับ (เรธ่มึนิ จาก 0 getType() – Method ในคลาส Body https://developers.google.com/apps-script/reference/document/body#gettype ใชชจ้ ับล ชนิดด ของ Elements โดยจะคคนื คาม่ กลลับมาเปนป็ Enum ElementType ตวตั อยาล่ ง function getChildElems() { var body = DocumentApp.getActiveDocument().getBody() ; // จบัล ไปท่รีท Child element ตัลวแรกใน Body var firstChild = body.getChild(0) ; // ถชา้ Element เปน็ป ย่มอหนช้า(PARAGRAPH) ให้ใช สข่ม ชอ้ ความ … ลงไปแทน if (firstChild.getType() == DocumentApp.ElementType.PARAGRAPH) { firstChild.asParagraph().setText(\"This is the first paragraph.\") ; } } ผล หลงร รนร กอ่ต นรนร 40 Google Apps Script เซอร์พวิพส Doucument

4.5. Enum ElementType Enum ElementType https://developers.google.com/apps-script/reference/document/element-type เป็นป ตัวต แจกแจงชนดิธ ของ Elements การใชง้ช านกค็ก สอื DocumentApp.ElementType.(Property) Property Type Description BODY_SECTION Enum The type corresponding to the Body element. COMMENT_SECTION Enum The type corresponding to the CommentSection element. DOCUMENT Enum The type that corresponds to the root of the document. EQUATION Enum The type corresponding to the Equation element. EQUATION_FUNCTION Enum The type corresponding to the EquationFunction element. EQUATION_FUNCTION_ Enum The type corresponding to the element. ARGUMENT_SEPARATOR EquationFunctionArgumentSeparator EQUATION_SYMBOL Enum The type corresponding to the EquationSymbol element. FOOTER_SECTION Enum The type corresponding to the FooterSection element. FOOTNOTE Enum The type corresponding to the Footnoteelement. FOOTNOTE_SECTION Enum The type corresponding to the FootnoteSection element. HEADER_SECTION Enum The type corresponding to the HeaderSection element. HORIZONTAL_RULE Enum The type corresponding to the HorizontalRule element. INLINE_DRAWING Enum The type corresponding to the InlineDrawing element. INLINE_IMAGE Enum The type corresponding to the InlineImage element. LIST_ITEM Enum The type corresponding to the ListItem element. PAGE_BREAK Enum The type corresponding to the PageBreak element. PARAGRAPH Enum The type corresponding to the Paragraph element. TABLE Enum The type corresponding to the Table element. TABLE_CELL Enum The type corresponding to the TableCell element. TABLE_OF_CONTENTS Enum The type corresponding to the TableOfContents element. TABLE_ROW Enum The type corresponding to the TableRow element. TEXT Enum The type corresponding to the Text element. UNSUPPORTED Enum The type corresponding to UnsupportedElement. Unsupported elements represent document portions that do not support scripting. เรยีร บเรีรยงโดย วสลันตล์ คคณุ ดลิด กเศวต ([email protected]) 41

4.6. ระบุชบ นวดิ ELement ด้รวย Method ตระกูกล As เม่ึสืนอจัตบ Child elements แลช้ว หากจะเขช้าไปทสาอะไรตล่อ เราต้ชองระบุช Element ตัตวน้ีนัตนตามชนิธดด้ชวย Method ตระกผล as เช่ลน asParagraph(), asTable() หรืสอ asListItem() เป็ปนตช้น จากน้ีัตนนเราจะสามารถใชช้ Method ทตึ่น รงกบัต ชนธิดของ Element เพ่ึสือน ทสาอะไรตอล่ กว็ก ่ลาไป asParagraph() - Method ใน Interface Element https://developers.google.com/apps-script/reference/document/element#asparagraph คืนส คาล่ Element ทจน่ึ บัต มาได้เช ปน็ป Paragraph เชนล่ function getChildElems() { var body = DocumentApp.getActiveDocument().getBody() ; var childsCount = body.getNumChildren() ; for(var x = 0 ; x < childsCount ; x++) { // วนหลปย จบลั ทรลี ะ Element ไปใส่ม if/else var child = body.getChild(x).copy() ; // ถาข้ เป็ปนย่อต หนข้า + ยอ่ต หน้ขาไมต่วต่าง if ( child.getType() == DocumentApp.ElementType.PARAGRAPH && child.asParagraph().getText() != \"\") { var para = child.asParagraph() ; // ระบบุ Element เปนป็ Paragraph body.appendParagraph(para).appendText('(ตรวก๊กอปปป)') ; // ถข้าเปน็ป ตาราง } else if ( child.getType() == DocumentApp.ElementType.TABLE) { var table = child.asTable() ; // ระบบุ Element เปปน็ Table var rowAdd = table.getRow(0).copy() ; // กอก็ ปป้ีปแถวแรก body.appendTable(table).appendTableRow(rowAdd) ; // แนบแถวแรกทีรทก่ กอ๊ ปปปี้ } // Close – else if } // Close – for } // Close - function ผล หลรง กอต่ น 42 Google Apps Script เซอรพ์วสพิ Doucument

ผลหลตังรนัต Logs [ 01 ] PARAGRAPH [ 02 ] TABLE [ 03 ] LIST_ITEM [ 04 ] LIST_ITEM [ 05 ] LIST_ITEM [ 06 ] PARAGRAPH หมายเหตบุ ดรผ ายละเอนยดเพิ่นมธึ เตมธิ ไดจ้ช ากลธิงคตร์ ลอ่ ไปนีน้ getChild – Method ในคลาส ContainerElement/Element https://developers.google.com/apps-script/reference/document/container-element#getchildchildindex https://developers.google.com/apps-script/reference/xml-service/element#getchildname ใช้ชจบัต Element ตามดรรชนนลสาดบัต เชน่ล getChild(0) เปปน็ ต้ชน คสนื ค่ลากลัตบมาเปน็ป Element getNumChildren() – Method ในคลาส ContainerElement https://developers.google.com/apps-script/reference/document/container-element#getnumchildren ใช้จช ตบั จาส นวน Elements คนสื คาล่ กลัตบมาเป็นป เลขจาส นวนเตม็ก 4.7. findElement() findElement(elementType, from) – Mehod ในหลายคลาส Body และอีรกหลายคลาส https://developers.google.com/apps-script/reference/document/list-item.html#findelementelementtype,-from ใชชค้ น้ช หาเนสืน้อี หาใน Element แบบเจาะจงชนธิด โดยจะคืสนค่าล กลตบั มาเปป็นคลาส RangeElement พารามิธเตอรร์ Name Type Description elementType ElementType the type of element to search for from RangeElement the search result to search from เรยีร บเรรยี งโดย วสลนั ตล์ คุคณดลิด กเศวต ([email protected]) 43

ตวัต อยาล่ ง function example() { var body = DocumentApp.getActiveDocument().getBody() ; // สรา้ช งตัวล แปร var searchType = DocumentApp.ElementType.PARAGRAPH ; var searchHeading = DocumentApp.ParagraphHeading.HEADING1 ; var searchResult = null ; // Search until the paragraph is found. while (searchResult = body.findElement(searchType, searchResult)) { var par = searchResult.getElement().asParagraph() ; if (par.getHeading() == searchHeading) { // Found one, update and stop. par.setText('This is the first header.'); return ; } } } ผล - หลัตงรตันโคช้ดย่ลอหน้ชาแรกท่ึนใช้ชสไตล์รยล่อหนช้า Heading1 ข้ชอความจะถผกเปลึ่นยนเปป็น This is the first header 44 Google Apps Script เซอรพ์วพสิ Doucument

บททที่ 5 เคอรเ์ร ซอร์ร

5.1. getCursor() getCursor()– Method ในคลาส Document https://developers.google.com/apps-script/reference/document/document#getcursor ใช้ชจัตบเคอร์รเซอรใร์ นเอกสารทน่กึ าส ลตังทสางานดว้ช ย โดยจัตบได้ชเฉพาะของยผสเซอรร์ทน่ึรัตนสครธิปตร์ และเป็ปนสครธิปต์ร ฝัปงในไฟล์ร (ถผกหลอ่ หชุ้ม หรสือ bound ← คลดิกเพอ่คทีื ดยรายละเอรียด) โดยจะจะคืสนคล่ากลัตบมาเป็ปนคลาส Position แตล่ถช้า จตับไมล่ไดจ้ช ตคั สืนคา่ล กลบตั มาเปปน็ null คลาส Position https://developers.google.com/apps-script/reference/document/position.html ตาส แหน่ลงอา้ช งองธิ ในเอกสาร Google Docs เปป็นแบบอ้าช งอธิงจาก Element ตวัธ อยา่ส ง : แทรกขร้อความ ณ ตตาแหน่งส เคอร์รเซอร์ร โคด้ช ต่ลอไปนี้น รัตนจากโปรเจ็กค Google Apps Script จะคาช้ ง วธิธ รน ตันตช้องสรา้ช งเมนผ แลช้วรันต จากเมนผ ทัตน้ีงนน้ีเพนืสึ่อ ท่ึนจะจตับตสาแหนล่งของเคอรร์เซอร์รไดช้ ถช้ารตันจาก Google Apps Script เคอร์รเซอร์รไม่ลแอ็กคทนฟทน่ึเอกสาร Google Docs กล่อนรตัน ให้รคลวิกแทรกในย่สอหน้ราหรนอขร้อความไวร้ จากนี้ัตนนจนงรัตนสคริธปตร์จากเมนผ แต่สถ้ราคลวิกเลนอกไว้รท่ขีอื ภาพ จะปรากฎหนช้าต่ลางมาแจช้งวล่า Cannot insert text here ก็กคสือ ไม่ลสามารถแทรกขช้อความไดช้ (เพราะไม่ลมน เคอรร์เซอร)ร์ function onOpen() { DocumentApp.getUi().createMenu('My Menu') .addItem('Insert someting at cursor' , 'insertAtCursor') .addToUi() ; } function insertAtCursor(){ // จบัล ตาต แหนมง่ ของเคอร์ลเซอรล์ ไดกช้ ลบัล มาเปปน็ คลาส Postion var cursor = DocumentApp.getActiveDocument().getCursor() ; // ถ้ชาจบลั เซอร์ไล ดช้ - แทรกขอช้ ความ ณ ตตาแหน่มงของเคอรล์เซอรล์ if (cursor) { // if/else #1 var element = cursor.insertText('ಠ‿ಠ') ; if (element) { // if/else #2 element.setBold(true); // ทตาตลัวหนา } else { DocumentApp.getUi().alert('Cannot insert text here.'); } // Close - if/else #2 // ถชา้ จบัล เคอร์ลเซอร์ลไมม่ได้ช - แสดงหน้าช ตา่ม งแจชง้ Error // Close - if/else #1 } else { DocumentApp.getUi().alert('Cannot find a cursor.'); } } 46 Google Apps Script เซอร์พวสพิ Doucument

5.2. setCursor(), newPosition() setCursor(position) – Method ในคลาส Document https://developers.google.com/apps-script/reference/document/document#setcursorposition ใชช้กสาหนดตสาแหนง่ล ของเคอรร์เซอร์ร ณ ตาส แหนง่ล ท่นรึ ะบุชใน postion (เป็ปน New postion) newPosition(element, offset) – Method ในคลาส Document https://developers.google.com/apps-script/reference/document/document#newpositionelement,-offset สรา้ช งวัตตถชุ Position ตวร ใหมต่ โดยอ้าช งอธิงจากจาก Element ในเอกสาร Name Type Description element Element Element ทจ่ีทร ะใช้บช รรจุควลัตถคุ Postion ตวร ใหมต่ ซข่งที สามารถเป็ปนได้ชท้ัึขงล Text offset Integer หรคือ Paragraph สสาหรบร Element ทเที่ ปปน็ Text เปนป็ ตวลั เลขจาต นวนตลวั อกัล ษรก่มอนตาต แหนม่ง สสาหรรบ Elements อนีรทื่ ๆ เปปน็ ตลัวเลขจาต นวน Child elements กอม่ น ตาต แหน่งม ภายในวัลตถบคุ รรจุคภัลณฑล์ตวลั เดยรี วกนัล ตวตั อยาล่ ง function setCurAtNewPos() { var doc = DocumentApp.getActiveDocument() ; var paragraph = doc.getBody().appendParagraph('My new paragraph.') ; // สร้าช งวัลตถคุ Postion ณ ตตาแหนงม่ หลงัล ตัลวอกลั ษรทท่รี 6 ของยอม่ หนา้ช var position = doc.newPosition(paragraph.getChild(0), 6) ; // กาต หนดตาต แหนง่ม ใหช้กบัล เคอร์เล ซอร์ล doc.setCursor(position) ; } ผล – มยน ล่อหนาช้ ตอ่ล ทาช้ ยเอกสาร โดยเคอรร์เซอรจร์ ะปรากฎอย่ลหผ ลังต ตวตั อตักษรทน่ึ 6 (หลงตั w) เรยีร บเรีรยงโดย วสลันต์ล คุณค ดิดลกเศวต ([email protected]) 47

48 Google Apps Script เซอรพ์วิสพ Doucument

บททที่ 6 Selection

6.1. getSelection(), getRangeElements(), getElement() getSelection() - Method ในคลาส Document https://developers.google.com/apps-script/reference/document/document#getselection จตับสึธิน่งทน่ึเลืสอกโดยยผสเซอรร์ ในเอกสารทนึ่แอ็กคทฟน อยลผ่ คสืนค่าล กลัตบมาเปป็นคลาส Range แตล่ถ้ชาไม่ลเลืสอกอะไรไวช้ จะคสนื คลา่ null คลาส Range https://developers.google.com/apps-script/reference/document/range.html เรนช้ จร์ของ Element ในเอกสาร โดยส่นิงธึ ทนึ่ยสผ เซอรเ์ร ลอืส กกก็คอสื Range getRangeElements() - Method ในคลาส Range https://developers.google.com/apps-script/reference/document/range.html#getrangeelements ใชช้จัตบ Elements ทนี้ัตงหมดใน Range (Element ท่นึถผกเลสือก) แม้ชจะเปป็นบางสล่วนของ Element ทนึ่ถผก เลสือก ยกตตัวอยาล่ งการเลืสอกบางส่ลวนของย่ลอหนช้า โดย Method นนี้ จะคืสนค่ลากลัตบมาเป็ปน RangeElement[] หรืรอ อารเยท์พ ี่ทบรรจไุบ ปด้ขวย คลาส RangeElement คลาส RangeElement https://developers.google.com/apps-script/reference/document/range-element.html ตวัต ห่อล Element ทถ่ึน กผ เลสือก ตงตันี้ แตลจ่ ดุช เร่มนธึิ และจบครอบ Element เชลน่ ถช้าเลือส ก 1 ตวัต อกัต ษรในย่อล หนช้า RangeElement กกค็ อืส ยอล่ หนช้าทังีต้น กอ้ช น getElement() - Method ในคลาส RangeElement https://developers.google.com/apps-script/reference/document/range-element#getelement ใชจช้ ตับ Element ในวตตั ถุช RangeElement isPartial() - Method ในคลาส RangeElement https://developers.google.com/apps-script/reference/document/range-element.html#ispartial ใชเช้ ช็คก วา่ล RangeElement ทน่เึ ลอืส ก ถกผ เลอืส กท้ัีตนงก้ชอน หรืสอบางสวล่ นของขอช้ ความ(Text element) โดยจะ คนสื คาล่ กลัตบมาเปน็ป Boolean จดชุ เร่ิมนึธ ตน้ช และจุดช จบของ RangeElement สามารถจตบั ไดชโ้ ดยใช้ช Method getStartOffset() และ getEndOffsetInclusive() ตามลสาดัตบ getStartOffset() - Method ในคลาส RangeElement https://developers.google.com/apps-script/reference/document/range-element.html#getStartOffset() ตสาแหน่ลงจุชดเรนธ่ิึมตช้นของ RangeElement (Text element) อธธิบายไว้ชขช้างบน Method นี้นคืสนคล่ากลัตบมา เปนป็ เลขจสานวนเต็มก ของตาส แหนล่ง และคนสื ค่ลากลตับมาเปน็ป -1 หากเปป็นอยาล่ งอนนึ่สื getEndOffsetInclusive() - Method ในคลาส RangeElement https://developers.google.com/apps-script/reference/document/range-element.html#getEndOffsetInclusive() ตสาแหนง่ล จุชดจบของ RangeElement (Text element) อธิธบายไวข้ช าช้ งบน Method นคนี้ สนื ค่าล กลตบั มาเปปน็ เลขจสานวนเตกม็ ของตสาแหนล่ง และคืสนค่าล กลตับมาเปน็ป -1 หากเป็ปนอยล่างอสืึ่นน 50 Google Apps Script เซอรว์พ ิสพ Doucument


Like this book? You can publish your book online for free in a few minutes!
Create your own flipbook