การขยาย Google ชีต

Google Apps Script ช่วยให้คุณทำสิ่งใหม่ๆ เจ๋งๆ กับ Google ชีตได้ คุณสามารถใช้ Apps Script เพื่อเพิ่มเมนูที่กำหนดเอง กล่องโต้ตอบ และแถบด้านข้างลงใน Google ชีตได้ นอกจากนี้ ยังให้คุณเขียนฟังก์ชันที่กำหนดเองสำหรับชีต รวมถึงผสานรวมชีตกับบริการอื่นๆ ของ Google เช่น ปฏิทิน ไดรฟ์ และ Gmail

สคริปต์ส่วนใหญ่ที่ออกแบบมาสำหรับ Google ชีตจะจัดการอาร์เรย์เพื่อโต้ตอบกับเซลล์ แถว และคอลัมน์ในสเปรดชีต หากไม่คุ้นเคยกับอาร์เรย์ใน JavaScript ทาง Codecademy มีโมดูลการฝึกอบรมที่ดีเยี่ยมสำหรับอาร์เรย์ (โปรดทราบว่าหลักสูตรนี้ไม่ได้พัฒนาโดยและไม่เกี่ยวข้องกับ Google)

ดูข้อมูลเบื้องต้นเกี่ยวกับการใช้ Apps Script กับ Google ชีตได้ที่คู่มือเริ่มต้นใช้งาน 5 นาทีสําหรับมาโคร เมนู และฟังก์ชันที่กําหนดเอง

เริ่มต้นใช้งาน

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

บริการสเปรดชีตจะถือว่า Google ชีตเป็นตารางกริดที่ทำงานกับอาร์เรย์ 2 มิติ หากต้องการดึงข้อมูลจากสเปรดชีต คุณต้องเข้าถึงสเปรดชีตที่จัดเก็บข้อมูล รับช่วงในสเปรดชีตที่มีข้อมูล แล้วรับค่าของเซลล์ Apps Script ช่วยให้เข้าถึงข้อมูลได้ง่ายขึ้นด้วยการอ่าน Structured Data ในสเปรดชีตและสร้างออบเจ็กต์ JavaScript

การอ่านข้อมูล

สมมติว่าคุณมีรายการชื่อผลิตภัณฑ์และหมายเลขผลิตภัณฑ์ที่จัดเก็บในสเปรดชีตดังที่แสดงในรูปภาพด้านล่าง

ตัวอย่างด้านล่างแสดงวิธีเรียกข้อมูลและบันทึกชื่อผลิตภัณฑ์และหมายเลขผลิตภัณฑ์

function logProductInfo() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var data = sheet.getDataRange().getValues();
  for (var i = 0; i < data.length; i++) {
    Logger.log('Product name: ' + data[i][0]);
    Logger.log('Product number: ' + data[i][1]);
  }
}

ดูบันทึก

หากต้องการดูข้อมูลที่บันทึกไว้ ให้คลิกบันทึกการดำเนินการที่ด้านบนของเครื่องมือแก้ไขสคริปต์

การเขียนข้อมูล

หากต้องการจัดเก็บข้อมูล เช่น ชื่อและหมายเลขผลิตภัณฑ์ใหม่ลงในสเปรดชีต ให้เพิ่มโค้ดต่อไปนี้ต่อท้ายสคริปต์

function addProduct() {
  var sheet = SpreadsheetApp.getActiveSheet();
  sheet.appendRow(['Cotton Sweatshirt XL', 'css004']);
}

โค้ดด้านบนจะเพิ่มแถวใหม่ต่อท้ายสเปรดชีตพร้อมระบุค่า หากเรียกใช้ฟังก์ชันนี้ คุณจะเห็นแถวใหม่เพิ่มลงในสเปรดชีต

เมนูและอินเทอร์เฟซผู้ใช้ที่กําหนดเอง

