Google Apps Script ช่วยให้คุณสร้างและแก้ไข Google เอกสารแบบเป็นโปรแกรม รวมถึงปรับแต่งอินเทอร์เฟซผู้ใช้ด้วยเมนู กล่องโต้ตอบ และแถบด้านข้างใหม่
ข้อมูลพื้นฐาน
Apps Script สามารถโต้ตอบกับ Google เอกสารได้ 2 วิธีหลักๆ คือ สคริปต์ใดๆ สามารถสร้างหรือแก้ไขเอกสารได้หากผู้ใช้ของสคริปต์มีสิทธิ์ที่เหมาะสมสำหรับเอกสารนั้น นอกจากนี้ สคริปต์ยังเชื่อมโยงกับเอกสารได้ด้วย ซึ่งจะช่วยให้สคริปต์มีความสามารถพิเศษในการเปลี่ยนอินเทอร์เฟซผู้ใช้หรือตอบสนองเมื่อเปิดเอกสาร หากต้องการสร้างสคริปต์ที่เชื่อมโยงกับคอนเทนเนอร์จากภายใน Google เอกสาร ให้คลิกส่วนเสริม > Apps Script
ในทั้ง 2 กรณี คุณสามารถโต้ตอบกับเอกสารของ Google เอกสารผ่านบริการเอกสารของสคริปต์ Apps ได้ง่ายๆ ตามตัวอย่างต่อไปนี้
function createDoc() { var doc = DocumentApp.create('Sample Document'); var documentTab = doc.getTab('t.0').asDocumentTab(); var body = documentTab.getBody(); var rowsData = [['Plants', 'Animals'], ['Ficus', 'Goat'], ['Basil', 'Cat'], ['Moss', 'Frog']]; body.insertParagraph(0, doc.getName()) .setHeading(DocumentApp.ParagraphHeading.HEADING1); table = body.appendTable(rowsData); table.getRow(0).editAsText().setBold(true); }
สคริปต์ด้านบนจะสร้างเอกสารใหม่ใน Google ไดรฟ์ของผู้ใช้ จากนั้นดึงข้อมูลแท็บที่มีรหัส t.0
(แท็บแรกเริ่มต้น) แทรกย่อหน้าที่มีข้อความเดียวกับชื่อเอกสาร จัดรูปแบบย่อหน้านั้นเป็นส่วนหัว และเพิ่มตารางตามค่าในอาร์เรย์ 2 มิติ สคริปต์สามารถทําการเปลี่ยนแปลงเหล่านี้ในเอกสารที่มีอยู่ได้โดยแทนที่การเรียกใช้ DocumentApp.create()
ด้วย DocumentApp.openById()
หรือ openByUrl()
สําหรับสคริปต์ที่สร้างภายในเอกสาร (เชื่อมโยงกับคอนเทนเนอร์) ให้ใช้ DocumentApp.getActiveDocument()
และ Document.getActiveTab()
โครงสร้างของเอกสาร
จากมุมมองของ Apps Script เอกสาร Google เอกสารจะมีโครงสร้างคล้ายกับเอกสาร HTML กล่าวคือเอกสารประกอบด้วยออบเจ็กต์ Tab
อย่างน้อย 1 รายการ โดยแต่ละออบเจ็กต์จะมีองค์ประกอบ (เช่น Paragraph
หรือ Table
) ที่มักมีองค์ประกอบอื่นๆ สคริปต์ส่วนใหญ่ที่แก้ไขเอกสารใน Google เอกสารจะเริ่มต้นด้วยการเรียกใช้ getTab()
และ asDocumentTab()
ตามด้วย getBody()
เนื่องจาก Body
เป็นองค์ประกอบหลักที่มีองค์ประกอบอื่นๆ ทั้งหมดในแท็บ ยกเว้น HeaderSection
,
FooterSection
และFootnotes
อย่างไรก็ตาม ก็มีกฎเกี่ยวกับองค์ประกอบประเภทใดบ้างที่อาจมีองค์ประกอบประเภทอื่นๆ นอกจากนี้ บริการเอกสารใน Apps Script จะแทรกองค์ประกอบบางประเภทลงในองค์ประกอบอื่นๆ ได้เท่านั้น แผนผังด้านล่างแสดงองค์ประกอบ ที่มีองค์ประกอบบางประเภทได้
คุณแทรกองค์ประกอบที่แสดงเป็นตัวหนาได้ แต่จะต้องปรับเปลี่ยนองค์ประกอบที่ไม่ใช่ตัวหนาเท่านั้น
- เอกสาร
- แท็บ
- DocumentTab
- เนื้อความ
- HeaderSection
- ListItem
- HorizontalRule
- InlineDrawing
- InlineImage
- ข้อความ
- UnsupportedElement (หมายเลขหน้า ฯลฯ)
- ย่อหน้า
- HorizontalRule
- InlineDrawing
- InlineImage
- ข้อความ
- UnsupportedElement (หมายเลขหน้า ฯลฯ)
- ตาราง
- ListItem
- ส่วนท้าย
- ListItem
- HorizontalRule
- InlineDrawing
- InlineImage
- ข้อความ
- UnsupportedElement (หมายเลขหน้า ฯลฯ)
- ย่อหน้า
- HorizontalRule
- InlineDrawing
- InlineImage
- ข้อความ
- UnsupportedElement (หมายเลขหน้า ฯลฯ)
- ตาราง
- ListItem
- FootnoteSection
- DocumentTab
- แท็บ
การแทนที่ข้อความ
Apps Script มักใช้เพื่อแทนที่ข้อความใน Google เอกสาร สมมติว่าคุณมีสเปรดชีตที่มีข้อมูลลูกค้าเต็มไปหมด และต้องการสร้าง Google เอกสารที่ปรับเปลี่ยนในแบบของคุณสำหรับลูกค้าแต่ละราย (การดำเนินการประเภทนี้มักเรียกว่าการผสานอีเมล)
การแทนที่ข้อความทำได้หลายวิธี แต่วิธีที่ง่ายที่สุดคือวิธี replaceText()
ที่แสดงในตัวอย่างด้านล่าง replaceText
รองรับฟีเจอร์นิพจน์ทั่วไปส่วนใหญ่ของ JavaScript ฟังก์ชันแรกด้านล่างจะเพิ่มข้อความตัวยึดตําแหน่งหลายบรรทัดลงใน Google เอกสาร แต่ในชีวิตจริง คุณน่าจะพิมพ์ตัวยึดตําแหน่งลงในเอกสารด้วยตนเองมากกว่า ฟังก์ชันที่ 2 จะแทนที่ตัวยึดตําแหน่งด้วยพร็อพเพอร์ตี้ที่กําหนดไว้ในออบเจ็กต์ client
โปรดทราบว่าฟังก์ชันทั้ง 2 รายการนี้ใช้เมธอด getActiveDocument()
และ getActiveTab()
ซึ่งใช้ได้กับสคริปต์ที่สร้างภายในเอกสาร Google เอกสารเท่านั้น ส่วนในสคริปต์แบบสแตนด์อโลน ให้ใช้ DocumentApp.create()
, openById()
หรือ openByUrl()
ร่วมกับ Document.getTab()
แทน
เพิ่มตัวยึดตําแหน่ง
function createPlaceholders() { var body = DocumentApp.getActiveDocument().getActiveTab().asDocumentTab().getBody(); body.appendParagraph('{name}'); body.appendParagraph('{address}'); body.appendParagraph('{city} {state} {zip}'); }
แทนที่ตัวยึดตำแหน่ง
function searchAndReplace() { var body = DocumentApp.getActiveDocument().getActiveTab().asDocumentTab().getBody(); var client = { name: 'Joe Script-Guru', address: '100 Script Rd', city: 'Scriptville', state: 'GA', zip: 94043 }; body.replaceText('{name}', client.name); body.replaceText('{address}', client.address); body.replaceText('{city}', client.city); body.replaceText('{state}', client.state); body.replaceText('{zip}', client.zip); }
เมนูและอินเทอร์เฟซผู้ใช้ที่กําหนดเอง
คุณสามารถปรับแต่ง Google เอกสารได้ด้วยการเพิ่มเมนู กล่องโต้ตอบ และแถบด้านข้าง อย่างไรก็ตาม โปรดทราบว่าสคริปต์จะโต้ตอบกับ UI ของอินสแตนซ์ปัจจุบันของเอกสารที่เปิดอยู่ได้ก็ต่อเมื่อสคริปต์นั้นเชื่อมโยงกับเอกสารเท่านั้น
ดูวิธีเพิ่มเมนูที่กำหนดเองและกล่องโต้ตอบไปยัง Google เอกสาร หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับการสร้างอินเทอร์เฟซที่กำหนดเองสำหรับกล่องโต้ตอบหรือแถบด้านข้าง โปรดดูคำแนะนำเกี่ยวกับบริการ HTML หากคุณวางแผนที่จะเผยแพร่อินเทอร์เฟซที่กําหนดเองเป็นส่วนหนึ่งของส่วนเสริม ให้ทําตามคู่มือสไตล์เพื่อให้สอดคล้องกับสไตล์และเลย์เอาต์ของเครื่องมือแก้ไข Google เอกสาร
ส่วนเสริมสำหรับ Google เอกสาร
ส่วนเสริมจะทำงานภายใน Google เอกสารและสามารถติดตั้งได้จากร้านค้าส่วนเสริมของ Google เอกสาร หากพัฒนาสคริปต์สำหรับ Google เอกสารแล้วและต้องแชร์กับทุกคน Apps Script ให้คุณเผยแพร่สคริปต์เป็นส่วนเสริมเพื่อให้ผู้ใช้รายอื่นติดตั้งจากสโตร์ส่วนเสริมได้
ดูวิธีสร้างส่วนเสริมสำหรับ Google เอกสารได้ที่คู่มือเริ่มต้นใช้งานการสร้างส่วนเสริมของ Google เอกสาร
ทริกเกอร์
สคริปต์ที่เชื่อมโยงกับ Google เอกสารสามารถใช้ทริกเกอร์แบบง่ายเพื่อตอบสนองต่อonOpen
เหตุการณ์ของเอกสาร ซึ่งจะเกิดขึ้นทุกครั้งที่ผู้ใช้ที่มีสิทธิ์แก้ไขเอกสารเปิดเอกสารใน Google เอกสาร
หากต้องการตั้งค่าทริกเกอร์ ให้เขียนฟังก์ชันชื่อ onOpen()
ดูตัวอย่างทริกเกอร์นี้ได้ที่เมนูที่กำหนดเองใน Google Workspace
แม้ว่าทริกเกอร์แบบง่ายจะมีประโยชน์สำหรับการเพิ่มเมนู แต่จะใช้บริการ Apps Script ที่ต้องให้สิทธิ์ไม่ได้