การขยาย 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 และ Spreadsheet ได้ ฟีเจอร์นี้สามารถสร้าง 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 จะให้คุณเผยแพร่สคริปต์เป็นส่วนเสริมเพื่อให้ผู้ใช้รายอื่นติดตั้งจากสโตร์ของส่วนเสริมได้

ทริกเกอร์

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

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