คุณสามารถปรับแต่ง Google ชีตได้โดยการเพิ่มเมนู กล่องโต้ตอบ และแถบด้านข้างที่กำหนดเอง ดูข้อมูลเบื้องต้นเกี่ยวกับการสร้างเมนูได้ที่คู่มือเกี่ยวกับเมนู ดูข้อมูลเกี่ยวกับการปรับแต่งเนื้อหาของกล่องโต้ตอบได้ที่คู่มือบริการ HTML

นอกจากนี้ คุณยังแนบฟังก์ชันสคริปต์กับรูปภาพหรือภาพวาดภายในสเปรดชีตได้ด้วย โดยฟังก์ชันจะทำงานเมื่อผู้ใช้คลิกรูปภาพหรือภาพวาด ดูข้อมูลเพิ่มเติมได้ที่รูปภาพและการวาดใน Google ชีต

หากคุณวางแผนที่จะเผยแพร่อินเทอร์เฟซที่กําหนดเองเป็นส่วนหนึ่งของส่วนเสริม ให้ทําตามคู่มือสไตล์เพื่อให้สอดคล้องกับสไตล์และเลย์เอาต์ของเครื่องมือแก้ไข Google ชีต

การเชื่อมต่อกับ Google ฟอร์ม

Apps Script ช่วยให้คุณเชื่อมต่อ Google ฟอร์มกับ Google ชีตผ่านบริการ Forms และ สเปรดชีต ฟีเจอร์นี้สามารถสร้าง Google ฟอร์มโดยอัตโนมัติตามข้อมูลในสเปรดชีต นอกจากนี้ Apps Script ยังช่วยให้คุณใช้ทริกเกอร์ เช่น onFormSubmit เพื่อดําเนินการบางอย่างหลังจากที่ผู้ใช้ตอบแบบฟอร์มได้ด้วย หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับการเชื่อมต่อ Google ชีตกับ Google ฟอร์ม ให้ลองดูการเริ่มต้นใช้งาน 5 นาทีในหัวข้อการจัดการคําตอบสําหรับ Google ฟอร์ม

การจัดรูปแบบ

คลาส Range มีเมธอดต่างๆ เช่น setBackground(color) เพื่อเข้าถึงและแก้ไขรูปแบบของเซลล์หรือช่วงเซลล์ ตัวอย่างต่อไปนี้แสดงวิธีตั้งค่ารูปแบบแบบอักษรของช่วง

function formatMySpreadsheet() {
  // Set the font style of the cells in the range of B2:C2 to be italic.
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];
  var cell = sheet.getRange('B2:C2');
  cell.setFontStyle('italic');
}

การตรวจสอบข้อมูล

Apps Script ช่วยให้คุณเข้าถึงกฎการตรวจสอบข้อมูลที่มีอยู่ใน Google ชีต หรือสร้างกฎใหม่ได้ ตัวอย่างเช่น ตัวอย่างต่อไปนี้แสดงวิธีตั้งค่ากฎการตรวจสอบข้อมูลที่อนุญาตเฉพาะตัวเลขระหว่าง 1 ถึง 100 ในเซลล์

function validateMySpreadsheet() {
  // Set a rule for the cell B4 to be a number between 1 and 100.
  var cell = SpreadsheetApp.getActive().getRange('B4');
  var rule = SpreadsheetApp.newDataValidation()
     .requireNumberBetween(1, 100)
     .setAllowInvalid(false)
     .setHelpText('Number must be between 1 and 100.')
     .build();
  cell.setDataValidation(rule);
}

ดูรายละเอียดเพิ่มเติมเกี่ยวกับการใช้กฎการตรวจสอบข้อมูลได้ที่ SpreadsheetApp.newDataValidation(), DataValidationBuilder และ Range.setDataValidation(rule)

แผนภูมิ

Apps Script ช่วยให้คุณฝังแผนภูมิในสเปรดชีตที่แสดงข้อมูลในช่วงที่เฉพาะเจาะจงได้ ตัวอย่างต่อไปนี้สร้างแผนภูมิแท่งที่ฝังไว้ โดยสมมติว่าคุณมีข้อมูลที่แสดงเป็นแผนภูมิในเซลล์ A1:B15

