Google Apps Script ช่วยให้คุณสร้างและแก้ไข เอกสารได้โดยอัตโนมัติ รวมถึงปรับแต่งอินเทอร์เฟซผู้ใช้ด้วยเมนูใหม่ กล่องโต้ตอบ และแถบด้านข้าง
ข้อมูลเบื้องต้น
Apps Script สามารถโต้ตอบกับเอกสารได้ 2 วิธีหลักๆ คือ สคริปต์ใดก็ได้สามารถสร้างหรือแก้ไขเอกสารได้หากผู้ใช้สคริปต์มี สิทธิ์ที่เหมาะสมสำหรับเอกสาร และสคริปต์ยังเชื่อมโยงกับเอกสารได้ด้วย ซึ่งจะทำให้ สคริปต์มีความสามารถพิเศษในการเปลี่ยนแปลงอินเทอร์เฟซผู้ใช้หรือตอบสนองเมื่อ เปิดเอกสาร หากต้องการสร้างสคริปต์ที่ผูกกับคอนเทนเนอร์จากภายใน เอกสาร ให้คลิกส่วนขยาย > Apps Script
ไม่ว่าจะในกรณีใด คุณก็โต้ตอบกับเอกสารใน Docs ได้โดยใช้บริการเอกสารของ 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 เอกสารใน Docs มีโครงสร้างคล้ายกับเอกสาร HTML นั่นคือ เอกสารประกอบด้วยออบเจ็กต์ Tab อย่างน้อย 1 รายการ ซึ่งแต่ละรายการจะมีองค์ประกอบ (เช่น Paragraph หรือ Table) ซึ่งมักจะมีองค์ประกอบอื่นๆ สคริปต์ส่วนใหญ่ที่แก้ไขเอกสารในเอกสารจะเริ่มต้นด้วยการเรียกใช้ 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 เพื่อแทนที่ข้อความในเอกสาร สมมติว่าคุณมีสเปรดชีตที่เต็มไปด้วยข้อมูลลูกค้าและต้องการ สร้างเอกสารที่ปรับเปลี่ยนในแบบของคุณสำหรับลูกค้าแต่ละราย (การดำเนินการประเภทนี้ มักเรียกว่าการผสานจดหมาย)
คุณสามารถแทนที่ข้อความโดยใช้เมธอด replaceText
ซึ่งรองรับฟีเจอร์นิพจน์ทั่วไป
ของ JavaScript ส่วนใหญ่ ในตัวอย่างต่อไปนี้ ฟังก์ชันแรกจะเพิ่มข้อความตัวยึดตำแหน่งลงในเอกสาร และฟังก์ชันที่สองจะแทนที่ข้อความนั้นด้วยพร็อพเพอร์ตี้จากออบเจ็กต์ client
ฟังก์ชันทั้ง 2 นี้ใช้วิธี
getActiveDocument
และ
getActiveTab
ซึ่งใช้ได้กับสคริปต์ที่สร้างภายในเอกสาร
เอกสารเท่านั้น หากเป็นสคริปต์แบบสแตนด์อโลน ให้ใช้
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);
}
เมนูและอินเทอร์เฟซผู้ใช้ที่กำหนดเอง
คุณปรับแต่งเอกสารได้โดยการเพิ่มเมนูที่กำหนดเอง กล่องโต้ตอบ และแถบด้านข้าง โปรดทราบว่าสคริปต์จะโต้ตอบได้เฉพาะกับ UI ของเอกสารที่เชื่อมโยงอยู่เท่านั้น
ดูข้อมูลเพิ่มเติมเกี่ยวกับการสร้างอินเทอร์เฟซที่กำหนดเองด้วย HTML และ CSS ได้ที่คู่มือเกี่ยวกับบริการ HTML หากคุณวางแผนที่จะเผยแพร่อินเทอร์เฟซเป็นส่วนเสริม ให้ทำตามคู่มือการออกแบบเพื่อให้ลักษณะที่ปรากฏ สอดคล้องกับเครื่องมือแก้ไขเอกสาร
ส่วนเสริมสำหรับเอกสาร
ส่วนเสริมจะทำงานภายใน เอกสารและติดตั้งได้จากร้านค้าส่วนเสริมของเอกสาร หากคุณพัฒนาสคริปต์สำหรับ เอกสารและต้องการแชร์กับผู้ใช้ทั่วโลก Apps Script จะช่วยให้คุณเผยแพร่สคริปต์เป็น ส่วนเสริมเพื่อให้ผู้ใช้รายอื่นติดตั้งจาก ร้านค้าส่วนเสริมได้
หากต้องการสร้างส่วนเสริมสำหรับเอกสาร โปรดดูการเริ่มต้นใช้งานอย่างรวดเร็วสำหรับการสร้างส่วนเสริมของเอกสาร
ทริกเกอร์
สคริปต์ที่เชื่อมโยงกับ Google เอกสารจะใช้ทริกเกอร์แบบง่ายเพื่อตอบสนองต่อonOpen เหตุการณ์ของเอกสารได้ ซึ่งจะเกิดขึ้นเมื่อใดก็ตามที่ผู้ใช้ที่มีสิทธิ์เข้าถึงระดับแก้ไขในเอกสารเปิดเอกสารนั้นในเอกสาร
หากต้องการตั้งค่าทริกเกอร์ ให้เขียนฟังก์ชันที่ชื่อ onOpen ดูตัวอย่าง
ทริกเกอร์นี้ได้ที่เมนูที่กำหนดเองใน Google Workspace
แม้ว่าทริกเกอร์จะมีประโยชน์ในการเพิ่มเมนู แต่ก็ไม่สามารถใช้บริการ Apps
Script ใดๆ ที่ต้องมีการให้สิทธิ์