Google Apps Script ช่วยให้คุณสร้างและแก้ไข Google เอกสารได้โดยอัตโนมัติ รวมถึงปรับแต่งอินเทอร์เฟซผู้ใช้ด้วยเมนู กล่องโต้ตอบ และ แถบด้านข้างใหม่ๆ
ข้อมูลเบื้องต้น
Apps Script สามารถโต้ตอบกับ Google เอกสารได้ 2 วิธีหลักๆ คือ สคริปต์ใดก็ได้สามารถ สร้างหรือแก้ไขเอกสารได้หากผู้ใช้สคริปต์มีสิทธิ์ที่เหมาะสมสำหรับ เอกสาร และสคริปต์ยังสามารถเชื่อมโยงกับเอกสารได้ด้วย ซึ่งจะทำให้ สคริปต์มีความสามารถพิเศษในการเปลี่ยนแปลงอินเทอร์เฟซผู้ใช้หรือตอบสนองเมื่อ เปิดเอกสาร หากต้องการสร้างสคริปต์ที่ผูกกับคอนเทนเนอร์จากภายใน Google เอกสาร ให้คลิกส่วนเสริม > Apps Script
ไม่ว่าจะเป็นกรณีใด คุณก็โต้ตอบกับเอกสารใน Google เอกสารผ่านบริการเอกสารของ Apps Script ได้ง่ายๆ ดังตัวอย่างต่อไปนี้
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
- FooterSection
- 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
สามารถใช้ทริกเกอร์อย่างง่ายเพื่อตอบสนอง
ต่อonOpen
เหตุการณ์ของเอกสาร ซึ่งจะเกิดขึ้นเมื่อใดก็ตามที่ผู้ใช้ที่มีสิทธิ์เข้าถึงระดับแก้ไขในเอกสารเปิดเอกสารนั้นใน Google เอกสาร
หากต้องการตั้งค่าทริกเกอร์ เพียงเขียนฟังก์ชันที่ชื่อ onOpen()
ตัวอย่างทริกเกอร์นี้ดูได้ที่เมนูที่กำหนดเองใน Google Workspace
แม้ว่าทริกเกอร์แบบง่ายจะมีประโยชน์ในการเพิ่มเมนู แต่ก็ใช้บริการ Apps
Script ที่ต้องมีการให้สิทธิ์ไม่ได้