function newChart() {
  // Generate a chart representing the data in the range of A1:B15.
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];

  var chart = sheet.newChart()
     .setChartType(Charts.ChartType.BAR)
     .addRange(sheet.getRange('A1:B15'))
     .setPosition(5, 5, 0, 0)
     .build();

  sheet.insertChart(chart);
}

ดูข้อมูลเพิ่มเติมเกี่ยวกับการฝังแผนภูมิในสเปรดชีตได้ที่ EmbeddedChart และเครื่องมือสร้างแผนภูมิที่เฉพาะเจาะจง เช่น EmbeddedPieChartBuilder

ฟังก์ชันที่กำหนดเองใน Google ชีต

ฟังก์ชันที่กําหนดเองจะคล้ายกับฟังก์ชันสเปรดชีตในตัว เช่น =SUM(A1:A5) ยกเว้นว่าคุณกําหนดลักษณะการทํางานของฟังก์ชันด้วย Apps Script เช่น คุณอาจสร้างฟังก์ชันที่กำหนดเอง in2mm() ซึ่งจะแปลงค่าจากนิ้วเป็นมิลลิเมตร จากนั้นใช้สูตรในสเปรดชีตโดยพิมพ์ =in2mm(A1) หรือ =in2mm(10) ลงในเซลล์

หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับฟังก์ชันที่กำหนดเอง ให้ลองใช้เมนูและฟังก์ชันที่กำหนดเองในบทแนะนำแบบย่อ 5 นาที หรือดูคู่มือเกี่ยวกับฟังก์ชันที่กำหนดเองที่ละเอียดยิ่งขึ้น

มาโคร

มาโครเป็นอีกวิธีในการเรียกใช้โค้ด Apps Script จาก UI ของ Google ชีต ซึ่งแตกต่างจากฟังก์ชันที่กำหนดเองตรงที่คุณจะเปิดใช้งานด้วยแป้นพิมพ์ลัดหรือผ่านเมนู Google ชีต ดูข้อมูลเพิ่มเติมได้ที่มาโครของ Google ชีต

ส่วนเสริมสําหรับ Google ชีต

ส่วนเสริมคือโปรเจ็กต์ Apps Script ที่แพ็กเกจมาเป็นพิเศษซึ่งทำงานภายใน Google ชีตและสามารถติดตั้งได้จากร้านค้าส่วนเสริมของ Google ชีต หากพัฒนาสคริปต์สำหรับ Google ชีตแล้วและต้องแชร์กับทุกคน Apps Script ให้คุณเผยแพร่สคริปต์เป็นส่วนเสริมเพื่อให้ผู้ใช้รายอื่นติดตั้งจาก Store ของส่วนเสริมได้

ทริกเกอร์

สคริปต์ที่เชื่อมโยงกับไฟล์ Google ชีตจะใช้ทริกเกอร์แบบง่ายได้ เช่น ฟังก์ชัน onOpen() และ onEdit() เพื่อตอบสนองโดยอัตโนมัติเมื่อผู้ใช้ที่มีสิทธิ์แก้ไขเปิดหรือแก้ไขสเปรดชีต

ทริกเกอร์ที่ติดตั้งได้ช่วยให้ Google ชีตเรียกใช้ฟังก์ชันโดยอัตโนมัติเมื่อเกิดเหตุการณ์บางอย่างขึ้น เช่นเดียวกับทริกเกอร์แบบง่าย อย่างไรก็ตาม ทริกเกอร์ที่ติดตั้งได้มีความยืดหยุ่นมากกว่าทริกเกอร์แบบง่ายและรองรับเหตุการณ์ต่อไปนี้ เปิด แก้ไข เปลี่ยนแปลง ส่งแบบฟอร์ม และเหตุการณ์ตามเวลา (นาฬิกา)