สคริปต์ Google Apps ช่วยให้คุณสร้างและแก้ไข Google เอกสารด้วยการเขียนโปรแกรมได้ ตลอดจนสามารถปรับแต่งอินเทอร์เฟซผู้ใช้ด้วยเมนู กล่องโต้ตอบ และแถบด้านข้างใหม่ได้
ข้อมูลพื้นฐาน
สคริปต์ Apps สามารถโต้ตอบกับ Google เอกสารได้ 2 รูปแบบด้วยกัน คือ สคริปต์ใดก็ตามสร้างหรือแก้ไขเอกสารได้หากผู้ใช้ของสคริปต์มีสิทธิ์ที่เหมาะสมสำหรับเอกสาร นอกจากนี้ สคริปต์ยังเชื่อมโยงกับเอกสารได้ด้วย ซึ่งจะทำให้สคริปต์มีความสามารถพิเศษในการเปลี่ยนแปลงอินเทอร์เฟซผู้ใช้หรือตอบกลับเมื่อมีการเปิดเอกสาร หากต้องการสร้างสคริปต์ที่ผูกกับคอนเทนเนอร์จากภายใน Google เอกสาร ให้คลิกส่วนขยาย > Apps Script
ในทั้ง 2 กรณี คุณสามารถโต้ตอบกับเอกสารใน Google เอกสารผ่านบริการเอกสารของ Apps Script ได้ง่ายๆ ตามตัวอย่างต่อไปนี้
function createDoc() { var doc = DocumentApp.create('Sample Document'); var body = doc.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 ไดรฟ์ของผู้ใช้ แล้วแทรกย่อหน้าที่มีข้อความเดียวกันกับชื่อเอกสาร จัดรูปแบบย่อหน้านั้นเป็นส่วนหัว และเพิ่มตารางตามค่าในอาร์เรย์ 2 มิติ สคริปต์จะทำการเปลี่ยนแปลงเหล่านี้กับเอกสารที่มีอยู่ได้ง่ายๆ โดยแทนที่การเรียก DocumentApp.create()
ด้วย DocumentApp.openById()
หรือ openByUrl()
สำหรับสคริปต์ที่สร้างขึ้นภายในเอกสาร (ผูกกับคอนเทนเนอร์) ให้ใช้ DocumentApp.getActiveDocument()
โครงสร้างของเอกสาร
จากมุมมองของ Apps Script เอกสารใน Google เอกสารจะมีโครงสร้างคล้ายกับเอกสาร HTML กล่าวคือ Google เอกสารประกอบด้วยองค์ประกอบต่างๆ (เช่น Paragraph
หรือ Table
) ที่มักจะมีองค์ประกอบอื่นๆ สคริปต์ส่วนใหญ่ที่แก้ไขเอกสารใน Google เอกสารจะเริ่มต้นด้วยการเรียกไปยัง getBody()
เนื่องจาก Body
เป็นองค์ประกอบหลักที่มีองค์ประกอบอื่นๆ ทั้งหมด ยกเว้น HeaderSection
, FooterSection
และ Footnotes
อย่างไรก็ตาม มีกฎเกี่ยวกับประเภทขององค์ประกอบที่สามารถมีประเภทอื่นๆ ได้ นอกจากนี้ บริการเอกสารใน Apps Script จะแทรกองค์ประกอบได้บางประเภทเท่านั้น แผนผังด้านล่างแสดงองค์ประกอบที่องค์ประกอบบางประเภทมีได้
คุณแทรกองค์ประกอบที่แสดงเป็นตัวหนาได้ แต่จะต้องปรับเปลี่ยนองค์ประกอบที่ไม่ใช่ตัวหนาเท่านั้น
- เอกสาร
- เนื้อความ
- HeaderSection
- ListItem
- HorizontalRule
- InlineDrawing
- InlineImage
- ข้อความ
- UnsupportedElement (เลขหน้า ฯลฯ)
- ย่อหน้า
- HorizontalRule
- InlineDrawing
- InlineImage
- ข้อความ
- UnsupportedElement (เลขหน้า ฯลฯ)
- ตาราง
- ListItem
- ส่วนท้าย
- ListItem
- HorizontalRule
- InlineDrawing
- InlineImage
- ข้อความ
- UnsupportedElement (เลขหน้า ฯลฯ)
- ย่อหน้า
- HorizontalRule
- InlineDrawing
- InlineImage
- ข้อความ
- UnsupportedElement (เลขหน้า ฯลฯ)
- ตาราง
- ListItem
- เชิงอรรถ
การแทนที่ข้อความ
Apps Script มักจะใช้เพื่อแทนที่ข้อความใน Google เอกสาร สมมติว่าคุณมีสเปรดชีตที่มีข้อมูลลูกค้าและต้องการสร้าง Google เอกสารที่ปรับให้เหมาะกับลูกค้าแต่ละราย (การดำเนินการประเภทนี้มักเรียกว่าการผสานอีเมล)
การแทนที่ข้อความทำได้หลายวิธี แต่วิธีที่ง่ายที่สุดคือเมธอด replaceText()
ที่แสดงในตัวอย่างด้านล่าง replaceText
รองรับฟีเจอร์นิพจน์ทั่วไปส่วนใหญ่ของ JavaScript ฟังก์ชันแรกด้านล่างจะเพิ่มข้อความตัวยึดตำแหน่งหลายๆ บรรทัดลงใน Google เอกสาร ซึ่งในการใช้งานจริง คุณอาจพิมพ์ตัวยึดตำแหน่งในเอกสารด้วยตนเองมากขึ้น ฟังก์ชันที่ 2 จะแทนที่ตัวยึดตำแหน่งด้วยพร็อพเพอร์ตี้ที่กำหนดไว้ในออบเจ็กต์ client
โปรดทราบว่าทั้ง 2 ฟังก์ชันใช้วิธีการ getActiveDocument()
ซึ่งใช้ได้กับสคริปต์ที่สร้างขึ้นภายในเอกสารใน Google เอกสารเท่านั้น ในสคริปต์แบบสแตนด์อโลน ให้ใช้ DocumentApp.create()
, openById()
หรือ openByUrl()
แทน
เพิ่มตัวยึดตำแหน่ง
function createPlaceholders() { var body = DocumentApp.getActiveDocument().getBody(); body.appendParagraph('{name}'); body.appendParagraph('{address}'); body.appendParagraph('{city} {state} {zip}'); }
แทนที่ตัวยึดตำแหน่ง
function searchAndReplace() { var body = DocumentApp.getActiveDocument() .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 จะให้คุณpublishสคริปต์เป็นส่วนเสริมเพื่อให้ผู้ใช้รายอื่นติดตั้งจากสโตร์ของส่วนเสริมได้
โปรดดูวิธีสร้างส่วนเสริมสำหรับ Google เอกสารในการเริ่มต้นสร้างส่วนเสริมเอกสารอย่างรวดเร็ว
ทริกเกอร์
สคริปต์ที่เชื่อมโยงกับเอกสารใน Google เอกสารจะใช้ทริกเกอร์แบบง่ายเพื่อตอบกลับเหตุการณ์ onOpen
ของเอกสารได้ ซึ่งจะเกิดขึ้นเมื่อผู้ใช้ที่มีสิทธิ์แก้ไขเอกสารเปิดเอกสารใน Google เอกสาร
หากต้องการตั้งค่าทริกเกอร์ เพียงเขียนฟังก์ชันที่ชื่อว่า onOpen()
ดูตัวอย่างทริกเกอร์นี้ได้ที่เมนูที่กำหนดเองใน Google Workspace
แม้ว่าทริกเกอร์แบบง่ายจะมีประโยชน์สำหรับการเพิ่มเมนู แต่ก็ไม่สามารถใช้บริการ Apps Script ที่ต้องมีการให้สิทธิ์