การขยาย Google เอกสาร

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 จะแทรกองค์ประกอบบางประเภทลงในองค์ประกอบอื่นๆ ได้เท่านั้น แผนภูมิต้นไม้ด้านล่างแสดงองค์ประกอบที่องค์ประกอบบางประเภทมีได้

คุณสามารถแทรกองค์ประกอบที่แสดงเป็นตัวหนาได้ ส่วนองค์ประกอบที่ไม่เป็นตัวหนาจะจัดการได้เฉพาะในตำแหน่งนั้นๆ

การแทนที่ข้อความ

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 ที่ต้องให้สิทธิ์ไม่ได้