การขยาย Google ชีต

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

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

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

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

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

บริการสเปรดชีตจะถือว่า Google ชีตเป็นตารางกริดซึ่งทํางานด้วยอาร์เรย์ 2 มิติ หากต้องการดึงข้อมูลจากสเปรดชีต คุณต้องมีสิทธิ์เข้าถึงสเปรดชีตที่จัดเก็บข้อมูลไว้ รับช่วงของสเปรดชีตที่เก็บข้อมูล แล้วรับค่าของเซลล์ Apps Script อํานวยความสะดวกในการเข้าถึงข้อมูลโดยการอ่านข้อมูลที่มีโครงสร้างในสเปรดชีตและสร้างออบเจ็กต์ 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 ชีตผ่านบริการฟอร์มและสเปรดชีตได้ ฟีเจอร์นี้สามารถสร้างแบบฟอร์มใน Google ฟอร์มโดยอัตโนมัติโดยอิงจากข้อมูลในสเปรดชีต นอกจากนี้ Apps Script ยังช่วยให้ใช้ทริกเกอร์ เช่น onFormSubmit เพื่อดําเนินการบางอย่างหลังจากที่ผู้ใช้ตอบแบบฟอร์มได้ด้วย หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับการเชื่อมต่อ Google ชีตกับ Google ฟอร์ม ให้ลองเริ่มต้นการจัดการคําตอบสําหรับ Google ฟอร์ม ซึ่งจะใช้เวลา 5 นาที

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

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

ทริกเกอร์

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

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